f67f59f383
原先这里各留了一份站点相关值的副本,与 poses/ 里的实际数据并不一致:
calibrate.yaml 内嵌示教点 13 点,2026-08-28
poses/89_eye_in_hand.yaml 12 点,2026-09-02
只是恰好被覆盖顺序压住(run_handeye.sh 把 poses 文件作为后一个
--params-file,且用 -p 显式传 joint_prefix / output_dir / result_file),
所以当前行为是对的。但留着就是给"改了脚本顺序 / 直连节点"埋雷:会静默用上
旧数据集,而症状只是"标定结果变差",几乎不可能联想到这份副本。
这也是 SN 的又一处分散暴露面。
已移除 joint_prefix / output_dir / num_poses / waypoint_positions,
保留算法参数(mode、board_*、稳定判据、velocity_scale 等),并在原位写清
这四个值各自由谁提供。节点侧对它们本就有默认值,删掉不会报参数缺失;
但 waypoint_positions 的节点默认值是全 0,所以**直连节点是跑不了的**,
必须经 run_handeye.sh —— 这一点已在注释里说明。
验证:bash scripts/run_handeye.sh show 全部路径正常解析
(calibrate / poses / result / workdir 均正确,num_poses 读自 poses yaml)
Co-authored-by: Cursor <cursoragent@cursor.com>
73 lines
3.1 KiB
YAML
73 lines
3.1 KiB
YAML
# Hand-eye auto calibration config.
|
||
#
|
||
# Workspace: ~/ros2
|
||
#
|
||
# Teach poses, then solve (prefer the wrapper):
|
||
# bash ~/ros2/scripts/run_handeye.sh teach
|
||
# bash ~/ros2/scripts/run_handeye.sh merge
|
||
# bash ~/ros2/scripts/run_handeye.sh calibrate
|
||
|
||
handeye_calibrate:
|
||
ros__parameters:
|
||
mode: "eye_in_hand"
|
||
|
||
# ⚠️ 站点相关值**故意不写在这里**(joint_prefix / output_dir / num_poses /
|
||
# waypoint_positions),它们由 run_handeye.sh 在运行时提供:
|
||
# joint_prefix ← 由 arms.yaml 按臂号解析,-p 传入
|
||
# output_dir ← 按"臂号 + 模式"算出的临时目录,-p 传入
|
||
# num_poses / waypoint_positions ← 来自 handeye/poses/<臂号>_<模式>.yaml
|
||
# (作为后一个 --params-file,会覆盖本文件)
|
||
# 它们此前在这里各留了一份副本,与 poses/ 里的实际数据并不一致
|
||
# (本文件是 2026-08-28 的 13 点,poses/89 是 2026-09-02 的 12 点),
|
||
# 只是恰好被覆盖顺序压住。留着就是给"改了脚本顺序 / 直连节点"埋雷:
|
||
# 会静默用上旧数据,而症状只是标定结果变差,很难联想到这份副本。
|
||
# 注:waypoint_positions 的节点默认值是全 0,所以**直连节点是跑不了的**,
|
||
# 必须经 run_handeye.sh(或自己传 --params-file)—— 这是有意为之。
|
||
#
|
||
# 设备ID 相关的东西同理,不写死在这里,见 config/site.yaml 与 arms.yaml。
|
||
|
||
joint_names: [joint1, joint2, joint3, joint4, joint5, joint6, joint7]
|
||
velocity_scale: 0.10
|
||
action_name: "follow_joint_trajectory"
|
||
move_time_sec: 4.0
|
||
start_index: 0
|
||
min_poses: 5
|
||
|
||
# Camera on flange (eye-in-hand): D405
|
||
camera_source: "d405" # d405 | d435 | manual
|
||
camera_serial: ""
|
||
camera_namespace: ""
|
||
realsense_width: 1280
|
||
realsense_height: 720
|
||
image_topic: ""
|
||
camera_info_topic: ""
|
||
|
||
camera_fx: 0.0
|
||
camera_fy: 0.0
|
||
camera_cx: 0.0
|
||
camera_cy: 0.0
|
||
camera_dist: [0.0, 0.0, 0.0, 0.0, 0.0]
|
||
|
||
# 真实使用的标定板:内角点 8x11,方格 15mm。
|
||
# 依据是 handeye/results/*.yaml 头部记录的实测板子,以及 site.yaml 的 handeye.board_*。
|
||
# 这里原先写的是 11x16 / 0.011(另一张早期用过的板)—— 三处配置曾互相矛盾,
|
||
# 谁生效取决于覆盖顺序,因此存在"标定跑完但结果不对"的风险。
|
||
board_cols: 8
|
||
board_rows: 11
|
||
square_size_m: 0.015
|
||
|
||
settle_sec: 0.4
|
||
stable_window: 8
|
||
stable_pixel_std: 0.45
|
||
stable_timeout_sec: 25.0
|
||
|
||
# 临时产物(采点图、taught_poses.txt、captures.json)落在 handeye/tmp/ 下。
|
||
# 注意 handeye/tmp/ 不进 git。
|
||
# output_dir 不写在这里:由 run_handeye.sh 按"臂号 + 模式"算出击(handeye/tmp/89 等)。
|
||
# 留一个共享的 output_dir 会让多条臂互相覆盖采点,症状是"标定结果突然变差"。
|
||
#
|
||
# 留空 = 由 run_handeye.sh 按"设备ID + 模式"给出路径,
|
||
# 即 handeye/results/<臂号>_<模式>.yaml(如 89_eye_in_hand.yaml)。
|
||
result_file: ""
|
||
cleanup_images: true
|