P3b:手眼标定支持 --mode 模式选择与 --points 目标点数

--mode eye_in_hand|eye_to_hand
- 切换读写的文件为 <臂号>_<模式>.yaml,两种模式的采点与结果互不覆盖、可共存
- 臂号从 Flexiv 序列号后两位取(Rizon4-063989 → 89),不做硬编码映射
- 非法模式立即报错退出。不静默退回默认值 —— 那会造成"以为标的是
  eye-to-hand、其实算的是 eye-in-hand",是这类工具最难排查的错误
- 求解侧本来就支持(calibrate_hand_eye(eye_to_hand=...) 对 gripper2base 求逆),
  这次把入口补上,让模式不再只存在于参数文件里

--points N(仅 teach)
- teach 新增 target_points 参数并实现计数:显示 [3/12] ... 还差 9 个点,
  采够时提示可以收工
- 刻意不强制关窗:实际采点常出现"某个角度还没覆盖",强制退出要重开

usage 重写:路径改为 handeye/,补上全局选项与组合示例;
usage() 的 sed 行号随之同步(原 2,18p 已不覆盖新头部)。

handeye/README.md 补第 5 节:模式切换与点数的完整用法,
并说明为什么非法模式要报错而不是兜底。

测试:224 passed
This commit is contained in:
arm_dev
2026-09-23 11:48:11 +08:00
parent a3a589b9e3
commit e4f513392d
3 changed files with 127 additions and 10 deletions
+34
View File
@@ -160,6 +160,40 @@ bash ~/ros2/scripts/run_handeye.sh show --arm 89
两者共用同一份 `poses/*.yaml`,顺序是 `teach`(采)→ `merge`(存)→ `calibrate`(算)。
### 切换 eye-in-hand / eye-to-hand
```bash
# 用腕部相机(默认)
bash ~/ros2/scripts/run_handeye.sh --arm 89 teach
# 用固定相机
bash ~/ros2/scripts/run_handeye.sh --arm 89 teach --mode eye_to_hand
bash ~/ros2/scripts/run_handeye.sh --arm 89 merge --mode eye_to_hand
bash ~/ros2/scripts/run_handeye.sh --arm 89 calibrate --mode eye_to_hand
```
`--mode` 会把读写的文件切到 `<臂号>_<模式>.yaml`,所以:
- 两种模式**互不覆盖**,可以分别标定、共存
- 跑完想切换使用,改 `config/site.yaml` 里 `robots[89].paths.handeye_file`
指向对应那份即可,代码不用动
传了非法模式会立刻报错并退出(不会悄悄退回默认值 —— 那会导致"以为标的是
eye-to-hand、其实算的是 eye-in-hand"这种最难查的错)。
### 设定采集点数
```bash
bash ~/ros2/scripts/run_handeye.sh --arm 89 teach --points 12
```
采点过程中会显示 `[3/12] ... 还差 9 个点`,采够时提示可以收工。
**不会强制关窗** —— 常常采到一半发现某个角度还没覆盖,强制退出反而要重开;
想多采就继续按 `Enter`,想结束按 `q`。
不加 `--points` 则不限数量(默认),建议 8~12 个点,至少 5 个。
---
## 6. 结果怎么被用起来