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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user