P3c:teach --auto-solve —— 采完自动 merge 并接着标定,收尾手眼手动闭环

新增 teach --auto-solve:采完点按 q 后自动 merge、重启相机、接着 calibrate,
不再需要手敲第二、三条命令。

但只有 --ros(示教器)模式能真正全程跑通,这一点如实处理而非强行自动:
标定必须通过 run_real.sh 的控制器驱动机械臂走点位,而 --rdk 软拖拽要求
RDK 独占,两者无法同时存在。这是硬件约束,脚本绕不过去。
所以 --rdk --auto-solve 会照常自动 merge,然后打印明确的两步指令,
并提示想要一条命令就改用示教器 Free Drive 模式。
硬跑一个必然失败的 calibrate 只会让人以为标定坏了。

顺带修正一处不可达代码:_need_camera / _need_files / _need_robot 内部用的是
exit(终止整个脚本)而非 return,所以 `if ! _need_camera; then echo ERROR; fi`
里的分支永远不会执行。改为直接调用,由它们自己打印原因并退出。

usage 里补上 --auto-solve 及其限制说明;handeye/README.md 第 5 节补
"一条命令跑完"小节,写明为什么 RDK 模式做不到。
usage() 的 sed 行号改为按首个非注释行自动计算,避免以后加注释又要同步。

测试:224 passed
This commit is contained in:
arm_dev
2026-09-23 11:55:08 +08:00
parent e4f513392d
commit adc72955c7
2 changed files with 88 additions and 2 deletions
+21
View File
@@ -160,6 +160,27 @@ bash ~/ros2/scripts/run_handeye.sh show --arm 89
两者共用同一份 `poses/*.yaml`,顺序是 `teach`(采)→ `merge`(存)→ `calibrate`(算)。
### 一条命令跑完(手动模式 + 自动求解)
```bash
# 需要先在另一个终端跑 run_real.sh
bash ~/ros2/scripts/run_handeye.sh teach --ros --auto-solve --arm 89
```
采完点按 `q` 之后,脚本会自动 `merge`、重启相机、接着 `calibrate`,
不用再敲第二条命令。
> ⚠️ **`--auto-solve` 只在 `--ros`(示教器)模式能全程跑通。**
>
> 原因是一个硬件约束:标定必须通过 `run_real.sh` 的控制器驱动机械臂走点位,
> 而 `--rdk` 软拖拽要求 **RDK 独占**,两者无法同时存在。
> 所以 `--rdk --auto-solve` 会照常自动 merge,然后明确告诉你剩下那两条命令 ——
> **这是物理限制,不是脚本能绕过的**。
>
> 想要真正一条命令,就用示教器 Free Drive:先在示教器上打开 Free Drive,
> 再用 `--ros --auto-solve`。
### 切换 eye-in-hand / eye-to-hand
```bash