基于改进萤火虫算法的冗余机器人轨迹规划
2019-12-26郑雪芳
郑雪芳,林 意
(1.江苏信息职业技术学院 电子信息工程学院,江苏 无锡 214153;2.江南大学 数字媒体学院,江苏 无锡 214122)
0 引言
随着机器人技术、人工智能、传感器技术、电子信息技术的发展,工业机器人在智能装备制造领域发挥着越来越重要的作用。传统的工业机器人已无法满足更为精细、更为复杂的任务需求。作为一种拟人机械臂,冗余机器人具有较好的自运动特性,便于处理力矩优化、避关节极限等问题,从而能更好地适应复杂工况[1-3]。冗余机器人应用的难点之一为如何通过轨迹规划选择一组合适的关节角完成特定的操作任务,并计及位置跟踪精度、关节角位移与角速度等指标[4]。
据现有文献报道,冗余机器人轨迹规划的方法主要有数值迭代法[5]、几何法[6]及代数解法[7]。其中,数值迭代法将机器人逆运动学问题转换成函数优化问题,采用人工智能算法进行优化计算,该方法操作简单,但运算量大、速度慢。例如,Luo等[8]利用免疫遗传算法的寻优优势较好地获得了冗余机器人在汽车引擎盖焊接时的预期路径。其次,几何法通过推导末端执行器位姿与各关节角的关系,获得特定条件下的解析解,具有计算速度快,解算精度高的优点,但数学建模过程繁锁。针对一类具有广泛适用性的七自由度冗余机器人,陈鹏等[9]提出了基于逆运动学的几何法,在仿真环境中实现了不错的轨迹规划效果。最后,代数解法采用雅克比矩阵及其变形求解关节速度与末端执行器线速度及角速度之间的微分关系,常见策略的有闭环伪逆法(Closed-loop pseudoinverse,CLP)、梯度下降法等,但求解过程中的累计误差会影响轨迹跟踪的精度。考虑到代数解法通用性好、便于实时控制,本文拟采用该方法对冗余机器人实行轨迹规划。
针对上述问题,本文提出采用改进的萤火虫算法(Improved Glowworm Swarm Algorithm,IGSO)来改进CLP法的性能,进而解决冗余机器人的轨迹规划问题。另外,笔者采用广义反向学习策略(Generalized Orientation Learning Strategies,GOBL)来提高原算法的收敛速度与鲁棒性,并使算法能够跳出局部最优的束缚。最后,以模块化肩腕关节偏置的SRS结构的冗余机器人为对象,在Matlab仿真环境下对基于IGSO算法的CLP法在轨迹规划上的有效性进行了验证。
1 问题描述
1.1 运动学与动力学
假设冗余机器人有n个自由度,其关节变量为q=[q1,q2,…,qn]T;操作空间变量的数目为m,且m x=f(q) (1) 对式(1)求关于时间的导数,可得微分运动学方程为: (2) 利用式(2)可以反求出关节速度[11],即: (3) 其中,J+为雅克比矩阵的广义逆。其解可使关节速度的模取得局部最小值。 进而,对于n自由度冗余机器人,其动力学方程可描述为[12]: (4) 对于冗余机器人任务空间内的轨迹规划,其实质就是在末端执行器的起始点与目标点之间找出一条光滑可行的路径。 在CLP法中,关节角可通过对下式积分计算获得[13]: Δq=J+(q)(xref-x) (5) 其中,xref为操作空间中末端执行器位姿的参考值。根据文献[13]研究可知CLP法在积分时容易产生累积误差而导致逆解误差增大。因此,本文拟引入IGSO算法来提升CLP法的性能,更好地解决冗余机器人的轨迹规划问题。 在本文研究的冗余机器人轨迹规划问题中,考虑了4种约束条件,即: (1)通过目标函数f1使得时域内前后两关节的最大关节变化最小化,即: f1=max{[qn(k+1)-qn(k)]2} (6) (2)通过目标函数f2使得时域内前后两关节的关节角速度的平方和最小,即: (7) (3)通过目标函数f3使得时域内前后两关节的关节角加速度的平方和最小,即: (8) (4)通过目标函数f4使得时域内前后两关节的关节力矩的平方和最小,即: (9) 假设冗余机器人末端执行器的当前位置为Pc=(xc,yc,zc),目标位置为Pf=(xf,yf,zf),则位置误差Pe为: (10) 因此,冗余机器人轨迹规划中的总目标函数为: Fi=αPe+(1-α)fi,i=1,2,3,4 (11) 在本文中,α=0.5。 在GSO算法中[14],每只萤火虫个体i的位置xi(t)用一个目标函数f(xi(t))评价,即机械臂轨迹规划问题可转换为求目标函数的最小值问题。算法的详细步骤描述如下: 步骤1:个体初始化。GSO算法通过式(12)随机获得萤火虫i(i=1,…,M)的位置,即: xi(t)=xL+rand(0,1)·(xU-xL) (12) 式中,M为种群规模,rand为随机函数,xU与xL分别为待搜索空间的阈值。 步骤2:决策域更新。每个萤火虫根据决策域大小向其领域内其他同伴传递信息。决策域范围根据式(13)更新,即: (13) (14) 式中,li(t)当期个体的荧光素值,xj(t)和lj(t)分别为邻域个体j的位置和荧光素值。 步骤3:位置更新。若邻域个体的荧光素值大于当前个体,则种群向邻域个体移动。萤火虫i向萤火虫j移动的概率为: (15) 其中,萤火虫i的位置根据下式更新: (16) 式中,s为移动步长。 步骤4:荧光素更新。荧光素值的大小取决于目标函数f(xi(t))的值,其更新公式为: li(t)=(1-ρ)li(t-1)+γf(xi(t)) (17) 式中,ρ∈(0,1)为荧光素挥发值,γ为荧光素更新速度。 步骤5:跳出循环条件。萤火虫i更新位置与荧光素值,直到算法迭代次数达到Tmax,记录并输出最优解。 本文采用Wang[15]提出的广义反向学习机制(Generalized opposite learning mechanism,GOLM)来克服传统GSO算法中全局开采能力不足和容易陷入局部最优值的问题。GOLM的思想是对于任意一个可行解,计算并评价其反向解,再从中选择较优解作为下一代个体。例如,在M维搜索空间中,xi为可行解,那么利用GOLM定义其反向解为: (18) 在萤火虫位置更新时,考虑到位置解的有界性xi∈[xL,xU],令Δ=k(xU-xL),则改进算法中的GOLM搜索策略定义如下: (19) 式中,k为0~1之间的随机数。 通常冗余机器人的本体结构主要表现为SRS、RSS、UUS-A和UUS-B这4种形式[16]。其中,SRS结构更能接近人类手臂结构特点,故本文选用模块化肩腕关节偏置的SRS结构的冗余机器人为研究对象,如图1所示,其改进DH参数如表1所示。这里需指出,根据文献[11]很容易获得冗余机器人的雅克比矩阵及其伪逆矩阵,其过程就不再赘述。本节将通过3个仿真算例来验证基于IGSO算法的SRS结构冗余机器人轨迹规划方法的有效性。 图1 SRS结构的冗余机器人 表1 SRS结构冗余机器人的改进DH参数 本算例中,选择目标函数为F4,目标位置为xref=[-0.5,0.5,1]T,不考虑姿态影响,通过优化算法来求解CLP法的解。仿真环境为Win 10 Intel(R) Core(TM) i7-4720HQ CPU@2.60GHz,Matlab 2018b软件下。采用传统的GSO算法与IABC(Improved artificial bee colony algorithm,IABC)算法[17]来与IGSO算法作比较分析。三种算法的参数设置如表2所示。每种算法各运行10次,每次迭代50代,然后选取并记录下最优结果,如图2和图3所示。从图中可以看出,三种算法均能使机器人末端执行器较好地接近参考位置,其中IGSO算法获得目标函数值为0.00521,分别比GSO算法与IABC算法高出了83.50%和42.07%。同时,GSO算法的仿真时间为1.63s,IABC算法的仿真时间为0.98s,IGSO算法的仿真时间为0.70s。本文所提算法比其他两种算法优化速率分别提高57.06%与28.57%。这表明本文所提算法收敛速度快,信息挖掘能力强。 表2 三种算法的参数设置 图2 三种算法的求解结果 图3 三种算法的求解结果 进一步地,分别在三种算法上来比较四种目标函数的优化效果。仿真条件同前面一样,结果如图4所示。从图可以看出,不管采用何种目标函数,IGSO算法均能帮助CLP法获得最好的优化结果。这说明了本文所提算法具有较好的鲁棒性。 图4 不同目标函数的对比 本算例中,冗余机器人末端执行器的起始点为[0,-1,0]T,目标点为[-1,0,1]T。结合IGSO算法与CLP法对机器人进行轨迹规划,使末端执行器走一条直线,中间共有20个路径点,仿真时间为2s。为了保证机器人在运动过程中的关节角变化连续,选择目标函数为F1,轨迹规划的结果如图5所示。从图中可以看出,冗余机器人能够实现点到点的平滑运动。图6~图8给出了各关节的角位移、角速度及角加速度的在时域内的响应,变化过程均平坦连续。 图5 轨迹规划的结果 图6 关节角的角位移变化 图7 关节角的角速度变化 图8 关节角的角加速度变化 本算例中,冗余机器人末端执行器的起始点为[0.8,0.6,0.4]T,目标点为[1,0,0.4]T,采用目标函数F3,对其进行圆弧轨迹规划。在Robotics Toolbox对本文所提方法进行可视化仿真,仿真时间为2s,结果如图9所示。从图中可以看出,在本文方法的帮助下,SRS结构的冗余机器人能够走出一条较为光滑连续的轨迹。同时,表3给出了规划的圆弧轨迹在X、Y与Z轴上的误差。这些误差指标均在机器人实际操作的许可误差范围内[18]。 图9 圆弧轨迹规划 表3 圆弧轨迹的误差 (1)本文提出了一种基于改进萤火虫算法的闭环伪逆法,用于处理SRS结构的冗余机器人的点到点运动、直线轨迹规划及圆弧轨迹规划。仿真结果证明,该方法具有较好的鲁棒性与准确性。 (2)用本文所提方法对SRS结构的冗余机器人进行直线插补与圆弧插补,均能获得光滑连续的轨迹,对实际操作具有一定的参考性。 (3)用广义反向学习机制来改进传统萤火虫算法,增强其搜索性能。仿真结果证明,本文所提算法的优化能力要强于GSO算法与IABC算法。 (4)在今后的研究中,将本文所提方法用于实际的冗余机器人轨迹规划中,验证其实时性与有效性。1.2 轨迹规划
1.3 构造目标函数
2 改进的萤火虫算法
2.1 传统的萤火虫算法
2.2 广义反向学习机制
3 仿真结果
3.1 仿真算例1
3.2 仿真算例2
3.3 仿真算例3
4 结论