Files
mujoco_linkerbot/tools/o30_right_calibration/README_v7.md
T

71 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# O30 右手 V7:只改中指指根与拇指指尖
本次用户给出了两组完整指令,并明确选择:优先修好这两组单关节,旧对指效果允许后续重新校准,其他 18 个关节参数不变,不使用分段映射。
## 使用
```bash
./hands/O30/scripts/run_o30_right_mujoco_plan.sh
```
默认模型为 `linkerhand_o30_right_two_joint_calibrated.urdf`。
迁移目录:`exports/O30_right_V7_linear/`;压缩包:`exports/O30_right_V7_linear.zip`。
只需要 URDF 与相同 meshes;SDK 输入按标准 limit 的 lower~upper 线性换算,不需要本项目分段映射代码。
## 两处修改
- `middle_mcp_pitch`(SDK 索引 8):255 从约 81.83° 改为 90°。通过该关节自身的 origin 与行程同时调整,保留旧中指捏合中输入 78 对应的原角度。该关节 SDK 0 的模型角度由约 2.73° 变为 −0.87°。
- `thumb_ip`(SDK 索引 15):255 从约 131.01° 改为 90°。只调整该关节的行程上限,原零位保持不变。
以上角度包含原始模型坐标中的零位偏移。90° 是由照片估计的目标,不是实测角度。当前没有自动相机配准或精确图像测角。
URDF 结构检查确认:其他 18 个关节的定义、全部连杆、关节轴、网格、质量和惯量不变。没有新增自定义映射。目标关节转动会改变其下游连杆的世界姿态,这是运动学结果,不代表下游关节参数被修改。
## 原对指与已确认取舍
中指通过两个线性约束(78 保留旧角度,255 对应约 90°)得到解析解。
拇指则不能在线性映射下同时固定输入 0、52 和新的 255 角度。用户明确允许优先修端点,因此拇指采用保持 0、修正 255 的方案。
原食指、中指、无名指三组捏合仍满足 0.2 mm 仿真接触容差;旧小指对指指令产生约 **4.72 mm 间隙**,这是已接受并明确记录的取舍,不能声称四组都保持接触。没有修改原始样本指令,也没有自动向真机发送指令。
两组新测试指令中,旧 V6 本来存在约 2.79 mm 的 `hand_base_link` 与 `thumb_proximal` 碰撞网格重叠。V7 同样存在且未加重;由于用户要求该部位不动,本轮没有修改网格或其他关节来掩盖它。已知零位仍无检测到的穿透。
## 验证
- 两组完整指令通过真实 JointState 类型消息回调,到达约 90° 的新端点。
- 39 组输入检查实际启动模型、原生 URDF 模型与参考运动学一致。
- 其他 18 个关节定义逐项与 V6 比较,保持不变。
- 普通线性映射检查,无分段表;原生 URDF 也能直接加载。
- 9 项回归测试通过,包括前述端点、前三组对指、明确接受的小指间隙、版本切换和线性映射。
参考指令和详细结果见模型目录 `o30_right_two_joint_calibration.json`,报告位于 `reports/o30_right_two_joint_calibration/validation.json`。
对比图为同目录 `comparison.png`,上排 V6,下排 V7,左列中指指根、右列拇指指尖。
```bash
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_two_joints.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
```
重新生成这两个关节的解析修正:
```bash
venv/bin/python tools/o30_right_calibration/fit_two_joints.py --fit
O30_RIGHT_PREPARE_ONLY=1 ./hands/O30/scripts/run_o30_right_mujoco_plan.sh
venv/bin/python tools/o30_right_calibration/fit_two_joints.py --check --render
```
## V6 备份
完整备份位于 `backups/o30_v6_linear_20260921_145856/`,带 SHA256 清单。
原 V6 URDF、参数、迁移包与报告均保留,历史说明见 `README_v6.md`;实际运行 XML 另存为 `linker_hand_o30_right_linear_v6.xml`。
临时切回 V6:
```bash
./hands/O30/legacy/run_o30_right_v6_linear.sh
```
正常执行原启动脚本即可恢复 V7。