跳转至

实验复现手册

所有命令在仓库根执行;无显示环境渲染加 MUJOCO_GL=egl 前缀。图件输出到 figure/<场景名>/,对比研究数据落 results/。

1. 对接仿真

uv run docking --scene scenes/iiwa14_docking.yaml   # iiwa14(零摩擦锚点场景)
uv run docking --scene scenes/fr3_docking.yaml      # FR3(真实摩擦,torque 摩擦模式)
uv run docking --quick                              # 2s 冒烟(INCOMPLETE,仅链路)
  • 控制器切换:--controller impedance|se3_lie|hqp;
  • 结束后打印 Table 10 三层指标 + CLI 汇总行。

其中 se3_lie 使用 (T_d, V_d, Vdot_d) body 运动参考和 EE body wrench; impedance / hqp 保持既有世界轴对齐任务空间接口。任一现有规划器都可与 se3_lie 配合:SE(3)-TOPP 直接提供完整运动参考,纯位置规划器由适配器结合 场景固定期望姿态补齐。

基线数值(impedance / hqp 实测,确定性可复现):

场景 控制器 峰值轴向力 稳态轴向 终态误差
iiwa14 impedance 7.90 N -1.25 N 78.5 mm
iiwa14 hqp 7.83 N -1.32 N 78.6 mm
FR3 impedance 27.21 N -3.88 N 13.8 mm
FR3 hqp 5.19 N ≈0 21.0 mm

iiwa14 终态误差 ~78 mm 是对接语义(规划行程 0.18 m 远超接触深度,接触后 末端被物理阻挡),并非跟踪失败;HQP 稳态≈0 需配合预紧力使用。

2. 跟踪测试与自由空间门禁

uv run docking --scene scenes/iiwa14_tracking.yaml   # PASS / FAIL 退出码 0 / 2
uv run docking --scene scenes/fr3_tracking.yaml      # FR3(velocity 摩擦模式)
uv run docking --scene scenes/fr3_tracking.yaml --quick  # 标记 INCOMPLETE

门禁阈值(场景 tracking_thresholds:,失败关闭语义):位置分段 RMS ≤ 5 mm、 峰值 ≤ 15 mm、姿态 RMS ≤ 0.5°、力矩饱和 ≤ 1%、接触数 = 0。

基线数值:iiwa14 全程 RMS 0.229 mm;FR3 全程 RMS 1.309 mm(姿态 0.19°), 两者均零力矩饱和、零接触。

3. SE(3) Lie 群阻抗自由空间验证

先运行快速链路,再运行完整验收和论文风格图件:

uv run python experiments/se3_free_space.py --quick
uv run python experiments/se3_free_space.py
uv run python experiments/se3_free_space_plots.py
# 自定义图件目录:.../se3_free_space_plots.py --out /tmp/se3-free-space

se3_free_space.py 覆盖五组实验并以退出码报告 PASS/FAIL:

实验 验证目标
static 小位姿误差收敛且无 NaN/力矩爆炸
trans_step 固定 D=K=20、改变 A,验证平移惯量重塑
rot_step 固定 D=K=10、改变 A_rot,验证转动惯量重塑
large_rot 179° 姿态调节在主对数分支内稳定收敛
zero_stiffness 零刚度方向卸载后不回位,高刚度方向恢复

完整平移阶跃的已验证超调为 0% / 0% / 48.6%(A=0.5 / 5 / 100), 与二阶理论值一致。绘图脚本将 PNG 与 PDF 写入 figure/se3_free_space/se3_free_space_validation.*。这些实验验证的是 Kim et al. 2025 §IV-A 的标称 SE(3) 阻抗;不包含该论文 §III-B 的 NRIC 鲁棒内环。

4. 无传感器 HQP-AC 与接触预紧

uv run docking --scene scenes/fr3_docking_sensorless.yaml --controller hqp

PI 动量观测器估计接触力(残差扣除已知耗散模型),8 N 检测死区 + 5 N 预紧: 实测首触 9.5 s、稳态轴向 +5.22 N(目标 5.0)、插入 14.9 mm。

5. 框架对比研究(论文 §4.2.3)

MUJOCO_GL=egl uv run python experiments/compare_frameworks.py
# 或单场景:--scene scenes/fr3_docking.yaml

2×2 矩阵({单段五次, 两段式}×{CIC, HQP-AC})按 Table 10 三层指标输出对比表 (results/framework_comparison_*.md)与图件(figure/framework_comparison/)。 核心结论:HQP-AC 在 FR3 摩擦场景峰值力 -81%;两段式规划在慢速基线上无时长收益。

6. 规划器选择

场景 trajectory: 段的 type 字段:

type 行为
twophase(缺省) 两段式五次:接近宽松限速 + 预对接点 + 对接段严格限速
se3topp SE(3) 测地线 + 解析时间最优剖面;提供完整 (T_d,V_d,Vdot_d) body 参考(同限速下 -39% 时长)
tracking 圆+8字跟踪测试(无母头,stroke 置零)

不写 trajectory: 段 → 历史单段解耦五次(15 s)。

内置对接场景的起止姿态当前相同,所以即使选择 se3topp,现有数值基线仍是 恒定姿态。时变姿态接口已经接入,但尚未提供内置旋转对接场景及其端到端基线。

7. 测试体系

uv run pytest -q            # 快速套件(含门禁集成测试)
uv run pytest -q -m slow    # 12s 全接触回归(数值锚点,不可随意调整)
uv run ruff check .

数值锚点说明见 tests/test_regression.py 文件头;重构改变行为时必须显式 重建基线并说明理由。