机械臂与Realsense D435 相机的手眼标定ROS包

本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。

系统:Ubuntu 20.0.4
◼ ROS:Noetic
◼ OpenCV 库:OpenCV 4.2.0
◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包(2.3.2)
◼ Marker 标记识别:Aruco 功能包
◼ 手眼标定:easy_handeye 功能包
◼ Moveit!
◼ 机械臂 ROS 功能包(根据不同型号机械臂提供配套的 ROS 包,使用方法基本相同)

一、概述

手眼标定分两种情况:
        Eye-to-hand 眼在手外:标定的是相机坐标系相对于机器人基座坐标系的位姿。
        Eye-in-hand 眼在手上:标定的是相机坐标系相对于机器人工具坐标系的位姿
本教程主要介绍 Realsense D435 相机安装在机械臂外部即眼在手外的标定方法。

二、下载标定需要的ros包

1、aruco_ros包

mkdir eye_out_hand/src && cd eye_out_hand/src
//下载noetic版本的
git clone https://github.com/pal-robotics/aruco_ros.git

2、easy_handeye包

git clone https://github.com/IFL-CAMP/easy_handeye.git

3、realsense-ros包

//下载ros1版本的
git clone https://github.com/IntelRealSense/realsense-ros.git

4、机械臂控制包

 用自己对应的机械臂控制ros包就可以了。

3f7738b6bd9b430c92fa658624a63b6e.png

三、打印 Marker 标签

        标定需要使用到的 Marker 标签,可以在 aruco_ros 包中找到提供好的 marker 标签进
行打印,如图:

017f05d751604912a155c9246492f48e.png

         也可以到下面的网站下载maker标签并打印出来:  Online ArUco markers generator

46ed286726c5440581f8f5d3a665e486.png     注意:打印时,要选择原始大小,否则要测量一下打印出来的真实大小。

 四、修改ros包的配置

 1、配置 aruco_ros 的 launch 文件

        在 aruco_ros 功能包的 launch 目录下拷贝一份原有的 single.launch 文件,自己命一个名字,按下面的步骤修改里面的内容:

21a3c50b8e2946f39dc7344cad3d60eb.png

markerId:使用的 Marker 标签的 ID,这里在准备时打印的 Marker 标签 ID 为 582
markerSize:Marker 标签的实际大小,单位为 m,这里在准备时打印的 Marker 标签实际大小为 5 厘米即 0.05m
ref_frame:参考坐标系名称,这里选择 Realsense 的 camera_color_frame 作为参考坐标系
<remap from="/camera_info" to="/camera/color/camera_info" />:将/camera_info 重映射为对应 Realsense实际发布的相应的 Topic 即/camera/color/camera_info
<remap from="/image" to="/camera/color/image_raw" />:将/image 重映射为对应 Realsense 实际发布的相应的 Topic 即/camera/color/image_raw
camera_frame:相机坐标系,修改为实际的相机坐标系 camera_color_frame

2、配置 easy_handeye 标定的 launch 文件

        在 easy_handeye 功能包的 launch 目录下新建一个eye_in_hand_calibrate.launch文件。在里面添加

<?xml version="1.0" ?>
<launch>
    <!-- 生成标定文件的名称 -->
    <arg name="namespace_prefix" default="rm_rs_d435" />
    <!-- 机械臂 MoveIt!配置的 move_group 为 arm,所以修改为 arm -->
    <arg name="move_group" default="arm" /> 
    <!-- start easy_handeye -->
    <include file="$(find easy_handeye)/launch/calibrate.launch" >
        <arg name="namespace_prefix" value="$(arg namespace_prefix)" />
        <arg name="move_group" value="$(arg move_group)" />
        <!-- 这里使用眼在手上的方式进行标定,所以此处改成 true -->
        <arg name="eye_on_hand" value="true" />
        <!--tracking_base_frame 为 realsense 的相机坐标系-->
        <arg name="tracking_base_frame" value="camera_color_frame" />
        <!--tracking_marker_frame 对应 aruco_ros 包中 single_realsense.launch 中的     marker_frame 的值-->
        <arg name="tracking_marker_frame" value="aruco_marker_frame" />
        <!--robot_base_frame 为机器人基座坐标系-->
        <arg name="robot_base_frame" value="base_link" />
        <!--robot_effector_frame 为工具坐标系,如夹爪,吸盘等-->
        <arg name="robot_effector_frame" value="Link6" />
        <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>

五、开始标定

1、编译

cd ~/catkin_ws
catkin build

2、启动 Realsense 节点

cd ~/catkin_ws
source devel/setup.bash
roslaunch realsense2_camera rs_camera.launch

 62a2b9761d364ed19f8b86abd4bd4912.png

 3、启动aruco_ros节点识别maker标签

cd ~/catkin_ws
source dev/setup.bash
roslaunch aruco_ros single.launch

bc2a28398a814f7091bc0188d9b5e753.png

         你可以打开一个新的终端,执行以下命令启动 image_view 订阅/aruco_single/result 显示图像:

cd ~/catkin_ws
source dev/setup.bash
rosrun image_view image_view image:=/aruco_single/result

4、启动你的机械臂控制节点 

        根据你自己的机械臂控制功能包,运行就可以了。

5、启动 easy_handeye 手眼标定节点

cd ~/catkin_ws
source dev/setup.bash
roslaunch easy_handeye eye_in_hand_calibrate.launch

        成功运行后,会同时打开三个界面: 5c159ed1974c4c58ae3c077e96f8dabe.png

737e99a5fce94010b93a320be9a666a4.png

75781a0475a341e2b2c73c72eacc11fc.png

 标定步骤:

a、在图3 中,点击 Check starting pose,稍微等待,若检查成功,界面会出现:0/17,Ready to start,如下图所示(如果检测失败或者没有出现 0/17,则说明当前机械臂的姿态不合适,可能有规划不可达,需要关闭标定节点然后调节机械臂到一个合适姿态并将 aruco 二维码移动至相机视野中心处附近再重启启动标定节点继续标定):

7c33b4385b204e6e8005a3b114a0c455.png

 b、在图3中依次点击 Next Pose,Plan,Execute,机械臂会移动至新的位置,若二维码完全的在相机视野范围内,且能检测成功,则进行下一步,若二维码不在相机视野范围内或部分在视野外,检测不到,则再次依次点击 Next Pose,Plan,Execute,直到二维码完全在相机视野范围内,且能检测成功,再进行下一步,如下图所示:

abc4744475784db9b0f8cc4dd106509c.png

 c、在图2 中点击 Take Sample,若 Samples 对话框中出现有效信息,说明第一个点标定成功 1d3197543d184f34826a9cd36a575393.png

d、重复执行步骤 2 和步骤 3,直至 17 个点全部标定完毕

e、在图2 中点击 Compute,则 Result 对话框中会出现结果,点击Save,会将结果保存为一个 YAML 文件,路径为 ~/.ros/easy_handeye

250ccf0227e84630835c7bf4adbe28cd.png

标定完成!!!!!!

 

  • 53
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Realsense D435i手眼标定是一种将机器人的手和眼睛进行标定的方法。这种方法可以帮助机器人更准确地感知周围环境,从而更好地执行任务。在进行手眼标定时,需要使用特定的软件和硬件设备,例如相机和标定板。通过将相机机器人手臂的位置进行标定,可以使机器人在执行任务时更加精确和可靠。 ### 回答2: Realsense D435i是由英特尔(Intel)公司生产的一款深度相机,可以实现深度测量和RGB图像采集。手眼标定是指在机械臂机器人装置上安装相机等设备,需要通过标定使机械臂相机之间互相匹配,建立二者之间的坐标转换关系,使得机械臂能够准确地控制相机进行三维视觉测量。realsense d435i手眼标定主要分为以下几个步骤: 1. 硬件安装:将相机安装到机械臂上,并固定好。 2. 数据采集准备:准备好标定板,并将标定板放在机械臂可见的位置上,同时确保相机能够拍摄到标定板。此时,需要确保标定板的大小与相机视野的比例是合适的。 3. 数据采集:启动Realsense相机,并利用相机的软件控制将相机调整至标准的采集模式下。拍摄不同的标定板图像,括旋转角度、平移等,采集的图像需要括标定板的角点。 4. 标定数据处理:使用MATLAB、OpenCV等相关软件进行标定数据处理,得到相机机械臂之间的坐标转换矩阵。该矩阵将被用于实时地处理获取的3D点数据。 5. 校验:对标定结果进行校验,确保精度和可靠性。 以上步骤是realsense d435i手眼标定的基本操作,需要注意的是,标定数据的采集质量和数据处理的准确度对最终结果有较大影响,因此,需要有专业的人员进行操作。在应用过程中,标定可以帮助机械臂机器人装置实现准确的三维视觉测量,提高了机器人操作的效率和可靠性。 ### 回答3: Realsense D435i是一款强大的深度摄像头,通过其高精度的深度感知技术,可以准确捕捉环境中的深度信息和物体位置。对于一个机器人或者自主驾驶车辆等智能设备,深度摄像头是必不可少的感知装置。 在使用Realsense D435i的过程中,手眼标定是一项非常重要的工作。它的作用是对摄像头和机械臂之间的关系进行确定,使系统能够准确地感知并精确地操作物体。 手眼标定的过程分为两步。首先需要确保机械臂和摄像头的初始位置,也就是在机械臂末端装上一个坐标系,并让摄像头正对着这个坐标系,然后记录下机械臂的位置和摄像头捕捉到的图像信息。 接下来就是手眼标定的过程。首先需要将机械臂和摄像头放置在一定的距离之内,让它们在不同的位置和姿态下进行多组拍摄。然后,通过标定算法,将摄像头和机械臂的关系进行建模,得到摄像头与机械臂之间的位姿关系。 在手眼标定中,最关键的是标定算法的选择。常用的标定算法括PnP算法、Quaternion算法等。不同的算法有其优缺点,需要根据实际情况选择合适的算法。 总的来说,手眼标定Realsense D435i使用过程中至关重要的一步。只有通过准确的手眼标定,才能让机械臂和摄像头之间的配合更加紧密,实现精准的定位范畴及控制,为各种智能设备的应用提供更加精确的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值