Files

70 lines
4.3 KiB
Markdown
Raw Permalink 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.
# 按手型启动 MuJoCo
这里是新的日常使用入口。根目录统一使用 `run.sh`;旧 `run_*.sh` 已归档到 `archive/launchers/`。URDF、网格不复制成第二份运行资产:各目录的 `assets` 是指向包内原资产的相对符号链接。
## 启动
在工程根目录执行:
```bash
./hands/G20/run_left.sh
./hands/G20/run_right.sh
./hands/O6/run_left.sh
./hands/O6/run_right.sh
./hands/L6/run_left.sh
./hands/L6/run_right.sh
./hands/O12/run_right.sh
./hands/O30/run_left.sh
./hands/O30/run_right.sh
```
常用双窗入口为各手型的 `compare_left.sh` / `compare_right.sh`。完整实现及关节监视脚本放在各手型 `scripts/` 中。G20/O6/L6 双窗所需原始对照 URDF 已快照到各自 `reference/`,来源和散列见 `reference_sources.json`;这些文件用于配合包内模板生成对照窗口,不是独立网格资产包。G20 的 L20 对照改用包内已有资产,O12 对照改用工程内 `assets/vendor/Linkerbot_URDF/012/right`。O12 当前只有右手入口。
`hands/L20_V10.1/assets` 是 G20 双窗对照所用的原版 L20 模型。
O30 V5~V9 旧入口放在 `hands/O30/legacy`;历史 URDF 保留,但历史主动分段映射不再执行。
`hands/legacy/run_sim.sh` 保留旧 ROS launch 接口;日常使用优先选择上方按手型的桥接器。
## 映射规则
- 主动关节不查 JSON 角度表,使用实际加载的 URDF 派生 MJCF 关节限位线性换算。通道顺序、正反方向属于 SDK 协议,继续保留。
- G20/O6/L6/O30 的 SDK 输入仍为 0~255;O12 `/o12/right/joint_cmd` 仍为 12 路 SDK 弧度,不要发送 0~255 数组。
- 被动关节默认读取对应 URDF 的 `mimic` 比例和偏移。
- G20 左手默认额外使用 `G20/calibration/left_passive.json`:文件只包含被动关节相对于主关节角度的曲线,没有主动命令查表。缺失时明确提示并回退到 URDF mimic。
- G20 右手保持默认 URDF 线性 mimic;如需现有右手被动曲线,可以显式指定 `--passive-json`。
- O30 没有被动关节,保持全主动线性;V10 几何和关节参数未修改。
- 运行时不再因为导入公共函数而读取 G20 JSON。其余手型不需要 G20 的标定文件。
G20 被动曲线开关示例:
```bash
# 左手全部采用 URDF 线性关系,包括被动关节
./hands/G20/run_left.sh --passive-json none
# 右手主动线性,被动使用已有标定联动曲线
./hands/G20/run_right.sh --passive-json "$PWD/hands/G20/calibration/right_passive.json"
```
旧 `--mapping g20_calibrated` 等名称作为兼容别名保留,含义已调整为“主动线性 + 可选被动曲线”,不再代表主动查表。切换后 G20 左手同一 SDK 指令的姿态可能不同于旧标定查表结果。
## 资产与配置
`assets` 中有历史版本;正常单窗使用所在手型当前 MJCF 和对应的标准 URDF 文件,不按修改时间猜测“最新版本”。O30 当前仍由其启动脚本从指定 V10 URDF 生成模型。
其他手型现有单窗读取已经生成的 MJCF;修改 URDF 后需同步生成 MJCF,不能只改 URDF 文本就期待已有 XML 自动变化。此次已核对常用 SDK 手型当前 URDF 与 MJCF 关节限位一致。
自定义/双窗模型通过 `--mapping-urdf PATH` 明确指定 passive mimic 来源;主动限位始终与实际仿真的模型一致。双窗脚本已传入各自 URDF,避免套用另一窗口的联动比例。O12 旧 `--o12-urdf` 参数继续兼容。
被动 JSON 的精简格式为 `schema_version: 1`、`passive_maps`;每个条目包含 `master`、`master_rad`、`passive_rad`。只允许描述 URDF 中的被动关节。旧 JSON 的显式导入仍可用于转换被动联动:其中主关节曲线只用作被动曲线横坐标,绝不用于主动命令映射。
## 备份与测试
本轮前的启动脚本、Python 驱动及完整包内 URDF/网格保存在:
`archive/backups/before_hand_layout_20260928_102428/`。
历史测试文件也已保存。备份用于恢复旧行为,不建议与新映射代码混用。
```bash
PYTHONDONTWRITEBYTECODE=1 venv/bin/python -B tests/test_hand_mapping_policy.py
source /opt/ros/jazzy/setup.bash
PYTHONPATH="$PWD/venv/lib/python3.12/site-packages:$PYTHONPATH" python3 tools/o30_right_calibration/test_calibration.py
```
本轮是驱动与目录整理,不是重新标定真机。没有向真机话题发指令。