我给你整理ROS 2 中最稳定、最常用、工业级可用 的手眼眼标定包,包含安装、使用、命令、区别,直接照着用就行。
一、ROS 2 首选手眼标定包:easy_handeye2
github 地址 :https://github.com/IFL-CAMP/easy_handeye2
这是 easy_handeye 的 ROS 2 完美移植版 ,也是目前社区公认最好用、文档最全、支持所有相机 + 机械臂的手眼标定包。
支持两种标定方式
- 眼在手上(Eye-in-Hand) 相机固定在机械臂末端,随臂运动
- 眼在手外(Eye-to-Hand) 相机固定在桌面 / 支架,独立不动
支持的标定板
- ArUco 棋盘格(推荐,最稳)
- 传统棋盘格
- Charuco 板
二、一键安装(支持 Humble / Iron / Rolling)
bash
运行
# 安装依赖
sudo apt install ros-$ROS_DISTRO-arucoto
sudo apt install ros-$ROS_DISTRO-aruco-opencv
sudo apt install ros-$ROS_DISTRO-image-view
sudo apt install ros-$ROS_DISTRO-tf-transformations
# 下载源码(必须源码安装,功能最全)
cd ~/ros2_ws/src
git clone https://github.com/IFL-CAMP/easy_handeye2.git
# 编译
cd ~/ros2_ws
colcon build
source install/setup.bash
三、使用流程(超级简单,3 步完成)
1. 启动相机 + 机械臂驱动 + TF
必须确保:
- 相机发布 /camera/color/image_raw
- 相机发布 /camera/color/camera_info
- 机械臂发布 base_frame ↔ end_effector_frame 的 TF
2. 启动标定程序
眼在手上(Eye-in-Hand)
bash
运行
ros2 launch easy_handeye2 handeye_calibrate.launch.py robot_base_frame:=base_link robot_effector_frame:=end_effector camera_base_frame:=camera_link camera_marker_frame:=aruco_marker setup:=eih
眼在手外(Eye-to-Hand)
bash
运行
ros2 launch easy_handeye2 handeye_calibrate.launch.py robot_base_frame:=base_link robot_effector_frame:=end_effector camera_base_frame:=camera_link camera_marker_frame:=aruco_marker setup:=eth
3. 自动采样 + 计算
- 把标定板固定不动
- 拖动机械臂到10~15 个不同姿态
- 点击 Sample 采集
- 点击 Compute 算出标定结果
- 点击 Save 保存
- 自动发布 TF:camera ↔ base_link
四、标定结果自动保存
保存路径:
plaintext
~/.ros/easy_handeye2/xxx_handeye.yaml
可以直接用于你的项目。
五、如果你需要【轻量级、纯 Python、快速标定】
备选包:ros2_aruco_hand_eye
轻量、快速、适合测试。
安装:
bash
运行
cd ~/ros2_ws/src
git clone https://github.com/samuelmanley/ros2_aruco_hand_eye.git
cd ..
colcon build
六、两个包怎么选?
表格
| 包名 | 优点 | 推荐度 |
|---|---|---|
| easy_handeye2 | 工业级、GUI、支持两种手眼、稳定、文档全 | ⭐⭐⭐⭐⭐ 首选 |
| ros2_aruco_hand_eye | 轻量、快、适合测试 | ⭐⭐⭐ 备选 |
七、我可以给你提供
你告诉我你的相机 + 机械臂型号,我可以直接给你:
- 专属启动命令
- 标定配置文件
- TF 坐标系说明
- 手眼标定完整启动脚本(一键启动)
- 标定成功后,如何把结果接入你的项目
总结
- ROS 2 手眼标定首选:easy_handeye2
- 支持 眼在手上 + 眼在手外
- 源码安装,稳定、工业可用
- 3 步完成标定,自动保存结果