< >
Home » ROS探索总结 » ROS探索总结-64.“手眼”结合完成物体抓取应用

ROS探索总结-64.“手眼”结合完成物体抓取应用

ROS探索总结-64.“手眼”结合完成物体抓取应用

说明:

  • 介绍视觉抓取中的关键技术

正文

请输入图片描述

  • 视觉是机械臂应用中的关键传感器,上讲我们在仿真环境中实现了物体在图像坐标系下的识别,本讲我们继续结合机械臂实现视觉抓取。

请输入图片描述

  • 在正式开始前,我们先来了解下视觉抓取中的关键技术。

请输入图片描述

  • 以下几个视频展示了一些典型视觉抓取的案例,无论摄像头安装在机械臂上,还是固定在周围环境中,都需要确定相机和机械臂本身的位置关系,视觉识别方面不仅要完成物体位置的识别,还需要分析抓取姿态。

请输入图片描述

  • 我们来整理下其中涉及的关键技术,主要是以下四个方面,接下来我们看看在这四个部分中,ROS分别有哪些包可以为我们提供支持。

请输入图片描述

  • 首先是手眼标定,也就是相机内参和外参的标定,上讲我们已经详细介绍了camera_calibration功能包实现相机内参标定的过程。

请输入图片描述

  • 在外参标定方面,ROS也提供了不少好用的功能包,本讲第二节会详细介绍外参的标定原理和easy_handeye功能包的使用方法。

请输入图片描述

  • 视觉抓取中非常重要的一个部分就是对抓取物体的识别,无论是二维图像还是三维点云,在ROS中都可以找到对应的功能包,如果需要机器学习的话,也可以集成Tensorflow轻松实现。

请输入图片描述

  • 抓取姿态分析是视觉抓取中的一个难点,因为生活中物体种类和摆放场景的复杂度太高,谷歌曾尝试用几十台机械臂进行抓取训练,最终还是由于无法大规模推广而放弃,有兴趣的小伙伴可以试下ROS中这些姿态分析的功能包。

请输入图片描述

  • 除了以上技术外,机械臂的运动规划当然也是重头,这也是ROS MoveIt!最擅长的部分。

请输入图片描述

  • 除了以上技术外,机械臂的运动规划当然也是重头,这也是ROS MoveIt!最擅长的部分。

请输入图片描述

  • 手眼标定的场景主要有以下两种,一种是眼在手外,这种场景下我们已知机械臂终端tip_link与base_link、相机camera_link与识别物体object_link之间的关系,需要求解camera_link与base_link之间的变换;两外一种是眼在手上,这种场景是求解camera_link与tip_link之间的变换。

请输入图片描述

  • 分别来看两种场景的标定原理,通过采样多个标定位姿下的图像数据,我们可以得到以下公式,最终无论哪种场景,都可以简化为AX=XB的求解问题。

请输入图片描述

请输入图片描述

  • 在ROS中,有一个开源的手眼标定功能包——easy_handeye,它为我们提供了一套可视化工具,可以完成眼在手上与眼在手外两种场景的外参标定。

请输入图片描述

  • 我们也在PROBOT Anno机器人上做了测试,通过以下两个可视化工具,完成17个点的运动采样后,即可自动完成参数的计算。

请输入图片描述

  • 手眼标定最终得到了camera_link和base_link之间的坐标变换,那这个数据我们该如何使用呢?且看接下来的分解。

请输入图片描述

  • 在上讲中,我们已经完成了绿色物体在图像坐标系下的识别,大家运行本讲例程,将会看到进一步的视觉抓取例程效果。在该例程中,我们将物体在图像坐标系下的位置,变换到机器人base_link下的位姿,并且控制机器人完成抓取动作。

请输入图片描述

  • 代码中的关键部分如下,调用上讲的visionManager完成物体识别,然后将图像坐标系变换到相机坐标系,接着再左乘相机与机器人坐标系的变换矩阵,即可得到物体在机器人坐标系下的位姿,这里的camera_to_link_其实就是手眼标定的求解目标。

请输入图片描述

  • 在例程仿真中,相机的位置是在URDF中已知的,此处就省略了标定过程,直接通过tf获取。

请输入图片描述

  • 使用同样的流程和第二节标定得到的结果,我们在PROBOT Anno机器人上实现了视觉分拣应用,视频中大家可以看到easy_handeye标定的精度完全可以满足应用的需要。

  • 以上就是本讲的内容精要,详细讲解和仿真/真机演示过程请见具体课程。

请输入图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros探索总结