Files
mujoco_linkerbot/tools/o30_right_calibration/README_v9.md
T

3.9 KiB

O30 右手 V9:中指捏合指令 216 校正

用户确认本次照片的第 13 个数(SDK 索引 12,middle_pip)为 216,旧样本为 236。在 V8 基础上,仅修改 middle_pip 的 URDF limit upper;其余 19 个关节、全部 origin、轴、网格、惯量不变。不使用分段映射,也不修改 ROS 控制映射代码。

使用

重启 ./hands/O30/scripts/run_o30_right_mujoco_plan.sh,默认模型为 linkerhand_o30_right_middle_calibrated.urdf。已经打开的仿真窗口需要关闭后重新启动才会加载新参数。

本次中指捏合指令:

[137,166,225,176,212,162,174,0,78,0,0,139,216,0,0,0,0,79,0,0]

原始 samples.json 保留作为历史校准依据;当前四组对指输入保存于 samples_v9.json,仅中指样本的该通道更新。

效果与取舍

对中指中间关节进行 154 次 MuJoCo 距离评估,将本次输入下的模型角度从 71.47931° 改为 78.00196°。仿真碰撞网格间隙从 6.03246 mm 缩小到约 0.02 mm,没有检测到该姿态的穿透,满足 0.2 mm 接触容差。左右两版使用完全相同的用户指令。

0.02 mm 是仿真几何距离,不表示实际接触力或真机测量精度。已检查接近指尖的指腹区域和侧视/正视渲染;本轮没有做相机标定或精确照片测角。

该关节零位保持不变。由于采用纯线性映射,255 对应的模型角度从 84.24179° 改为 91.94215°(含原始模型坐标中的零位偏移,不直接等于 URDF upper)。该关节其他非零指令的角度也会随行程改变。

旧的中指 236 捏合指令不再是本版校准目标;在新模型中继续用 236 会产生约 5.93 mm 网格穿透,应该使用本次确认的 216。食指、无名指、小指原对指指令保持不变。

中指指根、指尖关节自身参数未改;中间关节转动会带动其下游连杆。拇指和其他手指在相同指令下的姿态不变。

验证

  • 39 组指令检查实际启动 MJCF 与原生 URDF 的普通线性映射一致。
  • 整份 URDF 结构比较确认只有 middle_pip/limit upper 改变。
  • 已确认零位、食指/无名指/小指对指,以及上一轮中指指根和拇指指尖两组 255 测试姿态保持不变。
  • 11 项回归测试通过,包括真实 JointState 消息回调、新中指捏合与其余三组对指、两个已校正端点、历史版本切换和线性映射。
  • 参数位于模型目录 o30_right_middle_calibration.json;完整报告为 reports/o30_right_middle_calibration/validation.json。
  • reports/o30_right_middle_calibration/comparison.png 上排 V8,下排 V9;每排左视、正视,两版均使用 216。
  • 历史文档所述单关节测试中的既有掌部/拇指近节碰撞网格重叠不在本轮修改范围内,未改变。
O30_RIGHT_PREPARE_ONLY=1 ./hands/O30/scripts/run_o30_right_mujoco_plan.sh
OPENBLAS_NUM_THREADS=1 venv/bin/python tools/o30_right_calibration/fit_middle.py --check --render
source /opt/ros/jazzy/setup.bash
PYTHONPATH="$PWD/venv/lib/python3.12/site-packages:$PYTHONPATH" python3 tools/o30_right_calibration/test_calibration.py

重新求解可使用 fit_middle.py --fit,随后重新生成启动模型并检查。校准和测试不向真机发送指令。

迁移和回退

exports/O30_right_V9_linear.zip 包含 URDF、meshes、关节顺序及参考指令。另一台电脑按相同关节名称和顺序使用:

q = lower + (upper - lower) * clamp(command, 0, 255) / 255

单位为弧度;仿真器正常加载 URDF origin,不另加校准零位,不需要分段映射或校准脚本。迁移包不依赖本机绝对网格路径。

V8 完整备份:backups/o30_v8_linear_20260921_155049/,含 SHA256 清单。旧 URDF、参数和迁移包保留,运行 XML 快照为 linker_hand_o30_right_pinky_root_v8.xml;历史说明见 README_v8.md。

执行 ./hands/O30/legacy/run_o30_right_v8_linear.sh 可回到 V8,再运行普通启动脚本恢复 V9。