UR5机器人手眼标定

0.准备工作

1.相机驱动安装:传送门
2.Ur5机器人驱动安装:传送门
硬件条件

UR5机器人 Realsense D435i
工控机 i7-11700F RTX 3060
系统 Ubuntu 18.04

1.安装一些标定的文件夹

mkdir -p ~/hand_eye/src
cd ~/hand_eye/src
#下载aruco_ros
git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros.git
#下载easy_handeye
git clone https://github.com/IFL-CAMP/easy_handeye

#下载vision_visp / visp_hand2eye_calibration
sudo apt-get install ros-melodic-visp
git clone -b melodic-devel https://github.com/lagadic/vision_visp.git
cd ..
catkin_make --pkg visp_hand2eye_calibration
#编译
catkin_make

上述代码可能存在无法下载的情况,需要在终端添加代理

2.眼在手上的文件配置
在标定的过程中需要启动Ur5机械臂的节点,realsense节点 aruco节点 easy_handeye节点,网上大多数是写一个launch文件一起启动,但是很容易报错,这里是分开写。
2.1 修改配置文件

cp ~/hand_eye/src/easy_handeye/docs/example_launch/ur5_kinect_calibration.launch   ~/hand_eye/src/easy_handeye/easy_handeye/launch


sudo gedit ~/hand_eye/src/easy_handeye/easy_handeye/launch/ur5_kinect_calibration.launch

修改内容如下

<launch>
    <arg name="namespace_prefix" default="ur5_kinect_handeyecalibration" />
    <arg name="robot_ip" doc="The IP address of the UR5 robot" />
//需要根据自己的实际码来 定义 marker_size(打印码的长度单位米)和marker_id(打印码的编号)
    <arg name="marker_size" doc="Size of the ArUco marker used, in meters" default = "0.1"/>
    <arg name="marker_id" doc="The ID of the ArUco marker used" default = "24"/>

//注释这一部分代码
    <!-- start the Kinect
    <include file="$(find freenect_launch)/launch/freenect.launch" >
        <arg name="depth_registration" value="true" />
   </include> -->
 //注释这一部分代码   

    <!-- start ArUco -->
    <node name="aruco_tracker" pkg="aruco_ros" type="single">
  //注意改变相机的节点
        <remap from="/camera_info" to="/camera/color/camera_info" />
        <remap from="/image" to="/camera/color/image_raw" />
        <param name="image_is_rectified" value="true"/>
        <param name="marker_size"        value="$(arg marker_size)"/>
        <param name="marker_id"          value="$(arg marker_id)"/>
 //注意改变相机的节点
        <param name="reference_frame"    value="camera_color_frame"/>
        <param name="camera_frame"       value="camera_color_frame"/>
        <param name="marker_frame"       value="camera_marker" />
    </node>
//注释机器人的代码
    <!-- start the robot
    <include file="$(find ur_bringup)/launch/ur5_bringup.launch">
        <arg name="limited" value="true" />
        <arg name="robot_ip" value="192.168.0.21" />
    </include>
    <include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch">
        <arg name="limited" value="true" />
    </include> -->
//注释机器人的代码

    <!-- start easy_handeye -->
    <include file="$(find easy_handeye)/launch/calibrate.launch" >
        <arg name="namespace_prefix" value="$(arg namespace_prefix)" />
        //这里眼在手上选择true
        <arg name="eye_on_hand" value="true" />

        <arg name="tracking_base_frame" value="camera_link" />
        <arg name="tracking_marker_frame" value="camera_marker" />
        //robot_base_frame 的坐标系改成base
        <arg name="robot_base_frame" value="base" />
        <arg name="robot_effector_frame" value="tool0_controller" />

        <arg name="freehand_robot_movement" value="false" />
        <arg name="robot_velocity_scaling" value="0.5" />
        <arg name="robot_acceleration_scaling" value="0.2" />
    </include>

</launch>

如果复制上述代码,请删除所有中文说明
aruco二维码获取地址:传送门
一定要使用aruco二维码,然后打印出来,测量二维码的尺寸。

这里不要打印太大的Aruco码,会导致机器人识别到Aruco码的次数比较少

这里会有两个问题,在执行手眼标定节点的时候报错

对于rosdep错误,尝试通过命令安装transform3d

pip install transforms3d

对于AttributeError,我认为它类似于这个问题,你可以试试这个命令

python -m pip install opencv-contrib-python

解决方案的原文github链接:传送门

2.启动标定程序

1.realsense相机启动

扫描二维码关注公众号,回复: 15631964 查看本文章
roslaunch realsense2_camera rs_camera.launch

2.启动机器人

roslaunch ur_robot_driver ur5_bringup.launch limited:=true robot_ip:=192.168.125.100

再打开一个终端

roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true

3.启动标定程序

roslaunch easy_handeye hand_eye.launch 

4.再打开一个rviz终端,输入rqt
点击菜单栏的 Plugins -> Visulization -> Image View,选择 /aruco_tracker/result 话题。如果没有出现 aruco码,注意检查上文 中相机节点是否改变。

在这里插入图片描述

5.调整机器人的角度,能够以最好的状态识别Aruco码是最好的。

aruco码最好不要太大,否则会经常出相机视野导致数据采集数量比较少。

6.点击check starting pose,如图所是,若检查成功,界面会出现: 0/17,ready to start
在这里插入图片描述
在这里插入图片描述

然后点击Next Pose -> Plan -> Execute 执行完成以后如果标定码在视野范围内则 点击Take Sample 如图所示。
在这里插入图片描述
循环往复直到执行完17个位姿,点击窗口的Compute 就可以计算出机器人的手眼坐标关系了。
点击保存,数据保存在$HOME/.ros/easy_handeye 目录下的yaml文件中。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lqsdddd/article/details/126544007