[机械臂]UR5手眼标定(eye on hand)

博客介绍了Kinect内参标定的相关内容,包括安装ROS工具包(visp、aruco_ros、easy_handeye),下载ArUco markers,修改ur5_kinect_calibration.launch文件。还说明了启动UR5机械臂和手动标定的操作,以及保存标定结果和相关tf变换信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kinect内参标定

http://wiki.ros.org/openni_launch/Tutorials/IntrinsicCalibration

 

安装相关ROS工具包

安装visp

sudo apt-get install ros-kinetic-visp-*

安装aruco_ros

cd ~/catkin_ws/src
git clone -b kinetic-devel https://github.com/pal-robotics/aruco_ros
cd ..
catkin_make

安装easy_handeye

cd ~/catkin_ws/src
git clone https://github.com/IFL-CAMP/easy_handeye
cd ..
catkin_make

 

下载ArUco markers

通过http://chev.me/arucogen/ 可以在线生成ArUco markers,注意选择Original ArUco,设置相应的ID和尺寸。

通过其他途径下载的aruco markers可能会导致后面教程相机无法识别到。

 

修改ur5_kinect_calibration.launch文件

可以在/easy_handeye/docs下找到,将它移到launch文件夹下,或自己重新创建.launch文件。

<!-- filename: calibrate.launch -->

<launch>
    <arg name="namespace_prefix" default="ur5_kinect_handeyecalibration" />
 
    <arg name="robot_ip" doc="The IP address of the UR5 robot" />
        <!--<arg name="marker_frame" default="aruco_marker_frame"/>-->
    <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="101" />

    <!-- 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/rgb/camera_info" />
        <remap from="/image" to="/camera/rgb/image_rect_color" />
        <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_link/>
        <param name="camera_frame"       value="camera_rgb_optical_frame"/>
        <param name="marker_frame"       value="camera_marker" />
    </node>

    <!-- start easy_handeye -->
    <include file="$(find easy_handeye)/launch/calibrate.launch" >
        <arg name="namespace_prefix" value="$(arg namespace_prefix)" />
        <arg name="eye_on_hand" value="false" />
 
        <arg name="tracking_base_frame" value="camera_link" />
        <arg name="tracking_marker_frame" value="camera_marker" />
        <arg name="robot_base_frame" value="base_link" />
        <arg name="robot_effector_frame" value="ee_link" />
 
        <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>

注意:一定要根据实际的情况来进行修改,深度相机和机械臂的tf坐标、对应的话题、ArUco的ID和尺寸都得进行修改。后面出现的相机识别不出ArUco码、窗口闪退等问题都与之相关。

 

启动UR5机械臂

roslaunch ur_modern_driver ur5_bringup.launch robot_ip:=xxx.xxx.x.xx
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch

启动手动标定

roslaunch easy_handeye ur5_kinect_calibration.launch

会出现RVIZ和两个可视化窗口

点击第二张图左上角的Plugins->Visualization->Image View, 选择/aruco_tracker/result会显示出图像以及自动识别ArUco码,若不显示或识别不出请检查ur5_kinect_calibration.launch配置参数,也可能是ArUco码有问题。

 

 

接下来点击中间窗口的cherk starting pose按钮,让你采集17个点,继续下面两个步骤

1.依次点击Next Pose->Plan->Excute;

2.点击后方窗口的Take Sample,下方的Samples窗口会出现位姿数据;

重复执行1、2步骤17次(可能会出现当前位姿检测不到的情况,继续点击Next按钮即可),完成后点击Compute显示标定的结果,再点击Save保存数据。

生成的ur5_kinect_handeyecalibration_eye_on_base.yaml文件保存在.ros/easy_handeye文件夹里

.ros/easy_handeye
vim ur5_kinect_handeyecalibration_eye_on_base.yaml

可以查阅到相关的tf变换信息,将其通过静态变换放置在启动的launch文件。

eye_on_hand: false
robot_base_frame: base_link
tracking_base_frame: camera_link
transformation: {qw: 0.9717625847217112, qx: 0.003422921225947768, qy: -0.05367481903845219,
  qz: -0.22974937724931785, x: -0.11453255054685166, y: 0.7892102654016733, z: 0.5210149025720693}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiewf8128

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值