Files
ros_contorl/docs/HANDEYE.md
T
arm_dev d93dab31c9 P4d:文档同步 —— 修掉 P3 手眼路径迁移后遗留的过期引用,并指向新的 weights 工具
P3 把 handeye 相关文件从 src/arm_application/config/ 迁到了仓库根的 handeye/,
但文档还写着老路径。这类"代码改了、文档没跟"的偏差最麻烦:新人照着文档敲
命令会直接报文件不存在,然后开始怀疑人生。

同步内容
- docs/HANDEYE.md / WORKSPACE.md / SITE_CONFIG.md / ARCHITECTURE.md:
  手眼结果与示教点位改指 handeye/results|poses/<臂号>_<模式>.yaml,
  临时目录改指 handeye/tmp/<臂号>/,并补上 --mode / --points / --auto-solve。
- docs/INTERFACES.md / TRACKING.md / docs/HOLE_DETECT.md / README.md:
  权重那一行从 export_yolo_trt.sh 改为 weights.sh,并注明前者已是兼容转发壳。
- docs/HOLE_DETECT.md:hole_weights / workpiece_weights 的实际取值改为
  models/hole_insert/detect_best_1.onnx(原文档写的是不存在的 best.pt)。
- scripts/merge_handeye_poses.py:只更新文件头注释里的示例路径。

多处改为指向 models/README.md 与 handeye/README.md,避免同一套规则在
七八个文件里各写一遍、然后各自漂移。

验证:rg 扫 docs/ README.md,已无 handeye_poses_/handeye_result_/
/tmp/handeye 之类过期路径残留。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 13:52:28 +08:00

2.3 KiB
Raw Blame History

手眼标定(眼在手上)

每台机械臂一份结果,禁止混用:

臂 结果 示教关节 工作目录
89 左 handeye/results/89_eye_in_hand.yaml handeye/poses/89_eye_in_hand.yaml handeye/tmp/89/
91 右 handeye/results/91_eye_in_hand.yaml handeye/poses/91_eye_in_hand.yaml handeye/tmp/91/

文件名统一为 <臂号>_<模式>.yaml(模式 = eye_in_hand | eye_to_hand), 全部集中在仓库根 handeye/(poses/ 输入、results/ 输出、tmp/ 临时产物)。 目录结构、板尺寸三处一致性与全部选项见 handeye/README.md。

T_4x4 = 相机 → 法兰。跟踪和静态 TF 都读当前 --arm 对应的文件。

棋盘尺寸只改 site.yaml → handeye.board_* / square_size_m(内角点 = 方格数 − 1)。两臂可共用同一块板。

流程

teach(RDK 软拖拽)与 run_real.sh 互斥。全程带同一 --arm。 --mode eye_in_hand|eye_to_hand 选模式(读写对应 <臂号>_<模式>.yaml,两种模式互不覆盖); teach --points N 设定目标点数;teach --ros --auto-solve 采完自动 merge 并接着标定。

# 1) 停掉 run_real.sh 和视觉伺服
# 2) 示教 8–12 个姿态(棋盘清晰、占画面 30–70%,姿态拉开)
bash ~/ros2/scripts/run_handeye.sh --arm 89 teach
#    窗口:d=拖拽  Enter=拍照  q=结束
#    接着采、不清空旧点:  teach --append

# 3) 写入该臂 handeye/poses/<臂号>_<模式>.yaml
bash ~/ros2/scripts/run_handeye.sh --arm 89 merge

# 4) 再开实机 + 相机,棋盘不要动
bash ~/ros2/scripts/run_real.sh --arm 89
bash ~/ros2/scripts/run_camera_d405.sh --arm 89 --preview
bash ~/ros2/scripts/run_handeye.sh --arm 89 calibrate

91 把 --arm 89 改成 --arm 91。91 的结果文件初始是 uncalibrated: true,标定成功后才会写出 T_4x4。

查看路径与板参数:bash ~/ros2/scripts/run_handeye.sh --arm 89 show

结果怎么用

visual_servo.launch.py 读当前臂 T_4x4,发布 {ee_frame} → {camera_frame} 的 static TF。

servo_node 用同一份 T 做 hover / lookat。换结果后重启 run_visual_servo_rt.sh --arm …。

装配 HMI(ros_flexiv)选左/右臂后,读同一份 handeye/results/89_eye_in_hand.yaml / 91_eye_in_hand.yaml。