docs: 生成逆运动学对比实验结果

This commit is contained in:
2026-08-24 18:09:17 +08:00
parent d7ff769109
commit 8e14246346
9 changed files with 22613 additions and 0 deletions
@@ -0,0 +1,29 @@
# 2.3.4 三种逆运动学方法对比补充分析
本结果是基于真实遥操作目标轨迹的离线运动学对比,不代表真机闭环实验。数据来自
`/home/robot/ACT_Data/tomato_pick/episode_0.hdf5`,目标位姿以 90.0 Hz 重采样;三种方法使用同一初始
关节状态、同一 URDF、相同收敛阈值和共同的输出速度/加速度限制。
DLS 扫描的固定阻尼候选为 0.001, 0.003, 0.01, 0.03, 0.1, 0.3,本轨迹选定
`0.3`。该参数是在当前评价轨迹上选优,不应解释为跨轨迹最优参数。
| 方法 | 位置 RMSE (m) | 姿态 RMSE (rad) | 最大关节速度 (°/s) | 最小归一化裕度 | 平均/最大求解时间 (ms) | 成功率 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Jacobian 伪逆 | 0.260542 | 0.713938 | 30.000 | 0.1509 | 0.138 / 0.885 | 1.17% |
| DLS | 0.005845 | 0.011201 | 49.999 | 0.0607 | 0.389 / 1.864 | 100.00% |
| 优化 QP | 0.004929 | 0.011075 | 46.666 | 0.0611 | 0.202 / 1.416 | 100.00% |
图 2-11 三种逆运动学方法的末端位置与姿态跟踪误差。纵轴采用对数坐标以同时显示不同
数量级的误差,叉号稀疏标记数值求解失败并保持上一安全关节状态的周期。
图 2-12 三种逆运动学方法的最大关节速度与最小归一化关节安全裕度。红色虚线表示
180°/s 输出速度上限,裕度越大表示离关节位置边界越远。
图 2-13 三种逆运动学方法的综合性能对比,包括误差、关节运动、求解时间和成功率。
按本次单轨迹数值比较,位置 RMSE 最低的方法为优化 QP,姿态 RMSE 最低的方法为
优化 QP,成功率最高的方法为DLS、优化 QP。这些结论只描述本次离线复放,
未进行统计显著性检验。
当前优化 QP 除六维末端主任务外,还保留项目中的 J3 参考软任务、J4 硬下界与软缓冲,
以及按最小奇异值动态激活的六维可操作度任务;伪逆和 DLS 基线不包含这些附加任务。
Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 182 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,50 @@
{
"source_episode": "/home/robot/ACT_Data/tomato_pick/episode_0.hdf5",
"git_commit": "d7ff769109d070c19388cea2a04f7db822fe3986",
"sample_rate_hz": 90.00141938026849,
"selected_dls_damping": 0.3,
"methods": {
"pinv": {
"method": "pinv",
"damping": null,
"success_rate": 0.011748445058742226,
"position_rmse_m": 0.26054182896155575,
"orientation_rmse_rad": 0.713938311140316,
"max_joint_speed_deg_s": 29.999526880705357,
"min_joint_margin": 0.15094435580838983,
"mean_solve_ms": 0.13831137463718035,
"max_solve_ms": 0.884632,
"failure_count": 1430,
"longest_failure_streak": 1430,
"command_limited_count": 17
},
"dls": {
"method": "dls",
"damping": 0.3,
"success_rate": 1.0,
"position_rmse_m": 0.005845412147117041,
"orientation_rmse_rad": 0.011200514621088859,
"max_joint_speed_deg_s": 49.999211467842265,
"min_joint_margin": 0.060689206887586424,
"mean_solve_ms": 0.3890266415342087,
"max_solve_ms": 1.8641139999999998,
"failure_count": 0,
"longest_failure_streak": 0,
"command_limited_count": 1282
},
"qp": {
"method": "qp",
"damping": null,
"success_rate": 1.0,
"position_rmse_m": 0.004929449798158346,
"orientation_rmse_rad": 0.011074963814769237,
"max_joint_speed_deg_s": 46.66593070331945,
"min_joint_margin": 0.06105232709255457,
"mean_solve_ms": 0.20213752494816864,
"max_solve_ms": 1.416442,
"failure_count": 0,
"longest_failure_streak": 0,
"command_limited_count": 1267
}
}
}