石宪闪, 苗鸿宾, 张伟
(中北大学机械工程学院,山西太原 030051)
随着社会的迅猛发展,工业生产逐渐走向智能化,机械臂已经成为改善生产力结构、提高生产力的有力工具。六自由度机械臂拥有极高的灵活性,能够完成抓取、搬运、打磨等简单或复杂的动作。随着工业机器人的快速发展,其应用范围已经扩大到了医疗卫生、航空制造、国防科技、民生服务等领域,是工业发展面向智能化未来不可缺少的重要环节。轨迹规划是机械臂轨迹控制的基础[1],而时间最优轨迹规划关系到是否满足企业生产对时间的限制和要求以及机械臂的作业效率[2],所以也是轨迹规划问题中最热门的研究点。针对机械臂轨迹规划问题的研究有很多,代瑞恒等[3]通过引入正态分布概率密度函数改进量子遗传算法,对关节运动轨迹进行最短时间优化;ZHAO等[4]提出了一种改进的鲸鱼优化算法来解决时间抖动最优轨迹规划问题,机器人的轨迹由关节空间的五次B样条插值构造,代价函数由时间和平均加加速度构成;普亚松等[5]针对工业机器人关节运动规划存在的问题,提出一种三次多项式与四次多项式混合规划方法,提高机器人的使用性能和寿命。
基于上述内容,作者在4-3-4混合多项式插值函数的基础上结合改进粒子群算法对六自由度串联机械臂进行时间最优轨迹规划,通过引入自适应惯性权重和非线性学习因子,解决传统粒子群算法收敛速度慢、迭代寻优差的问题,保证全局搜索和局部探索能力的平衡。通过MATLAB仿真实验验证该方法的有效性和优越性。
文中所用实验机械臂为广州巨轮智能公司生产的JL8-600型串联机械臂[见图1(a)],该机械臂由6个转动关节组成,结构精巧,适用于智能制造与自动化生产,因此用于文中实验十分合适。
完备性、参数最少化和连续性是机械臂运动学模型需要保证的条件[6]。因此采用D-H参数法进行运动学建模,该方法只需要θi(关节转角)、di(连杆偏移)、ai-1(连杆长度)、αi-1(连杆扭转角)4个运动学参数就能表征机械臂关节,各关节D-H坐标系见图1(b),具体D-H参数如表1所示。
图1 JL8型机械臂(a)及其D-H坐标系(b)Fig.1 JL8 manipulator (a) and its D-H coordinate system(b)
表1 JL8-600型串联机械臂D-H参数Tab.1 D-H parameter of JL8-600 serial manipulator
多项式插值的方法能够确保机械臂在轨迹规划中位移、速度、加速度在相关时间内连续可控[7],利用多项式函数设置随时间变化的路径点,以逐步靠近或内插确定开始位置到目标位置之间的路径[8]。在函数构造的过程中,低阶插值函数不能保证加速度曲线平滑、连续,会产生冲击;高阶插值函数虽能保证平滑、连续,但是比较难求且凸包性差[9]。因此文中采用4-3-4次混合多项式函数,其中在第一、三段采用4次多项式插值函数,第二段采用3次多项式插值函数。
4-3-4混合多项式插值函数为
(1)
其中:hi1(t、hi2(t、hi3(t分别为第i个关节第一、第二、第三时间段的轨迹函数,i=1,2,3,…,6;ai1j、ai2j、ai3j分别为第i个关节轨迹第1、2、3段多项式插值的第j个系数。
根据混合多项式的约束条件,可以求出多项式中的未知系数a,根据约束条件和约束边界可以列出矩阵A,由矩阵表达式可以看出约束条件和约束边界只与时间t有关,具体推导过程如式(2)—式(4) 所示:
(2)
(3)
(4)
粒子群算法(Particle Swarm Optimization,PSO)是一种模拟鸟类觅食过程中群体活动规律的全局搜索算法[10]。在PSO中,把待求解问题解区域视为鸟类搜寻区域,问题的解就是粒子在搜索区域中的位置,每个粒子都有独自的位置和速度,来确定它们的当前位置、飞行方向和距离,并且都通过适应度的变化来不断寻找最优位置。
粒子速度和位置更新公式为
(5)
(6)
式中:w为惯性权重;i为粒子;k为迭代次数;c1、c2为学习因子;r1、r2为[0,1]中随机数;xid为粒子的位置;vid为粒子的速度;pid为粒子个体最优位置;pgd为粒子群体最优位置。
传统粒子群算法由于惯性权重w和学习因子c1、c2等参数固定,在迭代求解过程中有时候会出现收敛速度慢、陷入局部最优陷阱、寻优能力弱的问题[11],造成全局搜索和局部探索能力的失衡,因此文中通过引入自适应惯性权重和非线性学习因子来优化改进粒子群算法。
惯性权重是粒子群算法中调节全局搜索与局部搜索能力平衡的重要参数[12],通过调整其取值可有效地对搜索区域的大小进行相应的控制。当权重较大时,算法搜索全局的能力就会得到加强,相反当权重较小时,得到增强的就是算法的局部搜索能力。但由于传统粒子群算法惯性权重的调整只是随迭代次数的变化单纯地减小或递增,无法及时满足算法在搜索过程中的变化需求[13],因此文中提出一种自适应惯性权重,它能根据搜索过程的各个阶段采用相应大小的权重,即在搜索迭代早期,惯性权重较大,有利于保证算法的全局寻优效果;搜索迭代后期,惯性权重较小[14],有利于跳出局部最优陷阱,保持粒子群多样性。
其表达式如下:
w=wmax-(wmax-wmin)[1-e-(2k/Kmax)3]
(7)
式中:wmax、wmin分别为w的最大值和最小值;k、Kmax分别为迭代次数的当前值和最大值。
传统粒子群算法的学习因子c1、c2是固定值,这样会影响到算法的寻优速度和求解精度[15]。文中引入非线性学习因子。由式(5)可知:学习因子c1影响粒子“自我认知”能力,应随着搜索迭代次数增加而逐渐衰减;学习因子c2影响粒子“社会认知”能力,应随着搜索迭代次数增加而逐渐增大。因此改进之后的算法在搜索寻优前期c1>c2保证了粒子在初期充满整个解区域且不会陷入局部极值,而在搜索迭代的后期c1 具体表达式如下: (8) 式中:k为当前迭代次数;Kmax为最大迭代次数。 在机械臂时间最优轨迹规划中恰当的时间间隔是确保规划成功的重点[17],先对机械臂各个关节进行时间优化,挑选插值时间间隔的最大值,以确保机械臂所有关节都能同步运动起来并达到某一点,当然机械臂同时需要满足运动学约束,文中旨在提高机械臂工作效率和保证其平稳运行的前提下,机械臂所有关节运动的时间最短。第i个关节的适应度函数及运动约束为 (9) 式中:vij为第i个关节的速度的实际值;vijmax为第i个关节的速度的最大值。 改进粒子群算法的机械臂规划流程如图2所示。 图2 改进粒子群算法的机械臂规划流程 为验证改进粒子群算法在机械臂轨迹规划中的有效性和优劣性,文中以JL8-600型串联机械臂为实验对象,在MATLAB中进行仿真实验,对机械臂在笛卡尔空间中进行轨迹规划,确定机械臂末端经过的4个路径节点,再通过逆运动学将它转换为关节空间中各关节对应的角度值如表2所示。 表2 各关节角度值 单位:rad 在MATLAB中将改进粒子群算法与传统粒子群算法进行对比仿真验证,粒子群算法初始参数设置为:初始粒子种群规模n为20,惯性权重wmax为0.9,wmin为0.4,学习因子c1、c2的大小在0.02~0.05之间,3个阶段时间的初始值大小都是1.5 s,最大迭代次数Kmax为100。得到目标函数适应度变化曲线对比如图3所示。 图3 适应度曲线变化Fig.3 Comparison of fitness curves change 通过图3可以看出:改进粒子群算法在第26次迭代之后收敛达到稳定,比传统粒子群算法第48次迭代要提前46%收敛,可知改进粒子群算法在收敛速度上得到了极大的提升,且改进粒子群算法的适应度大小比传统粒子群算法的要小38%,能够更快达到全局最优,得到更好的寻优效果。对比适应度变化规律能够证明改进的粒子群算法胜于原始算法。 结合4-3-4混合多项式插值函数,改进后的粒子群算法对机械臂进行以时间为目标的最优轨迹规划,以JL8-600型串联机械臂的关节1为例,得到关节1在3段插值时间的迭代变化过程如图4所示。对其余5个关节采取相同方法规划,得到所有关节在各个阶段的最优运行时间如表3所示。同时也可得到经过优化后的各关节角位移、角速度以及角加速度的变化曲线分别如图5—图7所示。 图4 关节1最优粒子位置迭代Fig.4 Position iterative with optimal particle of joint 1 表3 各关节最优运行时间 单位:s 图5 各关节角位移变化曲线Fig.5 Angular displacement curves of each joint 图6 各关节角速度变化曲线Fig.6 Curves of angular velocity of each joint 图7 各关节角加速度变化曲线Fig.7 Curves of angular acceleration of each joint 为了保证机械臂关节平稳的运行,各关节的运动应保持时间同步,可取表3中关节最优运行时间的最大值,这3个阶段时间分别为 0.934 0、1.092 3、0.843 4 s,相加起来总时间为2.869 7 s,与优化前初始值相比减少了1.630 3 s,时间上缩短大约36%,证明改进粒子群算法对提升机械臂的工作效率,优化工作时间是有效的。 由图5—图7可以发现:机械臂各关节的角位移、角速度和角加速度变化曲线平滑无突变,并且整个变化过程保持在一个比较理想的连续性的区间之内,有效地证明了该轨迹规划算法在保证机械臂正常平稳运行的同时缩短了机械臂末端的运行时间,进一步验证了其对机械臂进行时间最优轨迹规划的可靠性。 文中以六自由度串联机械臂为研究对象,在4-3-4混合多项式插值函数的基础上,结合改进粒子群算法进行时间最优轨迹规划,通过仿真实验得到以下结论: (1)采用4-3-4混合多项式插值函数,有效地解决了在函数构造过程中低阶插值函数曲线不平滑、高阶插值函数比较难求且凸包性差的问题。 (2)通过引入自适应惯性权重和非线性学习因子,避免了传统粒子群算法收敛速度慢、易陷入局部最优陷阱的问题,保证了全局开发和局部开采能力的平衡。 (3)以缩短轨迹规划时间为预期目标,实验结果证明轨迹规划时间缩短了36%,且整个变化过程保持在一个比较理想的连续性的区间之内,验证了该轨迹规划算法对机械臂进行时间最优轨迹规划的可靠性。3.3 轨迹规划目标问题描述
4 仿真实验结果与分析
5 结论