石世锋,叶 南,吴 哲,张丽艳
(南京航空航天大学机电学院,南京 210016)
在航空航天领域,机械臂常用于自动钻铆系统中的送钉和插钉[1]、孔轴零件的装配[2]和空间在轨服务[3]等。在大多数情况下,机械臂只能按部就班地执行事先规划好的动作,对于任务环境中发生的变化,无法自适应地作出调整。这种工作模式缺乏灵活性,尤其是在复杂的工业现场,未知的环境变化时有发生,会严重影响到机械臂的工作效率和精度。
为提高机械臂工作的稳定性和灵活性,基于视觉的机械臂测量系统受到研究人员的广泛关注,视觉传感器因其精度高、成本低和适应性好等特点成为辅助机械臂完成定位、装配等工作的重要手段之一。国外的相关技术已经非常成熟,德国Fraunhofer 研究所将双目系统集成到铣削机器人上,在铣刀主轴上安装反光靶点,通过双目系统测量靶点位姿来反映铣刀主轴的偏差,然后对铣刀主轴的移动量进行反馈补偿,提高机器人运动轨迹的精度,铣削机器人已经成功应用于空客A350 翼面的修配工作中[4]。国内的研究主要集中于各大高校,以浙江大学柯映林教授团队[5]为例,针对自动钻孔和铆接问题,搭建了一套配备单相机和激光指示器的机械臂系统,将激光点作为视觉特征,以此来估计机械臂末端执行器与孔位的位姿关系,通过设计具有自适应控制增益的控制器来补偿系统的不确定性,最终实现末端执行器与孔位的对齐。此外,针对轴承、法兰等圆形金属零件的抓取问题,提出了一种基于锥体退化理论和单目视觉的椭圆特征位姿测量方法[6],在获取零件位姿数据后由视觉伺服方法控制机械臂抓取零件。
机械臂视觉系统在执行跟踪、对接或抓取操作时,借助合作靶标进行定位和位姿测量是一种常见的解决方案:即事先在目标上设计一种尺寸、形状已知的几何图形,视觉系统通过观测该图形获得目标的位姿信息,然后把位姿反馈给机械臂驱动末端执行器对准目标[7]。雷金周等[8]提出了一种基于单目视觉的机械臂末端对准技术,通过识别和测量工件孔位附近的圆形阵列靶标,最终达到孔轴对准效果,前提条件是孔位与阵列靶标之间的位姿关系已知。Jiao 等[9]设计了一种十字型合作靶标,通过对靶标的识别和定位实施零件抓取动作。上海交通大学的胡佳兴等[10]以复杂的太空桁架结构为例,设计了一套靶标系统用于桁架编码,提前进行装配信息定义,为后续开展智能装配提供数据库信息支持。合作靶标应用之广,常用的靶标图案一般都是由圆点、直线和圆环组合而成,合理的图案设计和准确鲁棒的识别算法为提高位姿估计精度提供保障。
目前,基于视觉的机械臂测量技术主要运用在单个工件的近距离测量工作中,当机械臂需要在多个工位间移动、对多目标执行对准操作时,机械臂往往需要从较远距离开始工作,这使得系统工作环境的横向空间跨度变大,纵向距离变长。在机械臂由远及近的移动过程中,相机在某些距离段会出现失焦、离焦现象,导致位姿测量精度降低,甚至装配任务失败。针对此类问题,Qi 等[11]研究了变焦相机在机械臂视觉引导工作中的应用,变焦相机在机械臂移动过程中能对目标进行清晰成像,但目前变焦相机存在标定难度大、测量精度低、灵活性差等特点,极大限制了其在工业现场的应用。Qin 等[12]针对大尺寸工件的机械臂装配问题,提出了一种基于多传感器的自动对准策略,将机械臂末端工具与目标工件的对准过程划分为远距离粗对准和近距离精对准两个阶段。但由于使用了多种传感器,增加了系统复杂度和数据处理难度。国防科技大学的于起峰团队[13]在研究航天器自主对接时设计了一套远近场视觉系统解决方案,在追踪目标器上安装两种合作靶标,分别用于远场视觉系统和近场视觉系统的位姿测量。
在上述研究的基础上,本文针对机械臂多工位作业问题,搭建了一套具有远近视距的两目视觉系统,并以Eye-in-hand 形式与工业机械臂相结合。在完成系统标定的基础上,为机械臂多工位对准作业建立任务表,然后在合作靶标的辅助下完成机械臂末端工具与目标的三阶段自动对准,包括多工位起始位姿获取、远距离初定位和近距离精确对准。
所谓多工位对准作业,就是在未知的工作场景中,机械臂系统需要对多个对准目标进行识别和测量,然后按照某种顺序依次完成末端工具与目标的精确对准(在本文中,用孔轴配合来表征)。
本文搭建的机械臂视觉测量系统示意图如图1 所示。为了避免测量过程中产生遮挡问题,并提高局部测量精度,本文将相机固连在机械臂末端,以Eye-in-hand 形式搭建测量系统。由于系统需要在多个工位间完成对准任务,为了标识不同工位的对准目标,需借助合作靶标对目标进行区分。本文选用阵列式编码元[7]作为合作靶标,原因有:(1)该编码元具备唯一身份特征;(2)该编码元由8 个圆点构成,可用于对准过程中的位姿测量。在机械臂由远处及近的运动过程中,相机需要采集编码元图像并解算当前位姿数据,但受镜头焦距等因素影响,单个相机无法同时在远处和近处都清晰成像,离焦、失焦的图像会导致位姿计算出现偏差,甚至定位失败。因此,本文使用两台视距不同的工业相机构成两目视觉系统[14],其中一台用于全局观察定位,工作距离约1.5 m,视场大小约2 m×1.6 m,称之为全局相机;另一台用于近距离精确对准,工作距离约0.3 m,视场大小约0.3 m×0.25 m,称之为局域相机。两台相机分别工作在不同阶段,但又需要相互配合,才能保证末端工具与目标顺利对准。
系统的坐标系和位姿关系定义如下:全局相机坐标系{G},局域相机坐标系{P},机械臂基座坐标系{B},机械臂末端法兰坐标系{F}和编码元坐标系{M}。指的是全局相机坐标系相对于局域相机坐标系的位姿关系,本文定义其为两目视觉系统的外参数;指的是法兰坐标系相对于局域相机坐标系的位姿关系,本文定义其为手眼关系;指的是编码元坐标系相对于全局相机坐标系的位姿关系指的是编码元坐标系相对于局域相机坐标系之间的位姿关系指的是法兰坐标系相对于基座坐标系的位姿关系。
系统的工作流程如图1 所示,可分为离线先验局部对准阶段和在线自适应全局对准阶段两个部分,离线阶段包括系统标定和建立多工位作业任务表,初定位阶段和精对准阶段主要是基于两目视觉系统引导的机械臂多工位作业。
技术路线如图2 所示。首先,系统需要进行离线标定,标定主要包括两目视觉系统的内外参标定和手眼标定,具体内容详见第2 节。
其次,为多工位作业建立任务表。将各个对准目标放置于末端工具上,进行预对准。此时的对准目标是独立个体,并未处于相应的工位上。局域相机采集编码元图像,从图像中解算出编码值和位姿数据,编码值用于标识不同对准目标,记为期望位姿。于是,任务表记录了各个对准目标与编码值、期望位姿之间的映射关系,这就将末端工具与目标的对准过程转化为两目视觉系统对编码元的识别与位姿计算的过程。任务表可视为对准目标的一种资料入库操作,并不涉及到机械臂位姿部分。在视觉伺服领域,绝大多数情况下,期望图像或期望位姿都是需要预先获取或设定的。具体内容详见第3 节。
然后,执行三阶段自动对准策略。当机械臂多工位作业时,对准目标是布置在各工位上,或放置于工作场景中,其位姿是未知的,因此需要视觉系统进行识别、捕捉,获取目标的全局位姿。机械臂视觉测量系统要根据任务表执行对准操作,分别是多工位作业的起始位姿获取阶段、全局相机远距离初定位阶段和近距离局域相机精确对准阶段。具体内容详见第4 节。
图1 测量系统组成和工作流程Fig.1 Measurement system composition and workflow
图2 系统技术路线Fig.2 System technical route
标定是测量系统必不可少的一个重要环节,高精度的标定结果是后续定位和对准工作的保障。与传统的双目立体视觉不同,本文两目视觉系统中的两台相机视距不同,观察的范围大小不同,一般而言,当全局相机处于正常工作范围时,局域相机处于离焦状态,因此二者缺少公共视场。
针对本文的两目视觉系统,采用标定方法如图3(a)所示,全局相机和局域相机在多个视角下同时采集各自的标定板图像,由多视图几何技术获得两台相机的内参数,然后构建方程式
图3 系统标定原理Fig.3 Principle of system calibration
对于本文的“Eye-in-hand”手眼系统,手眼标定的目的是获取机械臂末端法兰相对于局域相机的位姿关系,标定原理如图3(b)所示。通过移动机械臂在不同位置拍摄标定板图像,同样能够构建形如式(1)的方程式,最终确定手眼关系。
建立任务表是在对准目标还未处于工位上时完成的(离线阶段),提前对各个对准目标进行先验信息定义,这些信息包括编码值、编码元二维和三维坐标、期望位姿等。在后续机械臂执行多工位对准作业时,系统要根据任务表中的信息,依次在不同工位下,完成末端工具与目标的精确对准,建立任务表的流程如图4 所示。
首先将对准目标放置于末端工具上,在预对准的情况下由局域相机获取期望图像;然后由对偶椭圆法[17]定位椭圆中心,得到8 个椭圆中心的像素坐标;使用编码元解码算法[14]确定其编号,并将8 个椭圆中心有序排列,排序后的椭圆中心记为{qj,j=1,2,…,8};最后,在局域相机内参数和8 个圆点中心的三维坐标{Qj,j=1,2,…,8}都已知的情况下(三维坐标事先由高精度光学仪器测量,且三维点与二维点一一对应),可根据多点透视投影理论[18](Perspective-n-point,PnP)求解编码元坐标系{M}相对于局域相机坐标系{P}的位姿关系(包含旋转量和平移量),称之为期望位姿。
对每个对准目标都建立上述映射关系,最终形成一张完整的任务表,其形式如表1 所示。当对准目标被放置于工作场景中,系统就可以从此表中读取信息,依次完成对准作业。
图4 任务表建立过程Fig.4 Process of establishing a task table
表1 存储任务信息的映射表Table 1 Task table recording related information
首先,全局相机对整个场景中的编码元进行搜索,以确定多工位作业的起始位姿。在执行每一项作业过程中,系统都要经过全局相机的初定位和局域相机的精对准,才能实现末端工具与目标的精确对准。
系统需要在多个工位下执行对准任务。首先要解决的问题是,对于每一项任务,机械臂的起始位姿在何处,才能保证全局相机能够观察到与当前任务相关的编码元。只有全局相机观测到编码元,才能进行位姿估计并引导机械臂运动。
图5 全局相机搜索编码元Fig.5 Process of global camera searching coded targets
机械臂起始位姿的获取过程如图5 所示。首先控制机械臂处于一个合适的初始位姿,使得全局相机至少能观察到一个编码元,然后以该编码元为中心,沿编码元所在平面进行多方向移动搜索,移动步长的选取要根据实际场景大小确定。以全局相机视场约为2 m×1.6 m 为例,可选择移动步长为0.5 m。机械臂移动过程中,全局相机对场景进行观察,若检测到与任务表相关的编码元,记录下此时的机械臂位姿,作为此项任务的起始位姿。当检测不到任何编码元时,机械臂停止运动,全局相机完成搜索,最终得到所有任务的起始位姿,,…,。若场景中存在相距较远的工位(两个编码元之间距离超过0.5 m),为避免遗漏起始位姿,在全局相机开始搜索前,就要在场景中布设辅助编码元作为过渡处理。
确定完所有任务的起始位姿后,机械臂移动到第一项任务所对应的起始位姿处。全局相机观察视场,由对偶椭圆法获得编码元上的8 个椭圆中心像素坐标,经解码后得出编码号,并将8 个中心坐标有序排列。如图6 所示,此时机械臂处于起始位姿处,全局相机观测到视场中存在3 个编码元,搜索任务表确定当前任务所对应的编号为061015,将编号和解码结果进行匹配,得到属于该编码元的二维像素坐标和三维坐标,最后根据PnP 计算编码元坐标系{M}相对于全局相机坐标系{G}的初始位姿关系。
图6 全局相机的初定位过程Fig.6 Initial positioning process of global camera
结合两目视觉系统外参数计算编码元坐标系相对于局域相机坐标系的位姿关系
式中为编码元相对于局域相机的当前位姿,与期望位姿P MTe存在偏差,偏差值ΔT为
当前位姿和期望位姿的偏差是建立在局域相机坐标系下的,要依据此偏差量计算出机械臂的运动修正量,必须结合第2 节系统标定中的手眼关系进行计算,详细计算过程可参考文献[19],最终结果如下
式中:BFTi为当前法兰坐标系相对于机械臂基坐标系的位姿关系,可以直接从机械臂自身程序读取,为手眼关系;ΔT为偏差值。均为已知量,可以直接计算出,即下一时刻机械臂要运动到达的位姿状态。
在机械臂运动过程中,系统以路点的形式记录下机械臂末端的运动轨迹,记为Φ1,Φ2,…,Φn。此举的目的是,在整个定位和对准过程中,当两目视觉系统对编码元的观测出现盲区时,机械臂尝试退回最近的路点重新定位决策。
由于全局相机的初定位精度有限,当机械臂运动后,偏差值ΔT并未达到本文设定的对准精度要求(角度偏差0.1°,位置偏差0.2 mm),于是系统自适应地切换到局域相机工作模式,进入精对准阶段。
式中:Δn为旋转轴,其模长表示旋转角度;Δt为ΔT中的平移量。
在系统近距离对准的过程中,需要注意目标丢失问题。一般来说,编码元丢失常由旋转引起,平移是不会导致目标丢失问题的[20]。因此,本文对机械臂的旋转量进行限制,一个具体做法是借助李群李代数或四元数的理论对旋转进行插值,进而获得中间姿态[21-22]。
图7 精对准阶段控制流程Fig.7 Flowchart of fine alignment stage
在机械臂运动的过程中,测量系统以固定频率从机械臂读取当前时刻的位姿数据,用来判断是否已经运动到指定位姿。机械臂一旦调整至位姿,局域相机再次介入,采集编码元的当前图像,系统计算位姿偏差ΔT,如此循环,直至偏差满足式(5)。
当测量系统完成当前对准任务后,系统在任务表中搜索下一项对准任务的信息,并确定其对应的起始位姿机械臂退出当前工位,移动到下一项任务的起始位姿处,继续执行对准任务。需要说明的是,本文仅给出两个位置间的直线传递路径,没有做避障等路径规划。在实际应用中,可通过机器人操作系统(Robot operating system,ROS)对现场环境进行建模,利用本文提供前后两个末端位姿信息,在MoveIt 模块中进行避障路径规划。
为验证本文基于视觉的机械臂末端对准方法的有效性,搭建了如图8 所示的测量场景。
图8 实验验证场景Fig.8 Experiment setup
全局相机和局域相机均采用大恒水星系列型号为MER-502-79U3M 的国产相机,分辨率为2 448 像素×2 048 像素,全局相机使用6 mm 镜头,局域相机使用8 mm 镜头使用。光源选择前向照明与频闪照明相结合的方式,投射频率与相机采集频率同步。以UR10 机械臂为中心,在其周围布置了3 个工位,共3 个对准目标,其所在平面高低不同、角度各异,最大角度差约为90°。机械臂的工作半径在1 m 左右,回转角度最大可达120°。两目视觉系统到对准孔的初始距离在1 ~1.5 m 范围不等。经游标卡尺测量,对准轴的直径为9.90 mm,对准孔1、对准孔2 和对准孔3 的直径分别为10.04、10.20 和10.98 mm。
在机械臂开始执行多工位作业前,任务表已事先建立,记录了3 项对准任务,其编码元编号分别为020812、010812 和031012。此外,对准任务的起始位姿也已确定。首先,机械臂对孔1 执行对准操作,全局相机在场景中搜索到020812编码元后进行位姿估计并引导机械臂运动,然后由局域相机进行观测,引导对准轴与孔1 完成精对准,孔轴精确对准时的机械臂状态如图9所示。
图9 孔1 对准结果Fig.9 Alignment result for hole 1
统计整个对准过程中当前位姿与期望位姿的偏差量ΔT,如表2 所示。其中,Δα、Δβ和Δγ分别表示绕X、Y、Z轴的角度偏差,ΔX、ΔY和ΔZ分别表示沿X、Y、Z轴的位置偏差。表2 中的步骤0 表示初始位姿偏差;步骤1 为全局相机初定位结果,偏差大幅减小,但显然不满足对准精度要求;在局域相机引导下,机械臂经过3 次微调,角度和位置偏差逐渐收敛,孔轴达到对准状态,最终的角度偏差为0.05°,位置偏差为0.17 mm。
孔2 和孔3 的对准过程与孔1 类似,对准结果如图10 所示,孔轴能够达到精确对准状态,此时孔2 的角度偏差为0.05° ,位置偏差为0.12 mm;孔3 的角度偏差为0.02°,位置偏差为0.10 mm。需要说明的是,受实验条件等因素限制,本实验设置了3 个工位进行方法验证,但该系统可以在更多工位的场景中执行对准、抓取等作业,机械臂的横向跨度和径向范围可以进一步增大。
表2 孔1 对准过程的位姿偏差Table 2 Pose deviation of alignment process of hole 1
图10 孔2 和孔3 的对准结果Fig.10 Alignment results for hole 2 and hole 3
为了验证本文方法的重复性对准精度,对图8 中的目标孔1 进行了50 次对准实验,统计孔轴对准时的位姿偏差,包括绕X、Y、Z轴的角度偏差和沿X、Y、Z轴的位置偏差,结果如图11所示。
从图中可得,沿X、Y、Z轴的位置偏差量相当,绕Z轴的角度偏差明显小于绕X、Y轴的角度偏差,这是由于本文使用的是PnP 算法进行位姿估计,PnP 对面内旋转(绕Z轴旋转)的位姿估计精度更高。同时,表3 给出了偏差绝对量的均值、最大值和标准差,角度偏差的均值为0.03°,标准差为0.015°,位置偏差的均值为0.12 mm,标准差为0.078 mm,说明本文对准策略的稳定性较好。
图11 50 次对准实验的偏差Fig.11 Deviation of 50 alignment experiments
表3 重复50 次对准实验结果Table 3 Results of 50 alignment experiments
本文围绕机械臂在多个工位间移动作业时需要对多目标执行对准操作这一问题展开研究,搭建了一套具有远近视距的机械臂测量系统。在完成系统标定和事先建立任务表以记录各对准目标相关信息的基础上,由全局相机和局域相机进行视觉引导,将机械臂多工位作业过程分为起始位姿获取、初定位和精对准3 个阶段,最终实现机械臂末端工具与目标的精确对准。通过孔轴对准实验说明本文方法的可行性,单个孔位重复对准标准差角度不超过0.015°,位置不超过0.078 mm;三阶段对准实验结果表明,角度误差小于0.05°,位置误差小于0.17 mm。在本文的基础上,下一步的研究工作主要是改进全局相机搜索编码元的策略和针对动态目标的跟踪方法两个方面。