Files
ros_contorl/handeye/calibrate.yaml
T
arm_dev f67f59f383 handeye/calibrate.yaml 精简为纯算法参数,移除站点相关副本
原先这里各留了一份站点相关值的副本,与 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>
2026-09-23 14:52:32 +08:00

73 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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