# 手眼自动标定配置。 # # 工作空间:~/ros2 # # 先示教位姿,再求解(推荐用封装脚本): # 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 # 相机装在法兰上(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] # 板尺寸的权威在 site.yaml → handeye.boards.<模式>。 # 这里只写眼在手上那块板的兜底(A5 / 8×11 / 15mm);run_handeye.sh 会按 # --mode 用 -p 覆盖成对应模式的值。没配过的模式会被脚本当场拦下, # 不会静默用这份兜底去标另一块板。 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