空间3R机械手逆向运动学的多模块神经网络求解
2019-05-31游雨龙
肖 帆 李 光 游雨龙
湖南工业大学机械工程学院,株洲,412007
0 引言
机器人逆运动学求解作为机器人离线编程、轨迹规划、控制算法设计等其他课题研究的基础,一直是机器人学中的一个经典问题,同样也是研究热点[1]。逆运动学求解的实质是完成机器人工作空间到关节空间的映射,它们之间的映射关系是非线性且多耦合的,问题比较复杂。很多学者在该领域做了大量研究与探索,提出了许多理论与方法。传统方法有解析法[2]、几何法[3]和迭代法[4]等。在求机器人逆运动学解问题中,解析法计算较为复杂,但是在机器人满足PEIPER[5]、DUFFY[6]分别提出的结构特点时,可以得到全部解;几何法针对机器人的某些特殊结构进行简化,再进行求解,一般无法单独使用甚至根本无法使用[7];迭代法受到初始值选取的约束,只能求得一组逆运动学解。
虽然传统方法中解析法和几何法能求机器人逆运动学的多解,但是需要满足特殊结构。随着机器人结构复杂化和计算机发展的突飞猛进,现代智能算法[8-10]被应用来求逆运动学解。
神经网络对连续函数具有非常好的拟合能力及泛化能力,尤其是后者,使其被广泛应用于机器人逆运动学求解中。通常,在使用神经网络求机器人的逆运动学解时,采用如下思路进行:通过正向运动学,得出关节空间Q对应的工作空间位姿T,从而得到学习样本中输入与输出关系T→Q。在这种学习样本获取方法中,无法准确地建立一组位姿对应多组逆解,而只能建立一组位姿对应一组逆解的训练方式,这会导致在存在逆运动学多解的区域用训练好的神经网络求解时得到的是一个折中的结果。
文献[9]提出在关节子空间下,使用6个子神经网络组成的多层感知结构,解决了平面二连杆机器人逆运动学多解问题。文献[10]使用三层BP神经网络,通过增加方位角作为输入参数,消除了输入-输出间的映射错误关系。虽然文献[9]和文献[10]提出了应用神经网络解决机器人逆运动学多解的方法,但是二者都是在工作空间为二维平面运动的机器人中实现的,都没有解决三维工作空间中逆运动学多解的问题。末端执行器在三维工作空间的逆运动学多解问题远比二维平面的复杂。文献[11]提出多神经网络结构的方式,求得了高精度的空间3R机械手的逆运动学完备解。
本文通过对空间3R机械手进行几何分析,确定了在关节空间中逆运动学多解的分布规律,根据该规律将关节空间划分为4个子空间,每个子空间用3个BP神经网络训练及求解,并在每个神经网络的输入中,增加绕Z轴旋转的矩阵元素作为特征参数;并进行了仿真验证。
1 三连杆机器人运动学分析
1.1 正向运动学模型
图1a所示是空间3R机械手,其中(p?x?,p?y?,p?z?)表示末端执行器的空间位置,关节1的轴线为铅垂方向且和关节2的轴线垂直,其交点与基座的距离为L?1;关节2和关节3的轴线水平且平行,距离为L?2;末端执行器与关节3轴线的距离为L?3。根据标准D-H坐标[12]建立图1b所示连杆坐标系,相应的连杆参数列于表1。其中,L?1=783 mm,L?2=702.5 mm,L?3=651 mm,α?1=π/2。根据表1所示连杆参数可求得其正向运动学方程为
(1)
(a)空间3R机械手
(b)D-H坐标系图1 空间3R机械手及其连杆坐标系Fig.1 Space 3R manipulator and its linkagecoordinate system
表1 空间3R机械手连杆参数
1.2 基于几何分析的关节子空间划分
(a)组合1
(b)组合2图2 观察视角Fig.2 Observation perspective
根据上述记法,将表1中的关节空间划分为表2中的4个子空间。
表2 关节子空间
1.3 特征参数
三连杆机械手的工作空间可以理解为二连杆形成的平面工作空间绕Z?轴旋转形成的三维图,因此,表2中的4个区域在Z?轴上的位置仍然有无穷多组解。参考文献[9]对接近点的描述可知,以ε?(ε?为最小正实数)为半径、Z?轴为旋转轴的邻域内,在用神经网络训练时也会存在映射错误。
假设每个区域的θ?1都平分成n?-1份,则每个区域对应的工作空间将由n?个平面组成,在第i?个平面中,末端执行器的位置都相同地增加一个绕Z?轴旋转θ?1i?的旋转矩阵R:
θ?1i?=arctan2p?y?,p?x?
(2)
R=rotzθ?1i?
(3)
式(2)用于Zone1和Zone2中时,每个平面只需选择一个满足p?y?>0,p?x?≠0的点即可;式(2)用于Zone3和Zone4中时,同样只需选择一个满足p?y?≤0,p?x?≠0的点即可。
2 BP神经网络及其MATLAB实现
2.1 BP神经网络的结构
BP神经网络具有多层结构,分别是输入层、一层或多层隐含层、输出层。各层神经元之间是全连接的,层内无连接。隐含层各神经元节点采用Sigmoid函数[13]作为激励函数。图3所示是一个三层的BP神经网络,其中阈值未画出。
图3 三层BP神经网络Fig.3 Three-layer BP neural network
图3中,输入层有M?个神经元,输入向量X=(x?1,x?2,…,x?M?)T;隐含层有I?个神经元;输出层有J?个神经元,输出向量Y=(y?1,y?2,…,y?J?)T;ω?mi?是输入层与隐含层之间的权值,ω?ij?是隐含层与输出层之间的权值,隐含层各神经元阈值为a?i?(i?=1,2,…,I?),输出层各神经元阈值为b?j?(j?=1,2,…,J?)。
根据图3可以得到网络的输出:
(4)
j?=1,2,…,J?
式中,f?(·)为隐含层的激励函数。
2.2 MATLAB神经网络工具箱
在MATLAB中可通过以下步骤训练BP神经网络[14]。
(1)创建前向神经网络:
net?=feedforwardnet?(hiddenSizes?,trainFcn?)
(5)
其中,hiddenSizes?表示隐含层的规模,列数表示隐含层数,每列的数值表示各隐含层神经元个数;trainFcn?是训练权值的算法,默认为“trainlm”,即LM算法(Levenberg-Marquadt算法)。LM算法将梯度下降法与高斯-牛顿法相结合,既有高斯-牛顿法的局部收敛性,又具有梯度下降法的全局特性[15]。
(2)参数设定。net?.trainParam?.epochs?为迭代最大轮数;net?.trainParam?.max_fail?为训练最大的失败次数,默认为6;net?.divideParam?.trainRatio?为训练样本占总样本百分比,默认75%;net?.divideParam?.valRatio?为校验样本占总样本百分比,默认15%;net?.divideParam?.testRatio?为测试样本占总样本百分比,默认15%。net?.trainParam?.goal?为目标误差。
(3)训练BP神经网络:
[net?,TR?]=train?(net?,Ptrain,Ttrain)
(6)
式中,Ptrain为训练样本的输入矩阵;Ttrain为训练样本的输出矩阵;TR?为记录训练的结果。
(4)预测数据:
Y=net?(Ttest)
(7)
式中,Y为网络预测结果;Ttest为需要预测的输入。
2.3 样本选取
采用以下方式得到训练样本,在Zonei?(i?=1,2,3,4)中,先将θ?j?(j?=1,2,3)平均分成M?θ?、I?θ?、H?θ?,然后将θ?j?进行组合,如图4所示。
图4 关节角的组合Fig.4 Combination of joint angle
Zonei?中的关节角组合均为M?θ?×I?θ?×H?θ?组,记为Qi?(i?=1,2,3,4)。
2.4 网络的输入输出
LM算法训练权值时,在每轮计算中均会存储一个M?×P?×N?(M?为输出神经元个数,P?为样本个数,N?为权值与阈值的总个数)的雅可比矩阵,雅可比矩阵的大小直接影响网络的训练速度。每个网络只用一个关节角作为输出与多个关节角作为输出相比,可以大大地提高训练速度,减小各网络的计算开支,加之LM算法具有收敛快、误差小的特点,从而使得每个网络可以在更短的训练时间内收敛。
2.5 预测效果评定
用θ?Pij?(i?=1,2,3;j?=1,2,…,N?)表示预测得到的关节角,θ?Tij?(i?=1,2,3;j?=1,2,…,N?)表示实际的关节角,(x?Tj?,y?Tj?,z?Tj?)表示实际位置,(x?Pj?,y?Pj?,z?Pj?)表示预测位置,其中i?是关节角序号,N?是测试样本数量。评价指标公式如下:
e?j?=θ?Tij?-θ?Pij?
(8)
(9)
式中,e?j?为预测的关节角与实际关节角间的误差;E?j?为实际笛卡儿坐标与预测笛卡儿坐标之间的绝对误差。
3 输入点区域识别及逆运动学求解
3.1 输入点的识别方法
由于在整个工作空间中,部分区域将不存在四组逆运动学解,在进行预测前,需要确定如何选用训练好的BP神经网络。本文使用投影识别方法确定输入点所在的工作子空间。
(1)工作子空间轮廓的投影方法。在OXY?平面中,边界条件为θ?1的取值范围;在OXZ?平面中,投影轮廓根据表1中各关节子空间取值范围代入式(1)得到,其中Zone1和Zone2的θ?1都取0°,Zone3和Zone4的θ?1都取π(或-π)。
(3)识别点的判据。若θ?在Zonei?的θ?1范围内,且在OXZ?的投影坐标也属于Zonei?的轮廓范围,则输入点属于Zonei?,其中有一条不符合则不属于Zonei?。
3.2 逆运动学求解
对每个工作子空间都建立一个区域识别器Recognition Unit,简写为RU?i?(i?=1,2,3,4),RU?i?与net?i?串联且每个net?i?中有3个子神经网络,分别为net?ij?(i?=1,2,3,4;j?=1,2,3)。当位置输入时,先通过每个识别器进行识别,符合其条件的,添加旋转4矩阵,再输入到与之对应的BP神经网络中求逆运动学解。
Zone1和Zone2中,p?y?>0的部分仍然用式(2)求θ?1i?,p?y?≤0的部分用式(10)求θ?1i?;Zone3和Zone4中,p?y?≤0的部分仍然用式(2)求θ?1i?,p?y?>0的部分用式(11)求θ?1i?。位于Z?轴上的点,以实际需要给予一个θ?1i?:
θ?1i?=π+arctan2p?y?,p?x?
(10)
或
θ?1i?=arctan2p?y?,p?x?-π
(11)
图5为逆运动学求解流程图,图中的net?i?均表示已训练好的BP神经网络。net?i?若是有输出,表示该点在相应的关节子空间有逆运动学解,net?i?没有输出,则表示该点在相应的关节子空间中没有对应的逆运动学解。输出Qi?的个数,表示存在逆向运动学解的组数。
图5 逆运动学求解流程Fig.5 Inverse kinematics solution flow
4 算例
4.1 BP神经网络的训练及结果分析
取2.3节的M?θ?=18,I?θ?=16,H?θ?=14,Zonei?均得到4 032组样本,使用MATLAB神经网络工具箱创建BP神经网络,篇幅所限,仅列出Zone1中net?1j?(1,2,3)的训练和求解结果进行分析。
每个神经网络的参数如下:net?11中,hiddenSizes?=[8,8,8];net?.trainParam?.epochs?=6 000;net?12中,hiddenSizes?=[13,12,10],net?.trainParam?.epochs?=6 000;net?13中,hiddenSizes?=[13,12,11],net?.trainParam?.epochs?=6 000。
每个BP神经网络中的样本均分为训练样本、校验样本、测试样本,各样本所占比例为2.2节中的默认值,net?.trainParam?.goal?均设为10-10,其余参数均设为默认值。
图6~图8所示分别为Zone1中BP神经网络的训练过程、测试样本中各关节角预测误差、测试样本中预测位置与实际位置间的绝对误差。
(a)net11训练及预测均方差
(b)net12训练及预测均方差
(c)net13训练及预测均方差图6 各BP神经网络的训练过程Fig.6 Training process of each BP neural network
在每个区域中虽然使用了3个BP神经网络训练,但是各区域内网络依次训练的时间之和均在30 min内,与文献[11]相比,网络训练的轮数或时间均大大减少。文献[11]中关节角预测误差分别为±0.06°,±0.15°,±0.05°,而本文的关节角误差分别为±0.002°,±0.05°,±0.02°,位置误差在0.04 mm内。通过对比,显然本文所用方法具有更快的收敛速度和更高的预测精度。
4.2 预测点的识别及其逆运动学求解结果
在工作空间中选3个点(表3)按图5的流程求逆运动学解,最终结果显示,P1有四组逆运动学解,P2在Zone1和Zone4中有逆运动学解,P3没有逆运动学解,说明P3不在工作空间内。表4为P1、P2分别用训练好的BP神经网络求得的逆运动学解和预测位置。
(a)关节1
(b)关节2
(c)关节3图7 各关节角预测误差Fig.7 Error of each joint angle prediction
图8 位置绝对误差Fig.8 Absolute error of position
Pipx(mm)py(mm)pz(mm)P13002001 700P2-834722600P3-100-100100
5 结论
(1)本文提出了一种基于几何分析的多模块神经网络求解空间3R机械手逆运动学多解的方法。
(2)进行了几何分析,将关节空间划分为4个只有唯一逆运动学解的子空间,对各子空间用3个BP神经网络进行训练和求解。仿真试验结果表明,该方法具有训练时间短、预测精度高的优点。
(3)对于已训练好的BP神经网络,可以通过输入点区域识别的方法进行选择。