机械臂关节空间轨迹的时间最优智能规划研究
2020-03-27蔡永超
蔡永超
(南阳农业职业学院,河南 南阳 473000)
1 引言
随着人工智能的发展和劳动力使用成本的上升,机械臂在工业中的应用越来越广泛。机械臂工作轨迹关系到自身安全、能量消耗、生产效率、生产精度等多个方面[1],因此设计合理的机械臂轨迹规划方法具有重要意义。
机械臂轨迹分为笛卡尔空间轨迹和关节空间轨迹,根据规划目标不同,可以将轨迹规划分为时间最优、能量最优、冲击最优、多目标规划等[2],研究的是关节空间轨迹的时间最优规划。根据规划要求不同,关节轨迹规划分为针对固定路径的规划和点对点规划,针对固定路径的规划是指给定笛卡尔空间路径,根据此固定路径规划出关节空间路径;点对点路径规划是指根据任务情况,设定机械臂必须经过的若干空间点。对于关节空间点对点的轨迹规划,当前已经产生一些研究成果,文献[3]使用粒子群算法和B样条曲线规划了机械臂轨迹,比初始值节省了2s左右;文献[4]使用布谷鸟算法对空间机械臂进行轨迹规划,提高了轨迹平滑性和稳定性;文献[5]使用5次非均匀有理B样条曲线作为关节轨迹,使用NSGA-II算法给出了Pareto前沿解。上述方法均在一定意义下取得了较优质高效轨迹,但仍存在两个方面的问题需深入研究:(1)点与点间轨迹使用的插值函数,即时间最优轨迹未必包含在当前所用插值方程的函数族中;(2)受优化算法性能影响,搜索到的轨迹多为次优轨迹而非最优轨迹。
针对机械臂关节空间轨迹的时间最优规划问题,建立了轨迹优化模型,使用三次样条曲线建立了轨迹基元模型,结合膜计算与粒子群算法,提出了膜计算-粒子群算法,将多种粒子群算法的优势融合在一起,达到了提高搜索精度和收敛速度的目的,将此算法应用于机械臂关节空间轨迹规划,减少了机械臂运行时间,提高了机械臂运行效率。
2 问题建模与轨迹基元
2.1 问题描述与建模
研究内容是机械臂关节空间点对点轨迹的时间最优规划问题。根据机械臂活动范围、任务需求和障碍物分布情况,制定机械臂工作过程中必须经过的若干笛卡尔空间位姿点P0,P1,P2,…,Pm,P0为起始位姿,Pm为终止点位姿,使用运动学逆解求得相应的关节空间点θ0,θ1,θ2,…,θm,θi={θij},j=1,2,…,n,n为机械臂关节角数量,然后使用插值函数依次经过关节空间点 θ0,θ1,θ2,…,θm。优化目标是通过确定到达各关节空间节点的时间t0,t1,…,tm,使机械臂在满足约束条件下使用最短时间依次经过各关节空间节点。记hi=ti+1-ti表示机械臂在节点θi与θi+1间使用的时间,则优化目标函数为:
机械臂轨迹规划的约束条件包括角速度约束、角加速度约束、冲击约束等,即:
式中:θj、θ—第j个关节角速度、角加速度、角加加速度;vjjmax、ajmax、Jjmax—第j个关节角速度、角加速度、角加加速度最大值。
通过式(1)~式(2)将机械臂点对点轨迹规划问题转化为带约束优化问题。为了解算出机械臂关节空间轨迹,仍有两个问题需要解决:一是给定点到点之间使用的轨迹基本单元(简称轨迹基元),二是对带约束优化问题进行求解。
2.2 轨迹基元
记关节 j角位移-时间序列为{(θ0j,t1),(θ1j,t2),…,(θmj,tm)},为保证机械臂平稳运行,要求机械臂轨迹至少二阶导数连续,使用三次样条曲线作为轨迹基元进行轨迹规划。使用θj(t)在ti处的二阶导数Aij构造θj(t)曲线,由于θj(t)在[ti,ti+1]上为三次函数,则其二阶导数为线形函数,即:
对式(3)进行两次积分,并使用边界条件θj(ti)=θij和θj(ti+1)=θi+1,j定出积分常数,得到θj(t)为:
只要求解出式(4)中 Aij,i=0,1,…,m 的值就能够唯一确定式(4)的表达式,即给出轨迹基元。
使用以下边界条件和导数连续性条件:
可以得到以下线形方程组:
式(6)中 λi、μi、di分别为:
式(6)中系数矩阵为严格对角占优矩阵,则式(6)中Aij具有唯一确定解,将Aij代入到式(4)中即可求出轨迹基元方程。
3 膜计算-粒子群算法
由前文可知,若想给出轨迹基元函数,必须已知关节角位移-时间序列{(θ0j,t1),(θ1j,t2),…,(θmj,tm)},其中关节角位移序列通过运动学逆解求得,对应的时间序列通过前文建立的带约束优化模型求解得到。优化问题求解包括下降类和演化类(也称启发搜索类)两类方法,两类方法各有优缺点,演化类方法具有强大的搜索能力,提出膜计算-粒子群算法(Membrane Computing-PSO,MCPSO)用于求解优化模型。
为了使机械臂依次经过轨迹型值点(即给定点),则机械臂各关节必须在同一时刻到达相应的关节角位置,即对于每个关节来讲,时间序列{t0,t1…,tm}必须完全一致。
3.1 膜间合作机制
为了改善基本粒子群算法在某方面的性能,文献[6]提出了适用于非线性多峰问题的中值引导粒子群算法(Median-oriented PSO,MPSO),文献[7]提出了解决复杂多模态问题的多作用力粒子群算法(Multi Force PSO,MFPSO),文献[8]提出了提高多峰问题搜索精度的两阶段作用力粒子群算法(Two-stage Force PSO,TFPSO)。为了将这些算法优势进行融合,融合膜计算思想,提出了膜计算-粒子群算法。其原理框架,如图1所示。从图中可以看出,算法由四个基本膜组成,膜内分别使用PSO、MPSO、MFPSO、TFPSO等算法进行搜索,膜间使用处理器进行算法淘汰、信息交流等。
图1 膜计算-粒子群算法Fig.1 Membrane Computing-Particle Swarm Algorithm
膜间合作机制主要包括算法淘汰机制和信息交流机制两个方面。算法淘汰机制为:算法在膜内各自进行搜索,每迭代10次将自身搜素到的最优值提供给处理器,四个膜内计算的目标函数值分别记为 Top1、Top2、Top3、Top4,按照约定,目标函数值越小则结果越优,处理器从 T1、T2、T3、T4挑选出最大值 Tmax,则对应的膜为此次评价最差膜,若连续3次被评价为最差膜,则此膜被其他膜吞并而被淘汰。吞并方法为:将被淘汰膜中较优的前1/3粒子去取代另外3个膜内靠后的粒子,尽量实现被淘汰膜内前1/3粒子在另外3内膜内的均分。
信息交流机制为:为了使算法较充分寻优后再进行信息交流,规定算法每迭代20次进行一次信息交流,每个基本膜将自身搜索到的前10个最优粒子传递给处理器,处理器将此40或30个(若某个膜被淘汰)粒子由优到差进行排序。而后对基本膜内算法的搜索能力进行评价并排序,使用当前粒子群的目标函数平均值和最优值Top进行评判,为:
基本膜内算法对应的ET越大说明算法搜索能力越差,将算法按照搜索能力进行排序,而后将粒子分配给基本膜,分配原则是较优粒子分配给较差算法以提升其粒子整体进化水平,具体操作方法为:最优粒子分配给最差算法、次优粒子分配给次差算法,如此按照基本膜数量为一个周期,进行循环分配直至分配结束,完成信息交流。
3.2 膜内更新机制
基本膜内算法按照自身的速度和位置更新方法进行更新,彼此之间相互独立。
膜1内为基本粒子群算法,速度和位置更新方法为[9-10]:
式中:ω—惯性权重;c1—自身学习因子;c2—群体学习因子;r1、r2—(0,1) 间的随机数;t—迭代次数;—第 i个粒子第d维迭代t次时的位置和速度—第i个粒子迭代t次时在第d维的历史最优位置—粒子群迭代t次时在第d维的种群最优位置。
膜2内为中值引导粒子群算法,为了提高全局搜索能力算法中引入了加速因子:
中值引导粒子群算法的速度和位置更新方法为:
膜3内为多作用力粒子群算法,速度和位置更新方法为:
式中:ω—惯性权重;cj、cg—学习因子;r1、r2、r3—(0,1)间的随机数;α、β、γ—前中后期搜索切换系数。定义两个切换因子t1、t2,当 t<t1为算法前期则 α=1,β=γ=0;当 t1≤t<t2为算法中期则β=1,α=γ=0;当 t≥t2为算法后期则 γ=1,α=β=0。B(i)为历史最优优于xtid的个体,W(i)为历史最优优于xtid的个体。
膜4内为两阶段作用力粒子群算法,速度和位置更新方法为:
式中:μ、θ—算法前后期切换系数,记算法进化停滞次数为lmax,当t<lmax时为算法前期,此时 μ=1、θ=0;当 t≥lmax时为算法后期,此时 μ=0、θ=1。
3.3 膜计算-粒子群算法流程
根据3.1节对膜间合作机制和3.2节对膜内更新机制的描述,制定膜计算-粒子群算法流程,如图2所示。
图2 膜计算-粒子群算法流程Fig.2 Membrane Computing-Particle Swarm Algorithm Flow
4 仿真验证与分析
对两个方面进行验证:(1)验证膜计算-粒子群算法的搜索能力和搜索速度;(2)验证膜计算-粒子群算法在机械臂轨迹规划中的性能。
4.1 膜计算-粒子群算法搜索能力测试
从常用于评价优化算法性能的Benchmark函数中随机选取两个作为测试函数,测试函数表达式为:
式中:n—测试函数的维度,且两个测试函数在定义域内的极值分别为:
膜计算-粒子群算法参数设置中,对于不同粒子群算法共同函数的参数则取同一值,对于非公共参数则各自取值。算法参数设置为:加速常数c1=c2=c3=cj=cg=1.5,惯性权重ω=0.5,最大迭代次数tmax=500,种群规模为C=48,切换因子t1=50、t2=350,算法进化停滞次数lmax=200,粒子维数为10。分别使用MPSO、MFPSO、TFPSO、MCPSO算法对测试函数最优值进行搜索,每种算法独立运行10次,各算法平均值优化结果随迭代次数的变化过程,如图3所示。从图3中可以看出,膜计算-粒子群算法对两种测试函数进行搜索时均具有最少的迭代次数和最高的寻优精度,统计四种算法10次独立搜索结果的最优值、平均值、标准差和寻优时间,结果如表1所示。从图3和表1中可以看出,膜计算-粒子群算法在测试函数定义域内搜索极值时具有最快的收敛速度和最高的搜索精度,另外膜计算-粒子群算法的寻优结果标准差最小,说明此算法性能最为稳定,每次都能够搜索到极优的结果。这是因为通过基本膜之间的淘汰机制和信息交流机制,将基本膜内各算法的优势融合在一起,使得膜计算-粒子群算法兼具各种算法的优势和长处,在对各类型测试函数寻优时都能够发挥极好的性能。
图3 不同算法对测试函数的优化过程Fig.3 Optimizing Process of Different Algorithm to Testing Function
表1 不同算法的寻优结果统计Tab.1 Optimizing Result Statistics of Different Algorithms
4.2 机械臂轨迹规划结果
以KLD-600多关节机械臂为仿真对象,对机械臂的3个关节进行时间最优轨迹规划,机械臂完成某种任务时的关节空间型值点,如表2所示。
表2 机械臂关节轨迹型值点Tab.2 Mechanical Arm Joint Space Trajectory Model Point
根据3个关节的运动能力和驱动能力,分别设定3个关节的约束条件。关节 1:v1max=100,a1max=45,J1max=60;关节 2:v2max=95,a2max=40,J2max=60;关节 3:v3max=100,a3max=75,J3max=55。依据表 1 中数据,选择性能靠前的多作用力粒子群算法与膜计算-粒子群算法进行比较。按照需优化的变量数,将粒子维度设置为7,算法其余参数与4.1节一致。两种算法搜索的目标函数值随迭代过程的变化,如图4所示。对应的粒子位置,如表3所示。
图4 两种粒子群算法的迭代过程Fig.4 Iteration Process of the Two PSO Algorithms
表3 两种粒子群算法的优化结果Tab.3 Optimizing Result of the Two PSO Algorithms
由表2中数据可知,使用膜计算-粒子群算法规划的轨迹耗时为14.412s,使用多作用力粒子群算法规划的轨迹耗时为17.869s,比MCPSO算法的轨迹耗时多23.99%,另外由图2可以看出,膜计算-粒子群算法迭代至55次时目标函数值不再下降,而多作用力粒子群算法迭代至150次时目标函数值收敛至局部最优,不再变化。可以明显看出,膜计算-粒子群算法在规划结果的质量和规划速度方面远远优于多作用力粒子群算法,这是因为膜计算-粒子群算法通过基本膜之间的算法淘汰和信息交流机制,有效将多种粒子群算法的优势融合在一起,使算法具有更强搜索能力和更快收敛速度。
使用膜计算-粒子群算法规划的机械臂关节空间轨迹及角速度,如图5所示。
图5 机械臂关节空间轨迹Fig.5 Mechanical Arm Joint Space Trajectory
从图5可以看出,膜计算-粒子群算法规划的关节空间轨迹及角速度曲线均非常平滑,且在约束范围内,可以应用于机械臂工作过程中。从关节角速度曲线可以看出,初始时刻和结束时刻的关节角速度均为0,满足边界约束条件。在图5(a)中,椭圆圈出的部分为机械臂关节角变化极为缓慢的过程,这是因为只有所有关节角同时达到型值点,才能够到达笛卡尔空间相应的节点,此时关节角变化缓慢是在等待其他关节角到达要求位置。综上所述,膜计算-粒子群算法规划的机械臂轨迹平滑且满足约束条件和边界条件,可以应用于机械臂工作过程中。
5 结论
针对机械臂关节空间轨迹的最优时间规划问题,建立了规划模型,提出了膜计算-粒子群算法进行求解,经过验证得到了以下结论:(1)膜计算-粒子群算法通过膜间算法淘汰和信息交流,融合了多算法优势,具有更快收敛速度和更高搜索精度;(2)将膜计算-粒子群算法应用于机械臂关节空间轨迹规划,降低了机械臂运行时间,提高了机械臂工作效率。