李 光 章晓峰 杨加超 马祺杰
(湖南工业大学机械工程学院, 株洲 412007)
机器人视觉伺服系统是机器人领域的重要研究方向,该项研究对开发手眼协调机器人在工业生产、航空航天等方面的应用具有重要意义[1],而手眼标定和逆运动学求解是其重要的组成部分。
机器人视觉伺服系统是指通过摄像机获取目标物体图像的反馈信息、通过机器人逆运动学求解完成对机器人系统的控制。这往往需要通过手眼标定完成图像坐标系到机器人坐标系的映射求解,然后通过视觉传感器获取目标图像,确认目标在用户空间的位姿矩阵,通过逆运动学求解关节角,完成机器人末端对目标的控制。
传统的视觉标定算法通过构建几何模型完成图像坐标系到机器人坐标系的标定,由于受到几何模型的限制,往往很难在一个模型中完整描述镜头畸变和图像噪声,这已成为传统标定模型的发展瓶颈[2]。针对这一问题,文献[3]在求解标定方程之后对结果进行了优化,但并未解决传统视觉标定方法的问题。文献[4-7]提出了一种无标定视觉伺服的方法,通过对图像雅可比(Jcobian)矩阵的估计完成目标的控制,并通过不同的优化方法对此过程进行优化,但是实时性较差,并且会受到机器人运动模型的影响,在实际应用中精确度不高。
神经网络具有良好的非线性逼近特性和自适应、自学习能力,采用神经网络拟合手眼关系的方法成为在视觉伺服研究的热点。彭西[8]使用神经网络对机械臂进行了手眼标定,但是无法获得机器人逆运动学解;文献[9-10]使用PSO优化的RBF神经网络进行逆运动学求解,但是PSO算法中的初始因子需要自定义,对优化影响较大,且受限于RBF神经网络特殊的浅层结构,无法进行深层学习,故精度无法得到进一步提高;文献[11-12]针对多自由度机器人,基于BP神经网络求解逆运动学,但是随着网络深度的增加,网络性能逐渐下降,使网络受限于此,精度无法进一步提高。
针对以上问题,本文提出一种残差BP神经网络算法,通过残差模块使浅层信息能够向更深层传递,以拟合机器人系统中关节角和抓取目标在像平面下像素坐标之间的映射关系,并通过6自由度机械臂的雅可比矩阵方程确定8个唯一域,对数据进行处理,以消除训练过程中逆运动学多解对训练结果的影响。通过实验比较不同深度下BP神经网络和残差BP神经网络对二维运动目标的抓取结果,以验证残差BP神经网络的性能和精度;在三维空间进行实物的抓取实验,以验证基于残差BP神经网络标定方法相对于传统标定方法的优势。
误差反向传播神经网络(BP neural network)具有多层结构,分别是输入层、隐含层、输出层[13],如图1所示。
图1中,输入层有M个神经元,输入向量X=(x1,x2,…,xM)T;隐含层有I个神经元;输出层有J个神经元,输出向量Y=(y1,y2,…,yJ)T。ωmi是输入层与隐含层之间的权值,ωij是隐含层与输出层之间的权值。隐含层各神经元阈值为ai(i=1,2,…,I),输出层各神经元阈值为bj(j=1,2,…,J)。
根据图1可以得到网络输出[14]为
(j=1,2,…,J)
(1)
BP神经网络通过权值和激活函数拟合非线性映射关系,但是随着网络层数的增多,梯度呈指数累积,在训练时会产生消失的问题,让网络学习能力达到饱和,精度不仅无法提高甚至会出现下降的情况。HE等[15]提出一种残差网络结构,用于解决深度学习中随着深度增加网络学习能力下降的问题,被广泛用于卷积神经网络中[16-19],并为其他神经网络结构解决此类问题提供了思路。
本文设计了一种残差模块(Residual block),如图2所示。残差模块基本组成部分为:1个隐含层和1个BatchNorm层以及1个ReLU层构成的训练模块,简称为LBR(Linear BatchNorm and ReLU)模块,以及一个负责修改维度的单隐含层和BatchNorm层,称为维度修改(Dimension change)模块。残差模块之间能够跳转求和并在下一个模块的节点之前通过ReLU函数激活。
LBR模块负责训练数据,维度修改模块负责修改训练后LBR模块输出维度,使得其能够与下一个残差模块的输出进行等维度求和。
因此,残差模块能够将上一层的信息传递到下一层,浅层信息传递到深层网络中能够使得网络在训练中梯度不易趋向于零,避免了多隐含层作用后梯度由于指数化而出现消失,使得网络丧失学习能力的问题。残差模块的结构保证了残差BP神经网络能够随着深度的增加继续保持学习的能力。
设计的残差BP神经网络(Residual BP neural network,ResBP)由4个残差模块和1个线性层组成,残差模块的LBR模块隐含层有25个节点,修改维度模块隐含层有6个节点。以隐含层数定义网络深度,则ResBP神经网络有9层。网络结构如图3所示。
本文研究对象为REBot-V-6R型6自由度串联机器人。根据DH参数法[20]可以确定该机器人运动学模型,各关节坐标系所在位置如图4所示。
根据DH参数法,第i连杆的参数定义为:ai为连杆长度,αi为相邻两关节轴线的夹角,di为第i根连杆和第i-1连杆的偏置距离,θi为第i连杆的旋转角。从连杆坐标系i-1到下一连杆坐标系i的坐标转换,定义为基本旋转和平移,具体形式为
i-1Ai(θi,di,ai,αi)=TRZ(θi)TZ(di)TX(ai)TRX(αi)
(2)
其中
(3)
式中i-1Ai——第i-1个关节到坐标系i坐标变化矩阵
TRZ——绕Z轴旋转矩阵
TRX——绕X轴旋转矩阵
TZ——沿Z轴平移矩阵
TX——沿X轴平移矩阵
机器人基座坐标系0到末端执行器坐标系6的转换矩阵关系为
0T6(q)=0A1(q1)1A2(q2)…5A6(q6)=A(q1,q2,…,q6)
(4)
REBot-V-6R型6自由度串联机器人的DH参数如表1所示。
表1 REBot-V-6R型机器人DH参数Tab.1 DH parameters of REBot-V-6R robot
DH参数代入式(4)可得其正运动学数学模型,通过正向运动学可以控制机器人末端到达指定位置。
输送线目标分拣为6自由度机器人常见的应用场景之一,本文针对6自由度机器人在输送线分拣场景下的应用,将输送线上的目标运动分解为3自由度运动,即沿X、Y轴的移动以及绕Z轴的旋转,并设计了一种圆形的黑白相间的棋盘,模拟了目标在输送线平面上运动的位姿,如图5所示。圆盘直径为机械臂抓取的最大工作范围,圆盘上一共180个外圆角点和1个中心角点,每个外圆角点可视作绕中心角点做旋转运动,其像素坐标(u,v)(单位:像素)代表目标运动的位置,初始角点和中心角点的向外连线为绕Z轴旋转的初始姿态,其他角点和中心角点连线与其夹角σZ(单位:rad)按顺时针方向逐渐增大。
在空间内选定与输送线平行的平面安装相机,且保证抓取区域始终在相机视野内,采集圆盘图像并通过图像处理采集角点的亚像素坐标(u,v)[21]。角点识别结果如图6所示。
实验过程中通过安装在机器人末端的激光装置判断末端位姿。具体过程为:通过示教平台控制机器人使激光装置发射的十字形光线交点到达圆盘角点位置,且选取十字光线中的一条分支和外圆角点半径重合,则认为末端到达理想位姿,记录此时各关节参数(θ1,θ2,…,θ6)。实验系统如图7所示。
标定圆盘模拟了输送带上目标的运动情况,通过摄像机获取圆盘图像,通过角点识别得到每个样本点的像素坐标,以此得到均匀分布的数据样本,即圆盘图像上均匀分布的每个角点对应输送带空间的一个位姿,每组位姿对应机械臂不同的关节角组合,通过网络训练完成由目标图像到机械臂关节角的映射关系的拟合。
其中,像素坐标和旋转角(u/w,v/h,σZ)为神经网络的输入,其中w、h为图像宽、高,其对应的关节角(θ1,θ2,…,θ6)为网络输出。
本研究的目标分析物是合成麝香,对水样的预处理主要包括过滤、萃取和浓缩。采用玻璃纤维滤纸在真空条件下进行水样过滤,使溶解相和颗粒相分离。对于溶解相,量取1.5 L过滤后的水样至分液漏斗中,加入 10 µL 500 ng·mL-1 DnBP-d4 回收率指示物标准溶液,混匀后再加入50 mL二氯甲烷进行液液萃取(3次);对于颗粒相,将玻璃纤维滤纸中的颗粒相样品加入到索氏抽提器中以150 mL二氯甲烷静置萃取24 h。将萃取液过无水硫酸钠以去除剩余水分,收集萃取液于250 mL蒸发瓶中,旋转蒸发浓缩至1 mL左右,最后氮吹浓缩至约 150 µL。
在实际抓取过程中,由摄像头获取目标的图像,通过图像处理得到目标图像的中心位置和旋转角,作为网络输入得到目标对应的机械臂的关节角,在运动学层面完成抓取动作。这一过程并不需要逆运动学求解,节约了大量的计算和时间成本。然而,未经处理的样本数据直接用于网络训练往往会导致精度低、训练速度慢等问题,因此需要结合机械臂的运动学特性对样本数据进行进一步处理。
由文献[22]可知,一个空间位姿矩阵可以对应8组关节角的解,RASTEGAR等[23]最早提出利用det(J)=0(J为雅可比矩阵)的方程,将非冗余机器人关节空间划分为与逆解数目相同的唯一域,再在每个唯一域中用数值法迭代求解,进而求得所有逆运动学解。针对6自由度机械臂,由det(J)=0可得8个封闭的解,为了避免机器人逆运动学多解对网络训练的干扰,由雅可比矩阵等于零可将关节角分为8个独立的域[24](Unique domain,UD),根据所求域的范围将训练数划分为独立的小批量数据,分批次进行网络训练。REBot-V-6R型机器人雅可比行列式为
det(J)=P1P2P3
(5)
其中
(6)
式中l1——第1个关节与第2个关节之间偏置的长度,取100 mm
由P1=0可得θ5=-π或θ5=π;由P2=0可得θ3为0.372 1、3.512 7、-2.769 5 rad;P3=0不易解,可将其视为函数结合θ3的可得函数图像,如图8所示。
其中,UD1为θ3∈[0.372 1,3.512 7] rad且P2<0的区域;UD2为θ3∈[-2.769 5,0.372 1] rad且P2<0的区域;UD3为θ3∈[0.372 1,3.512 7] rad且P2≥0的区域;UD4为θ3∈[-2.769 5,0.372 1] rad且P2≥0的区域。
结合θ5可分为两个域[-π,0]、[0,π],6组关节角所在值域总共可以分为8个互不相交的唯一域,如图9所示。
表2 基于唯一域数据划分Tab.2 Data partition based on unique domain
针对同一数据,分别使用了1层隐含层(隐含层节点数为25)的BP神经网络、3层隐含层(隐含层节点数分别为6、9、25)的BP神经网络以及5层隐含层(隐含层节点数分别为6、9、25、25、9)BP神经网络进行训练,训练结果如图10所示。
由图10可看出,1层隐含层BP神经网络的误差在第125次训练达到最优,均方差可以达到1×10-4rad,随着网络深度的增加,3层隐含层BP神经网训练时间变长,在第275次达到最小均方差,接近1×10-6rad。但是继续增加网络深度到5个隐含层时,网络性能无法继续提升,学习能力达到饱和,在第28次训练时提前结束了训练,均方差达到1×10-3rad。
网络训练之后对同一20组非角点位置的测试样本进行了误差分析,每组误差为6个关节误差的平均值,测试结果如图11所示。
由图11可以看出,3层隐含层BP神经网络的泛化能力最优,测试样本平均误差最小,且最稳定,其次是1层隐含层BP神经网络,误差最大的是5层隐含层BP神经网络。实验结果表明,随着网络深度的增加,梯度消失,网络性能提前饱和,无法进一步优化。
训练样本和测试样本不变,使用ResBP神经网络进行训练,网络隐含层数为9。若不进行数据处理,网络在526次训练达到最优性能,均方差能够接近1×10-6rad;若通过唯一域方法处理数据,网络在117次训练达到最优性能,均方差能够接近1×10-8rad,如图12所示。基于唯一域方法处理数据后,网络性能得到了较大提升,拟合速度提高了近5倍,精度提升2个数量级。使用唯一域处理过后的数据进行ResBP网络训练,结果相比于3层BP神经网络,精度提高了2个数量级,训练速度提高了近2倍。
同一测试样本误差能够达到1×10-4rad,且分布均匀,如图13所示。相较于其他BP神经网络,ResBP神经网络训练速度更快,精度更高,泛化能力更强,网络稳定性更好。
随机选取10个测试样本点进行了实机抓取实验,抓取点位姿和抓取结果示意如图14所示。
图中绿色圆圈所在位置和箭头所指方向为抓取点的位置和旋转角,红色圆圈所在位置和箭头所指方向为机器人输入网络输出末端的位置和平面姿态。位置最小误差可达1×10-2mm,最大可达1×10-1mm;角度误差最小可达1×10-3rad,最大可达1×10-2rad。实机抓取的精度可能受到控制误差以及机器人自身标定误差的影响,因此基于残差BP神经网络的视觉标定算法的抓取测试精度能够达到工业精度要求。
为了进一步验证标定精度,进行了实物抓取实验。抓取目标为输送线上一立方体物料,为了区分物料的旋转方向,在物料上做了标记,如图15所示。
在同一空间内任意选取了4个位姿,为了方便拍照取样对比,在Z轴方向预留高度10 mm。通过角点识别可以得到目标的图像中角点像素坐标,如图16所示。
目标图像中心点坐标和旋转角计算公式为
(7)
式中 (luu,luv)、(rdu,rdv)——目标图像左上角点像素坐标、右下角点像素坐标
ld——左下角点像素坐标向量
lu——左上角点像素坐标向量
τ——像素u轴单位向量(1,0)
(Cu,Cv)——目标图像的中心坐标
θ——目标在图像中的旋转角
基于ResBP网络标定的抓取结果如图17所示,图中,抓取结果的最大位置误差为位姿4,X轴方向位置误差ΔEx为0.3 mm,Y轴方向位置误差ΔEy为0.1 mm,最大姿态误差为姿态2,绕Z轴旋转角误差ΔERz为0.025 rad,绕X轴旋转角误差ΔERx为0.008 rad,绕Y轴旋转角误差ΔERy为0.003 rad。
由文献[25]可知,张正友提出了张氏相机标定法,其他大多标定方法都以张氏标定法为基础进行改进。REBot-V-6R型6自由度机器人输送线分拣系统通过张正友标定方法完成视觉标定,然后通过逆运动学求解得到各关节的旋转角完成抓取。基于传统标定方法的抓取结果如图18所示。图中,抓取结果的最大位置误差处于位姿3,X轴方向位置误差ΔEx为4.3 mm,Y轴方向位置误差ΔEy为1.4 mm,最大姿态误差为位于位姿2,绕Z轴旋转角误差ΔERz为0.041 rad,绕X轴旋转角误差ΔERx为0.038 rad,绕Y轴旋转角误差ΔERy为0.019 rad。
(1)提出了一种ResBP神经网络算法,该算法设计的残差模块能够使隐含层信息跨层传递,解决了浅层BP神经网络精度不够、深层BP神经网络因梯度消失而学习能力饱和、无法进一步学习的问题,并通过基于唯一域方法对训练数据进行划分,避免了多自由度机器人逆运动学多解对网络学习的影响,训练精度提高了2个数量级,训练速度提高了2倍。实验表明,该方法比1层BP神经网络、3层BP神经网络、5层BP神经网络的训练精度分别提高了4个数量级、2个数量级、5个数量级,测试精度提高2个数量级。
(2)基于ResBP神经网络算法完成了6自由度机器人视觉伺服系统由图像坐标系转换到6个关节角的运动学关系的标定,与传统视觉标定方法相比,节约了逆运动学求解过程的计算成本和时间成本,且精度更高。通过REBot-V-6R实验平台进行了三维实物抓取实验,验证了ResBP神经网络算法在实际应用环境中的准确性和精准度,本文方法比传统标定方法位置和姿态抓取误差减小了1个数量级。