机器人逆运动学求解作为机器人离线编程、轨迹规划、控制算法设计等其他课题研究的基础,一直是机器人学中的一个经典问题,同样也是研究热点[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轴旋转的矩阵元素作为特征参数;并进行了仿真验证。
图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机械手连杆参数
Tab.1 Spatial 3R manipulator connecting rod parameters
连杆θidiaiαi1θ1L10α12θ20L203θ30L30
对于空间3R机械手,其后面两个连杆相当于平面二连杆,根据文献[9],平面内一点,二连杆机器人有两种到达途径。令θ?1为任意定值q?,只活动关节2和关节3时,三连杆机械手的工作空间为一个平面,取平面内一点E?(点E?的坐标以基坐标系为参考),末端执行器到达E?点的关节组合形式将有两种,组合1为θ?2∈0,2π,θ?3∈-π,0;组合2为θ?2∈0,2π,θ?3∈0,π。本文将观察视角始终固定在θ?1=q?时的平面的法向量方向上(图2),并将该平面法向量方向记为“k?1+”,此时观察由组合1得到的机械手空间形态,记为“k?1+,k?2+”,组合2的记为“k?1+,k?2-”。当时,与θ?1=q?的平面重合,但是法向量方向改变为“k?1-”,此时末端执行器到达点E?时,观察到的组合1变为“k?1-,k?2-”,组合2变为“k?1-,k?2+”。
(a)组合1
(b)组合2
图2 观察视角
Fig.2 Observation perspective
根据上述记法,将表1中的关节空间划分为表2中的4个子空间。
表2 关节子空间
Tab.2 Joint subspaces
区域θ1θ2θ3空间形态Zone1[0,165°][15°,165°][-135°,0]k1+,k2+Zone2[0,165°][15°,165°][0,135°]k1+,k2-Zone3[-165°,0][15°,165°][-135°,0]k1-,k2-Zone4[-165°,0][15°,165°][0,135°]k1-,k2+
三连杆机械手的工作空间可以理解为二连杆形成的平面工作空间绕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的点即可。
最终BP神经网络的输入由矩阵中的元素确定,其中P=p?x? p?y? p?z?T。
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?(·)为隐含层的激励函数。
在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为需要预测的输入。
采用以下方式得到训练样本,在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)。
将Qi?代入式(1)得到末端执行器的位置,并将结果代入式(2)、式(3),最终得到神经网络的训练样本,输入是矩阵R中每一列拼接在一起组成的行向量,θ?ij?(j?=1,2,3)作为训练样本的输出,即每个网络都是12个输入神经元,1个输出神经元。
LM算法训练权值时,在每轮计算中均会存储一个M?×P?×N?(M?为输出神经元个数,P?为样本个数,N?为权值与阈值的总个数)的雅可比矩阵,雅可比矩阵的大小直接影响网络的训练速度。每个网络只用一个关节角作为输出与多个关节角作为输出相比,可以大大地提高训练速度,减小各网络的计算开支,加之LM算法具有收敛快、误差小的特点,从而使得每个网络可以在更短的训练时间内收敛。
用θ?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?为实际笛卡儿坐标与预测笛卡儿坐标之间的绝对误差。
由于在整个工作空间中,部分区域将不存在四组逆运动学解,在进行预测前,需要确定如何选用训练好的BP神经网络。本文使用投影识别方法确定输入点所在的工作子空间。
(1)工作子空间轮廓的投影方法。在OXY?平面中,边界条件为θ?1的取值范围;在OXZ?平面中,投影轮廓根据表1中各关节子空间取值范围代入式(1)得到,其中Zone1和Zone2的θ?1都取0°,Zone3和Zone4的θ?1都取π(或-π)。
(2)识别点的投影方法。先垂直投影至OXY?平面,投影点坐标为(p?x?,p?y?),投影角度为θ?=arctan2(p?y?,p?x?);再绕Z?轴顺时针旋转θ?投影至OXZ?平面,若p?y?>0,投影后的坐标为若p?y?<0,投影后的坐标为若p?y?=0,投影后的坐标为p?x?,p?z?。
(3)识别点的判据。若θ?在Zonei?的θ?1范围内,且在OXZ?的投影坐标也属于Zonei?的轮廓范围,则输入点属于Zonei?,其中有一条不符合则不属于Zonei?。
(4)输入点识别步骤如下:①根据筛选出在工作空间极限作业半径内的输入点;②在步骤①得到的点中,筛选出投影点符合在OXY?平面内轮廓的输入点;③在步骤②得到的点中,筛选出投影点符合在OXZ?平面内轮廓的输入点;④判断输入点所属区域。
对每个工作子空间都建立一个区域识别器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
取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内。通过对比,显然本文所用方法具有更快的收敛速度和更高的预测精度。
在工作空间中选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
表3 预测点
Tab.3 Prediction points
Pipx(mm)py(mm)pz(mm)P13002001 700P2-834722600P3-100-100100
表4 机械手两个工作位置的逆运动学多解
Tab.4 Inverse kinematics multiple solutions for twoworking positions of a robot
PiZonei预测角度(°)预测位置(mm)P1Zone1(33.70,109.80,-86.64)(300.04,200.03,1 700.00)Zone2(33.69,27.27,86.64)(299.95,199.96,1 700.02)Zone3(-146.31,152.73,-86.64)(299.97,199.99,1 700.01)Zone4(-146.31,70.20,86.64)(299.99,200.00,1 700.00)P2Zone1(139.12,23.42,-68.65)(-834.02,722.02,600.16)Zone4(-40.88,156.58,68.65)(-833.99,-722.00,599.97)
(1)本文提出了一种基于几何分析的多模块神经网络求解空间3R机械手逆运动学多解的方法。
(2)进行了几何分析,将关节空间划分为4个只有唯一逆运动学解的子空间,对各子空间用3个BP神经网络进行训练和求解。仿真试验结果表明,该方法具有训练时间短、预测精度高的优点。
(3)对于已训练好的BP神经网络,可以通过输入点区域识别的方法进行选择。
[1] 熊超,张鹏超,冯博琳,等.基于并行RBF神经网络的机器人逆运动求解[J].组合机床与自动化加工术,2017(10):34-36.
XIONG Chao, ZHANG Pengchao, FENG Bolin, et al. Solution to Inverse Kinematics of Robot Based on Parallel RBF Neural Networks[J]. Combined Machine Tool and Automatic Machining,2017(10):34-36.
[2] 姜宏超,刘士荣,张波涛.六自由度模块化机械臂的逆运动学分析[J].浙江大学学报(工学版),2010,44(7):1348-1354.
JIANG Hongchao, LIU Shirong, ZHANG Botao. Inverse Kinematics Analysis for 6 Degree-of-freedom Modular Manipulator[J]. Journal of Zhejiang University (Engineering Edition) ,2010,44(7):1348-1354.
[3] 王英石. 冗余机器人的运动学及轨迹规划的研究[D].天津:南开大学,2014.
WANG Yingshi .Research on the Kinematics and Trajectory Planning of Redundant Roborts[D].Tianjin: Nankai University,2014.
[4] 房立金,高瑞.一般6R机器人逆运动学算法的改进[J].机械科学与技术, 2018(9):1325-1330.
FANG Lijin, GAO Rui. Modified Inverse Kinematics Algorithm for General 6-DOF Robots[J].Mechanical Science and Technology, 2018(9):1325-1330.
[5] PEIPER D L.The Kinematics of Manipulators under Computer Control[D]. California:Stanford University,1968.
[6] DUFFY J. Analysis of Mechanisms and Robot Manipulators[M]. London:Edward Arnold,1980:369-409.
[7] 王俊龙,张国良,敬斌,等.一种新的六自由度机械臂运动学反解方法研究[J].计算机工程与应用,2013,49(22):266-270.
WANG Junlong, ZHANG Guoliang, JING Bin, et al. Research on Way of Inverse Kinematic Solution of Six DOF Manipulator[J]. Computer Engineering and Applications, 2013, 49(22):266-270.
[8] 林阳,赵欢,丁汉.基于多种群遗传算法的一般机器人逆运动学求解[J].机械工程学报,2017,53(3):1-8.
LIN Yang, ZHAO Huan, DING Han. Solution of Inverse Kinematics for General Robot Manipulators Based on Multiple Population Genetic Algorithm[J]. Journal of Mechanical Engineering, 2017,53(3):1-8.
[9] DAYA B, KHAWANDI S, AKOUM M. Applying Neural Network Architecture for Inverse Kinematics Problem in Robotics[J]. Journal of Software Engineering and Applications, 2010, 3(3): 230-239.
[10] DUKA A V. Neural Network Based Inverse Kinematics Solution for Trajectory Tracking of a Robotic Arm[J]. Procedia Technology, 2014, 12: 20-27.
[11] RAHEEM F A, KAREEM A R, HUMAIDI A J. Inverse Kinematics Solution of Robot Manipulator End-effector Position Using Multi-neural Networks[J]. Engineering and Technology Journal, 2016, 34: 1360-1368.
[12] 宋孟军,张明路,张建华.一种新型移动机器人运动学坐标系快速构建方法研究[J].中国机械工程,2011,22(17):2017-2021.
SONG Mengjun, ZHANG Minglu,ZHANG Jianhua. Research on Rapid Construction Method of Kinematics Coordinate System from a New Kind of Mobile Robot[J]. China Mechanical Engineering, 2011,22(17): 2017-2021.
[13] 张尧. 激活函数导向的RNN算法优化[D].杭州:浙江大学,2017.
ZHANG Yao. Activation Function Awareness of RNN Algorithm Optimization[D]. Hanghzou:Zhejiang University,2017.
[14] 陈明. MATLAB神经网络原理与实例精解[M]. 北京:清华大学出版社, 2013:10-173.
CHEN Ming.Theory and Example of Neural Network on MATLAB[M]. Beijing:Tsinghua University Press, 2013:10-173.
[15] 张峤,邓贵仕.Levenberg-Marquardt神经网络在煤矿作业人员人因可靠性评价中应用研究[J].大连理工大学学报,2015,55(4):424-430.
ZHANG Qiao, DENG Guishi. Investigation on Application of Levenberg-Marquadt Neural Networks to Human Reliability Evaluation of Coalmine Workers[J]. Journal of Dalian University of Technology, 2015,55(4):424-430.