从零到一:基于ROS与RealSense的机械臂手眼标定实战指南

张开发
2026/4/21 19:38:11 15 分钟阅读

分享文章

从零到一:基于ROS与RealSense的机械臂手眼标定实战指南
1. 环境准备搭建ROS与硬件基础第一次接触机械臂手眼标定时我花了整整三天才把环境搭好。现在回想起来其实只要按步骤操作两小时就能搞定。我们先从最基础的Ubuntu和ROS安装说起这里以Ubuntu 18.04和ROS Melodic为例因为RealSense D435i对这个组合的兼容性最好。装完系统后第一件事是更新软件源。很多人会忽略这步结果后面装依赖时各种报错。打开终端依次执行sudo apt-get update sudo apt-get dist-upgrade rosdep update硬件连接也有讲究。Kinova机械臂需要USB 3.0接口RealSense相机最好接在独立的USB控制器上。我遇到过因为USB带宽不足导致相机帧率不稳定的情况后来买了个PCIe转USB扩展卡才解决。记得把相机固定在机械臂工作范围内高度建议1-1.5米倾斜角度15-30度最理想。2. 驱动安装让硬件活起来2.1 RealSense相机配置RealSense的官方驱动安装其实比想象中简单。先装内核模块sudo apt-get install librealsense2-dkms然后装ROS包sudo apt-get install ros-melodic-realsense2-camera测试时有个小技巧先关闭所有ROS节点单独运行roslaunch realsense2_camera rs_camera.launch然后在rviz里添加PointCloud2显示如果能看到点云说明驱动正常。常见问题是相机不识别这时候检查dmesg日志大概率是USB供电不足。2.2 机械臂控制配置Kinova的ROS包安装要注意版本匹配cd ~/catkin_ws/src git clone https://github.com/Kinovarobotics/kinova-ros.git cd .. catkin_make这里有个坑udev规则必须配置否则每次都要sudosudo cp ~/catkin_ws/src/kinova-ros/kinova_driver/udev/10-kinova-arm.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules验证机械臂时建议先运行基础驱动roslaunch kinova_bringup kinova_robot.launch再开另一个终端测试MoveItroslaunch m1n6s300_moveit_config m1n6s300_demo.launch如果机械臂能在rviz里规划轨迹说明安装成功。3. 标定工具链搭建3.1 ArUco标记识别手眼标定需要视觉标记物我推荐用ArUco码。安装时建议源码编译cd ~/catkin_ws/src git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git cd .. catkin_make --pkg aruco_ros标记生成要注意必须用Original ArUco字典尺寸建议10cm×10cm。我常用ID582的标记因为这个数字在系统里冲突最少。打印时一定要保证尺寸精确我用卡尺量过才放心。3.2 easy_handeye安装这个包是标定的核心工具安装时容易踩坑git clone https://github.com/IFL-CAMP/easy_handeye.git rosdep install -iyr --from-paths src如果报错说缺transforms3d先升级pip再装pip install --upgrade pip pip install transforms3d有个隐藏问题ROS Melodic默认用Python2但有些新包只支持Python3。我后来在.bashrc里加了别名alias rosdeprosdep --rosdistromelodic4. 标定实战操作4.1 launch文件配置新建kinova_realsense.launch文件关键参数要注意arg namemarker_size value0.1 / !-- 必须与实际打印尺寸一致 -- arg nameeye_on_hand valuefalse / !-- Eye-to-Hand模式 -- arg namerobot_base_frame valuem1n6s300_link_base / arg namerobot_effector_frame valuem1n6s300_link_6 /相机和机械臂的坐标系一定要核对清楚。我遇到过因为坐标系定义不对标定结果偏差20cm的情况。建议先用rostopic echo /tf确认各坐标系关系。4.2 标定过程技巧启动顺序很重要先开相机roslaunch realsense2_camera rs_camera.launch再启动标定roslaunch easy_handeye kinova_realsense.launch采样时要注意机械臂末端保持标记正对相机每次移动后等1-2秒让图像稳定建议采集15-20组数据覆盖整个工作空间如果image_view不显示手动启动rqtrqt然后在Plugins→Visualization里添加ImageView订阅/aruco_ros/tracker/result话题。5. 验证与调试标定完成后最重要的验证实际精度。我常用的方法让机械臂末端走到已知坐标点用测量工具验证实际位置误差应小于3mm才算合格常见问题排查标定结果跳变检查标记是否牢固相机是否抖动rviz显示异常确认tf树是否正确rosrun tf view_frames生成pdf查看MoveIt规划失败检查robot_base_frame是否与URDF一致最后记得保存标定结果rosservice call /kinova_d435i_handeyecalibration/save这个YAML文件要妥善保管下次直接加载就能用。

更多文章