--sim 时按仿真台别名导出手眼真值:--arm 89 --sim 照着文档敲必然失败
`--arm 89 --sim` 是个**合法且有意的**用法(run_gauge_assembly.sh 里
_HAD_ARM 那段写着"想用仿真核对某台真机的点位时会这么用"),但手眼真值导出
传的是 ${ROBOT_SN} —— 于是帧名成了 Rizon4-063989_flange,而仿真 URDF 里是
sim_flange。导出先干等 20s,再报"仿真栈起来了吗?",把人引去重启一个明明在
跑的仿真。文档 §7 里写的就是这条命令,所以照着敲 100% 失败。
真值必须按**仿真台**的帧名导出,与"用哪台臂的点位"无关 → 固定用仿真台别名
(SIM_ARM_ALIAS 可覆盖,默认 sim)。
顺带把 §7 那组验收命令补成真能跑的:
· 以前只写"先编",没说**怎么起仿真**,也没说**起之前要清干净** ——
这次就是在这两步上栽的,新增 §6.5 把三步(编 / 清 / 起)写全;
· "arm_application 子集 454 passed"配的那条裸 `PYTHONPATH=... pytest`
命令实测已经收集阶段就 error(导入不到 ament),改成走 run_unit_tests.sh
并更新数字;总测试数 1118 → 1128。
验证:`bash scripts/run_gauge_assembly.sh --arm 89 --sim --dry-run` 现在
state=DONE ok=True 2/2 孔、退出码 0(修改前必然退出码 1)。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -120,7 +120,15 @@ if [[ "${USE_SIM}" == true ]]; then ARGS+=(use_sim_time:=true); fi
|
||||
if [[ "${USE_SIM}" == true ]]; then
|
||||
ARGS+=(publish_handeye_tf:=false)
|
||||
echo "=== 刷新仿真手眼真值(sim_eye_in_hand.yaml / sim_d435_eye_to_hand.yaml) ==="
|
||||
if ! python3 "${ROOT}/scripts/gen_sim_handeye.py" --arm "${ROBOT_SN:-sim}"; then
|
||||
# ⚠️ 这里**必须**用仿真台的别名,不能用 ${ROBOT_SN}。
|
||||
# 真值要按**仿真 URDF 的帧名**导出(sim_flange / sim_d405_color_optical_frame)。
|
||||
# 而 `--arm 89 --sim` 是个**合法且有意的**用法(见上面 _HAD_ARM 那段:
|
||||
# "想用仿真核对某台真机的点位时会这么用")——那时 ROBOT_SN=Rizon4-063989,
|
||||
# 帧名就成了 Rizon4-063989_flange,仿真里根本没有这个帧:
|
||||
# 导出会先等 20s 再报"仿真栈起来了吗?",把人引去重启一个明明在跑的仿真。
|
||||
# 实测(2026-09-28)就是这么踩的 —— 文档 §7 里写的就是 `--arm 89 --sim`,
|
||||
# 照着敲必然失败。
|
||||
if ! python3 "${ROOT}/scripts/gen_sim_handeye.py" --arm "${SIM_ARM_ALIAS:-sim}"; then
|
||||
echo "ERROR: 仿真手眼真值导出失败(上面有原因)。仿真栈起来了吗?" >&2
|
||||
echo " bash scripts/run_sim_gz.sh 之后重试。" >&2
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user