机器人
如果你是视觉工程师,一定会听说过标定这个词,有手眼标定,相机标定,九点标定等等。但是对于控制工程师来说,需要研究轴组和机器人,这时候他们理解的标定指的是机器人本体标定,用户坐标系标定等等。很多时候视觉算法工程师和控制算法工程师在讨论标定问题时,会陷入死胡同。
那么什么是标定呢?标定(calibration)包含两方面的意思:一是指使用标准的计量仪器对所使用仪器或设备的准确度(精度)进行检测,确认是否符合标准;二是校准,消除误差。
标定的基本原理是建立多个坐标系之间的转换关系,从而求解出需要的坐标系坐标,将空间内物体或者工件统一在一个坐标系下,便于后面的工作开展。接下来,我通过一个思维导图来说明:
手眼标定
无论是视觉算法工程师还是控制算法工程师都会接触到的是手眼标定。手眼标定的实质是建立视觉像素坐标系与机器人或轴组基坐标系之间的关系。通过手眼标定,可以将工业相机看到的物体像素坐标转换到机器人坐标上,这样,机器人会根据转换后的坐标完成抓取等动作。在算法层面,AX=B,A代表像素坐标系,通常指的是相机看到的像素坐标(Row,Column),B代表的是机器人基坐标系下的坐标(RobotsX,RobotsY)。通过已知的像素坐标矩阵A和机器人坐标矩阵B,便可以求出X,接下来相机定位到的像素坐标乘以X矩阵,便可以得到机器人下的坐标,从而实现引导机器人抓取动作。值得注意的是,手眼标定不仅仅可以完成对平面物体的抓取,大量的机器人空间抓取工作还需要考虑位姿(位置和姿态)的变化。所以,3D视觉会求解出像素坐标下的物体三维位姿信息,也可以通过这个公式求解出机器人六自由度下的坐标值。很多论文中都提到了对X的解算方法,如最小二乘法,伪逆矩阵等等,其目的在于求取的X更加精确,网上论文和推导公式很多,这里不再赘述。
对于初学者而言,halcon提供的方法有vector_to_hom_mat2d,vector_to_hom_mat3d等等,opencv提供的方法有calibrateHandeye等。其本质都是对X的求解。在操作应用方面,根据相机和机械手的安装位置,分为眼在手上,眼在手外两种方式。眼指的是工业相机,手便指的是机械手或者轴组。
手眼标定细分为九点标定,十五点标定等。很多初学者会认为手眼标定就是九点标定,这是一个错误的概念。九点标定只是手眼标定的子概念,而且九点标定只能实现对平面物体的抓取和定位,无法做到三维空间的转换。九点标定操作上是机器人运动九次,同时记录同一个物体九次像素坐标和机器人坐标,便可以求解X,具体的操作方法大家可以搜索网上视频观看。其实,三个点便可以完成坐标系的转换,使用九点和十五点无非是增加参数,减少误差。九点标定可以用自己制作的标定板,方式灵活多样。
相机标定
相机标定不同于手眼标定,通常指的是相机畸变标定。在一个CCD相机中,存在像素坐标系,图像坐标系,世界坐标系等。由于光学成像的问题,相机存在枕型畸变和桶型畸变,相机的像素尺寸与实际物体尺寸并不是比例关系。而且相机的安装位置与实际的成像平面存在位姿偏差关系。通过相机标定可以将像素坐标系转化到世界坐标系,解算出相机的内参(相机本身的参数,如焦距,X,Y方向上的像元大小),外参(相机与实际平面之间的位姿关系)。在halcon中,提供了圆点标定板和蜂窝标定板两种,通过标定助手可以实现高精度标定,输出相机内外参。在opencv中,使用棋盘格标定法进行相机标定,通过提取角点实现标定,具体标定原理和函数网上有大量资料,具体不再赘述。
无论是棋盘格还是圆点标定板,都是精密仪器加工出来的高精度标定板,标定板各圆点,棋盘格之间的距离精准到丝级,通过精密的标定板完成对相机畸变的矫正。标定板价格也从几十到几千元不等。其实,无论是棋盘格,还是圆点标定板,蜂窝标定板,都是通过计算角点,圆点之间的像素位置与标定板厂家提供的描述文件中世界物理尺寸等,求解出相机内外参数。得到精准的相机内外参数之后,便可以将像素坐标转化到实际的世界坐标,从而完成视觉测量等项目。因此,相机标定的应用场景主要在于视觉测量项目中,这一点和手眼标定是不一样的。
机器人标定
对于控制算法工程师而言,除手眼标定以外,还需要对机器人轴组或者机器人进行标定,一般不接触相机标定。首先是本体标定。机器人在安装好伺服电机,加工完成之后,设定的机器人末端的坐标不能简单看成各个连杆(大臂,小臂等)之间的运动学正解。因为设定的机器人硬件参数与加工后的机械参数存在误差。比如说,设定机器人或者轴组大臂长度是100mm,但加工好后是100.5mm,这样解算出的机器人运动学正解便存在误差,因此,需要对本体进行标定,弥补加工误差带来的影响。在操作使用上,使用激光跟踪仪,高精度视觉检测仪,拉线式标定仪器等。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !