机器人抓取时如何定位?用什么传感器检测?

机器人抓取时如何定位?用什么样的传感器来检测机械手的动作,取决于伺服电机上的编码器反馈到工控机的处理中心的信号,与预设的参数进行比较,修正后再输出到伺服电机进行精确定位。也就是说,是由预编程决定的,而不是由传感器定位决定的。程序设计可以解决机械手在三维空间的精确方向、速度和执行时间的问题。

根据定位点和零点的位置,机器人手定期校正累积误差,抓取的最高顺序是使用图像技术确定复合体的位置。

一般通过摄影定位。传感器是COMS或CCD。

伺服电机轴端编码器的反馈信号通过预编程及其执行反馈到计算中心,精确修整偏差定位。

机器人了解到机器人领域的机器视觉和计算机视觉有一些区别:机器视觉的目的是为机器人提供操作对象的信息。因此,机器视觉的研究大概有这几块:

物体识别:在图像中检测物体的类型,与CV的学习有很大一部分重合;

姿态估计:计算物体在摄像机坐标系中的位置和姿态。对于机器人来说,要抓什么东西,不仅要抓什么东西,还要抓它在哪里。

摄像机标定:因为上面我们所做的只是计算物体在摄像机坐标系中的坐标,所以我们还需要确定摄像机和机器人的相对位置和姿态,这样我们就可以把物体的姿态转换成机器人的姿态。

当然,我主要专注于物体抓取领域的机器视觉;SLAM等领域暂且不谈。

因为视觉是机器人感知中非常重要的一部分,所以有很多研究。让我按照从简单到复杂的顺序介绍一些我所知道的:

0.摄像机标定

这其实是一个比较成熟的领域。因为我们所有的物体识别只是计算物体在摄像机坐标系中的姿态,所以机器人在操作物体时需要知道物体在机器人坐标系中的姿态。因此,我们需要首先校准相机的姿态。内参校准就更不用说了,参考张的论文或者各种校准工具箱;对于外部参数校准,根据摄像机安装位置有两种方式:

眼对手:相机与机器人的极坐标系统固定连接,不随机械臂的运动而运动。

手握眼球:相机固定连接在机械臂上,随着机械臂的移动而移动。解决这个问题的两种方法是相似的。首先是眼对手。

只需在机械臂末端固定一个棋盘,在相机视野内移动几个姿势。因为摄像机可以计算出棋盘相对于摄像机坐标系的位置和姿态,而机器人的运动学正解可以计算出从机器人基座到末端手爪的位置和姿态变化,而末端手爪和棋盘的位置和姿态是相对固定的。这样,我们就可以得到一个坐标系环。

对于手眼的情况,也是类似的。只需要在地上放一个棋盘(与机器人底座固定连接),然后让机械臂拿着相机拍几个位置,就可以形成一个新的坐标环。

1.平面目标检测

这是目前工业流水线上最常见的场景。目前该领域对视觉的要求是:快速、准确、稳定。所以一般采用最简单的边缘提取+边缘匹配/形状匹配的方法;而且为了提高稳定性,一般以点亮光源为主,采用对比度大的背景来减少系统变量。

目前很多智能相机(比如康耐视)直接嵌入了这些功能;而且物体一般放置在一个平面上,摄像机只需要计算出物体的三自由度姿态。另外,这种应用场景一般是用来处理一个特定的工件,相当于只有姿态估计,没有物体识别。当然,在工业上追求稳定也无可厚非,但是随着生产自动化需求的增加,服务机器人的兴起。更复杂物体的完整位姿估计已经成为机器视觉的研究热点。

2.有纹理的物体

机器人视觉领域首先研究有纹理的物体,比如表面有丰富纹理的饮料瓶、快餐盒等。当然,这些对象仍然可以使用类似于边缘提取+模板匹配的方法。但在实际的机器人操作过程中,环境会更加复杂:光照条件不确定(光照),物体与摄像机的距离不确定(缩放),摄像机看物体的角度不确定(旋转,仿射),甚至被其他物体遮挡(遮挡)。

好在有个叫Lowe的大神提出了一个超强的区域特征点叫做SIFT(尺度不变特征变换):Lowe,David G .“来自尺度不变关键点的区别性图像特征。”国际计算机视觉杂志60.2(2004):91-110。具体原理可以在上面的论文或者各种40000+引用的博客中找到。简单来说,这种方法提取的特征点只与物体表面纹理的某一部分有关,与光照变化、尺度变化、仿射变换和整个物体无关。因此,利用SIFT特征点,我们可以直接在相机图像中找到与数据库中相同的特征点,从而确定相机中的物体是什么(物体识别)。

对于不会变形的物体,特征点在物体坐标系中的位置是固定的。因此,在获得一些点对后,我们可以直接求解摄像机中的物体与数据库中的物体之间的单应矩阵。如果我们使用深度相机(如Kinect)或双目视觉方法,我们可以确定每个特征点的三维位置。然后直接求解这个PnP问题,就可以计算出物体在当前摄像机坐标系下的姿态。

↑下面是之前实验室毕业的一个师兄的成果。当然,在实际操作过程中还有很多细节要使其真正可用,比如:首先利用点云分割和欧氏距离去除背景的影响,选择特征稳定的物体(有时SIFT会发生变化),用贝叶斯方法加速匹配。而且,除了SIFT,还有很多类似的特征点,比如SURF,ORB等。,后来出来了。

3.没有纹理的物体

嗯,有问题的物体很容易解决,所以生活或行业中还是有很多物体是没有质感的:

我们最容易想到的是:有没有一个特征点可以描述物体的形状,并且具有类似SIFT的不变性?可惜,据我所知,目前还没有这样的特征点。所以过去有一大类方法还是采用基于模板匹配的方法,只是对匹配的特征进行了特殊的选择(不仅仅是边缘等简单的特征)。

简而言之,本文利用彩色图像的图像梯度和深度图像的表面法线作为特征来匹配数据库中的模板。因为数据库中的模板是从一个物体的多个视角拍摄后生成的,所以这种匹配得到的物体* * *姿态只能算是一个初步的估计,并不准确。但是,只要我们有了这个物体的初步估计姿态,就可以通过ICP算法直接将物体模型与三维点云进行匹配,从而得到物体在摄像机坐标系中的精确姿态。

当然,这个算法的实现还有很多细节:如何建立模板,颜色渐变的表示等等。另外,这种方法不能处理物体被遮挡的情况。(当然,通过降低匹配阈值,可以处理部分遮挡,但会造成误识别)。针对部分遮挡,我们实验室的张博士去年对LineMod进行了改进,但由于论文还没有发表,我就先不做过多的覆盖了。

4.深度学习

因为深度学习在计算机视觉领域已经取得了非常好的成果,我们作为机器人自然会尝试在机器人物体识别中使用DL。

首先对于物体识别,这个可以复制DL的研究成果,各种CNN都可以随便拿来用。是否有将深度学习融入机器人领域的尝试?有什么困难?-在知乎的回答中,我提到在2016的“亚马逊抢人大赛”中,有很多队伍采用DL作为物体识别算法。但是在这个比赛中,虽然很多人使用DL进行物体识别,但是仍然使用简单或者传统的算法进行物体姿态估计。看来DL并没有被广泛采用。如@周所说,一般是通过语义分割neork在彩色图像上分割出物体,然后将分割出的部分点云与物体的3D模型进行ICP匹配。

当然,也可以使用神经网络直接估计姿态。

它的方法大概是这样的:对于一个物体,取很多小块的RGB-D数据(只关心一个面片,用区域特征处理遮挡);每个块都有一个坐标(相对于物体坐标系);然后,首先使用自编码器降低数据的维数;然后,利用降维后的特征训练霍夫森林。

5.与任务/行动规划相结合

这部分也是一个有趣的研究内容。因为机器视觉的目的是为机器人操作物体提供信息,并不局限于摄像机中的物体识别和定位,往往需要与机器人的其他模块相结合。

我们让机器人从冰箱里拿一瓶雪碧,但这瓶雪碧被米琳达挡住了。我们人类的做法是这样的:先把美琳达搬走,再去拿雪碧。所以对于机器人来说,它需要从视觉上确认Sprite在mirinda的后面,同时也需要确定mirinda是可以移开的,而不是冰箱门之类的固定物体。当然,把视觉和机器人结合起来,会产生很多其他有趣的新事物。既然不是自己的研究方向,我就不班门弄斧了。

机器的定位首先由工程设计决定,定位精度前所未有。来自伺服电机同轴端编码器的反馈信号由伺服电机驱动进行处理,然后传输进行自微调。

机器人的多工位动作和执行中的定位都是由人工编程决定的,暂时与传感器无关。如果要按照制作流程进行改进,就得重写程序或者在原程序中进行修改和调整。

机器人抓取定位是预先编程的,工控机的输出驱动伺服电机精确定位,包括伺服电机编码器的反馈信号经过电机驱动卡,直到工控机进一步调整。如果传感器检测到的定位误差特别大,就不可能稍微修正定位精度。

目前机器人抓取最常见的方式是通过视觉定位。CCD/CMOS传感器在当前视野内拍照,找到标志点,计算偏移坐标和角度,然后通过网口或串口将数据反馈给机器人,机器人进行相应的修正。

-中和航讯科技有限公司邓经理为您解答。

机器人动作的定位首先由人工编程确定,它在空中的位置是上下左右。定位精度由伺服电机同轴末端编码器传感器反馈,伺服电机驱动卡送到加工中心进行处理,然后输出进行自动微调。