中车大连机车研究所有限公司,辽宁大连,116000
摘要:针对机械臂轨迹规划时各个关节运动控制不光滑,本文选用IRB120机械臂对该模行末端执行器进行运动规划。首先建立机械臂连杆坐标系并得到D-H参数,并运用Matlab Robotics toolbox工具箱建立机械臂模型,分析机械臂从初始位姿到目标位姿时机械臂的角位移情况。借助MATLAB中的神经网络工具箱设计RBF神经网络,利用六个关节的角位移量训练RBF神经网络。仿真结果表明,采用RBF神经网络优化得到的角位移为平滑曲线。
1 机械臂数学模型的建立
本文选用IRB120机械臂作为研究对象,结构设计紧凑,重量仅25公斤,该机械臂有6个自由度,最高荷重3公斤,最大工作半径58cm。结构主要由基座、大臂、小臂及6个关节组成,并采用改进D-H方法建立机械臂各个关节坐标系,可直观看出各个轴之间的关系。
相邻连杆间的参数如图2所示,为连杆长度,指的是沿轴,轴线轴到轴线轴的距离。为连杆扭转角,轴绕着轴线轴到轴之间的夹角。为连杆偏距,指的是沿轴线轴,轴到轴的距离。为关节角,轴绕着轴线轴到轴之间的夹角。
图2 连杆参数和坐标系示意图
由四个连杆参数ai-1,αi-1,θi,di完整地描述相邻两个连杆之间的相对关系,从而得到坐标系i相对于坐标系i-1的变换矩阵:
由机械臂连杆坐标系,可作出各关节的连杆长度和连杆距离,即机械臂改进D-H参数如图表1所示。
表1 机械臂D-H参数
Link i | di | ai-1 | αi-1 | θi |
1 | 399.1 | 0 | 0 | θ1 |
2 | 0 | 0 | -π/2 | θ2 |
3 | 0 | 448 | 0 | θ3 |
4 | 451 | 42 | -π/2 | θ4 |
5 | 0 | 0 | π/2 | θ5 |
6 | 82 | 0 | -π/2 | θ6 |
以机器人工具箱Robotics Toolbox为基础,调用工具箱内置函数link和函数Serialink建立机械臂模型,并调用teach函数生成可调节六关节角度的变量。程序如下:
L1 = Link([0 399.1 0 0],'modified');
L2 = Link([0 0 0 -pi/2],'modified');
L3 = Link([0 0 448 0],'modified');
L4 = Link([0 451 42 -pi/2],'modified');
L5 = Link([0 0 0 pi/2],'modified');
L6 = Link([0 82 0 -pi/2],'modified');
robot = SerialLink([L1,L2,L3,L4,L5,L6]);
robot.name = 'IRB120';
robot.teach()
其中L=Link()表示创建连杆,robot=SerialLink([L1,L2,L3,L4,L5,L6])表示连杆相连。
在MATLAB中机器人工具箱Robotics Toolbox中运行上述程序可得到如图3所示IRB120机械臂模型图和交互界面。
图3 机械臂模型和交互界面
2 RBF神经网络优化轨迹
2.1 RBF神经网络模型
RBF神经网络即径向基函数网络(Radial basis function network,缩写为:RBF network)是一种使用径向基函数作为激活函数的人工神经网络。RBF神经网络模型如图4所示,输入层不能处理信息,只负责将激励传递给隐含层,从输入层传递到隐含层的信息变化呈现的是非线性。其中隐含层引用高斯函数对接收过来的信号进行恰当处理,隐含层到输出层的信息变换呈现的是线性。输出层是基于线性组合来响应输入信号。其中隐含层髙斯函数的输入是权值和输入之间的距离乘以阈值决定的。
RBF神经网络中的隐含层是通过传递函数对外部接收到的激励信号作出响应。高斯函数是中心点径向对称衰减的非线性函数,其形式为:
i=1,2, ..., n
上式中x代表网络的激励,ci代表隐含层基函数的中心,代表作用函数到中心点的距离,n代表隐含层节点的个数,代表输入与基函数中心的距离。R(x)是局部分布的中心点径向对称衰减的非线性函数,在基函数中心Ci处输入信号的响应达到最大,当输入远离基函数中心时,传递函数会快速衰减到零。对于给定的输入x∈Rn,只有靠近基函数中心才能被激活。如图5所示直观描述基函数,其中横轴就是到中心的距离是用半径r来表示,当距离等于0时,径向基函数则等于1,距离越远则衰减越快,选择性就会越好。RBF神经网络激励与响应之间的关系如下:
k=1,2..p
上式中p代表输出层的神经元个数,代表第i个隐含层神经元到第k个输出层神经元的权值。
图 5 基函数图像
3.2设计RBF神经网络
选择网络参数。设计的RBF神经网络是三层简单的前馈型网络。首先需要确定网络参数,包括权值、学习速度、误差以及网络每层的节点个数。在网络中,其隐层节点数与输入层的节点数相等。一般网络参数的选择在传递函数激活区间[-1 1]的随机数,使线性组合输出更接近期望值。
选取隐含层传递函数。隐含层到输出层呈线性变化,它会通过传递函数对输入信号进行相应。由于高斯函数是非负的局部分布中心对称衰减的非线性函数,通常在隐含层用来作为传递函数。
归一化输入输出量。完成上述两项工作后,需要对激励和响应数据进行归一化处理,通常转换为[0 1]上的数据。处理完之后,神经网络的训练过程会变得非常容易。
RBF神经网络训练。训练之前需要确定的参数有:隐层节点的基函数中心宽度和其到输出节点相应的权值。确定参数的方法有:根据经验确定基函数宽度和中心,再根据最小二乘法确定权值。通过给定样本数据进行训练,用输出层总响应得到的结果误差不断校正这三个参数。对于网络中其他的参数,可采用梯度下降法来进行修正。确定网络参数时,其中模糊K均值聚类法是最广泛的方法。在确定基函数中心和宽度后,用局部梯度下降的方法,来修正网络中的权值。
4 仿真分析
根据机械臂末端姿态求解逆运动学的值,来分析各关节角位移的情况,然后根据拟合出的光滑角位移求解机械臂的正向运动学,进而驱动机械臂,可实现机械臂末端设定的轨迹进行运动。给机械臂设定的初始位姿各关节角度值(0 0 0 0 0 0),目标位姿各关节角度值(pi/4 -pi/3 pi/5 pi/2 -pi/4 pi/6)。
查看机械臂初始位姿到目标位姿的末端轨迹线,并根据逆运动查看机械臂该过程中的各关节角位移,可见机械臂有两个关节角位移在起初阶段并不稳定。针对现状并由RBF改变现状使角位移曲线变成光滑,使机械臂运动更流畅。
RBF神经网络设置,在MATLAB软件中直接使用newrbe()函数设置,调用格式是Net=newrbe(P,T,GOAL,SPREAD,MN,DF),其中P和T分别代表输入矢量和目标矢量;GOAL代表设定误差;SPREAD代表扩展常数,相当于σ;MN代表最大神经元数目;DF代表迭代过程中显示的频率。程序如下:
T0 = robot.fkine(init_ang);
T1 = robot.fkine(targ_ang);
Tc = ctraj(T0,T1,step);
Q=robot.ikine(Tc);
t=1:1:50;
T1=Q';
Net=newrb(t,T1,0.001,7,8,1);
i=1:1:50;
robot=sim(Net,i);
plot(i,robot)
首先训练神经网络使精度达到设定值0.001,所示4.6步左右达到了训练精度,使用训练好的神经网络,用它来拟合训练机械臂六个关节角度,训练后的结果如,可见RBF神经网络使机械臂各关节的角位移曲线趋于光滑,从而使机械臂正运动学根据拟合关节角度求出末端的轨迹趋于稳定,验证了RBF算法优化机器人轨迹的有效性。
5 结论
本文通过仿真研究机械臂逆运动学求解得机械臂各关节的角度,结果得知机械臂关节角位移曲线呈现不光滑。借助MATLAB中神经网络工具箱,设计好的神经网络使与机械臂逆运动学求出的各关节角位移拟合,使机械臂各关节运动更加光滑。通过实验验证了RBF的有效性,对未来机械臂高精度轨迹规划奠定了基础。