1. 手眼标定:让机械臂“看见”并“理解”世界
大家好,我是老张,在机器人视觉这块摸爬滚打了十来年,今天想和大家聊聊一个非常实际、几乎每个做机械臂视觉项目都绕不开的话题——手眼标定。特别是用UR机械臂搭配Intel Realsense相机的组合,在ROS环境下怎么把它搞定。你可能已经看过一些教程,但实际操作起来总会遇到各种“坑”,比如标定结果飘忽不定、程序莫名崩溃,或者数据对不上。别担心,这篇文章我会结合自己踩过的坑和实战经验,带你从零开始,一步步走通整个流程,目标是让你看完就能上手,一次成功。
简单来说,手眼标定就是确定相机和机械臂之间的“空间关系”。想象一下,你的眼睛(相机)看到了桌子上的一杯水(目标),然后你想指挥自己的手(机械臂末端)去稳稳地拿起它。这里的关键是,你的大脑必须清楚地知道眼睛看到的位置和你手的位置之间,到底差了多少距离、旋转了多少角度。手眼标定干的就是这个“大脑计算”的活儿。在机器人领域,我们管这叫求解相机坐标系与机械臂坐标系之间的变换矩阵。这个矩阵一旦求准了,相机看到的任何一个像素点的三维位置,都能立刻换算成机械臂末端需要到达的精确坐标,后续的抓取、装配、检测等任务才有了可靠的基础。
手眼标定主要分两种模式,这个必须在一开始就搞清楚。第一种叫 “眼在手上”,顾名思义,就是把相机直接安装在机械臂的末端执行器上,跟着机械臂一起运动。这种模式下,我们标定的是相机和机械臂末端之间的固定关系。它的好处是视野随着机械臂移动,非常灵活,适合工作区域大或者需要相机贴近观察的场景。第二种叫 “眼在手外”,相机固定在工作台周围的某个架子上,不随机械臂运动。这时我们标定的是相机和机械臂底座之间的固定关系。它的优点是相机视野稳定,不会因机械臂运动而抖动,适合对观察稳定性要求高的场合。今天我们重点讲的是更常见、也稍微复杂一点的“眼在手上”模式,因为UR+Realsense这种轻量级组合,非常适合做成移动的眼。
2. 环境准备:搭建稳固的标定工作台
工欲善其事,必先利其器。在开始标定之前,我们需要一个干净、稳定的软件环境。我强烈建议你使用 Ubuntu 20.04 LTS 搭配 ROS Noetic,这是目前最稳定、社区支持最完善的组合,能避开很多依赖库版本冲突的坑。如果你的Realsense是比较新的D455或者D435i,这个组合也是完全兼容的。
2.1 核心软件包安装
首先,把ROS Noetic的基础环境和桌面版安装好,这个网上教程很多,我就不赘述了。接下来,安装几个关键的ROS功能包:
-
UR机械臂驱动与MoveIt!配置:这是控制UR的核心。我推荐使用Universal Robots官方维护的
universal_robot驱动包,它比老旧的ur_modern_driver更稳定,对新型号支持更好。cd ~/catkin_ws/src git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git注意,虽然分支名是
melodic-devel,但在Noetic下工作得很好。这个仓库里包含了UR3/UR5/UR10等型号的驱动、描述文件和MoveIt!配置包。 -
Realsense相机驱动:Intel官方提供了
realsense2_cameraROS包,安装非常方便。sudo apt-get install ros-noetic-realsense2-camera sudo apt-get install ros-noetic-realsense2-description安装后,连接相机,运行
roslaunch realsense2_camera rs_camera.launch测试一下,用rviz查看/camera/color/image_raw话题,确保图像正常。 -
手眼标定核心工具:easy_handeye:这是我们今天的主角,一个非常好用且开源的手眼标定工具包。
cd ~/catkin_ws/src git clone https://github.com/IFL-CAMP/easy_handeye.git -
视觉标记检测工具:aruco_ros:
easy_hande


846

被折叠的 条评论
为什么被折叠?



