注:感谢固高长江研究院徐工程师的技术讲解,以及matlab程序,机器人系统程序的提供。
在工业现场当中,相机拍摄到的图像有一个相机坐标系,而机器人自身也有一个机器人自身的坐标系,两者互相独立;当我们通过相机进行对物体进行拍摄,通过模式识别得到了目标物体在相机坐标系下的坐标位置,那么如何通过计算来让机器人知道目标物体在机器人坐标系的位置,以便机器人进行抓取操作呢?
这一章,首先进行标定原理的讲解,然后通过程序进行实现;最后,以洛阳理工学院实验室的固高工业智能相机及SCARA机械手为硬件基础,进行实验验证。
10.1 标定原理
如图10-1所示,OXY为机器人坐标系,O’X’Y’是相机坐标系。
图10-1 机器人坐标系与相机坐标系示意图
当相机获取目标物体在相机坐标系下的坐标(imageP3.x,imageP3.y)时,如何进行计算得到对应在机器人坐标系下的坐标(robotP3.x,robotP3.y)呢?
(为了对应后面程序,所以坐标名称直接使用下文中的程序变量名)
首先,需要通过两个已知坐标点进行标定。P1点在机器人坐标系下和相机坐标系下的坐标为(imageP1.x,imageP1.y),(robotP1.x,robotP1.y);P2点在机器人坐标系下和相机坐标系下的坐标为(imageP2.x,imageP2.y),(robotP2.x,robotP2.y)。
求得机器人坐标系下的向量robotP1P2以及相机坐标系下的向量imageP1P2:
imageP1P2.x = imageP2.x - imageP1.x
imageP1P2.y = imageP2.y - imageP1.y
robotP1P2.x = robotP2.x - robotP1.x
robotP1P2.y = robotP2.y - robotP1.y
然后,根据这两个坐标点求得现实距离与图像像素之间的比例系数factor以及两个坐标系之间的偏转角thetaRI。
factor = sqrt(robotP1P2.x*robotP1P2.x + robotP1P2.y*robotP1P2.y)/ sqrt(imageP1P2.x*imageP1P2.x + imageP1P2.y*imageP1P2.x)
偏转角thetaRI的求取:如图10-2所示。
图10-2 偏转角求取示意图
先求得机器人坐标系下向量robotP1P2相对于x轴的偏转角thetaR,然后求得相机坐标系下的向量