英语原文共 15 页,剩余内容已隐藏,支付完成后下载完整资料
基于改进RRT算法的机械臂自主避障动态路径规划
摘要:在未来的智能工厂中,机械臂必须在人机协作和动态非结构化的环境下高效且安全地工作。自主路径规划是最重要的一个问题,因此必须在提高机器臂智能化的过程中首先考虑。在自主路径规划方法中,因基于随机采样的快速扩展随机树(RRT)算法的概率完整性、完美的扩展以及比其他路径规划方法更快的搜索速度,RRT算法已经被广泛应用于高维机器人的动态路径规划,尤其是在复杂的环境中。然而,当前现有的RRT算法在动态非结构化的机械臂自主路径规划中仍存在局限性。因此,本文提出了一种基于改进RRT算法的机器人自主避障动态路径规划的方法,称为平滑RRT(S-RRT)。这个方法意在对定向节点进行扩展,并且可以显著提高RRT算法的采样速度和效率。提出了一种基于最大曲率约束的路径优化策略,用于为机械臂生成一种平滑且弯曲的连续可执行路径。最后,通过MATLAB静态仿真和机器人操作系统(ROS)动态仿真环境进行仿真,同时也进行了真实的机器人在动态非结构化环境下的自主避障实验,验证了该方法的正确性、有效性和实用性。该方法不仅对智能工厂的机器人的避障路径规划具有重要的工程实际意义,且对其他类型机器人的路径规划也具有理论参考价值。
关键词:RRT算法;机械臂;动态非结构化环境;自主避障;动态路径规划
- 简介
在未来的智能工厂中,环境将会是动态的、非结构化的,机械臂将与人类一起高效、安全地协同完成各种各样复杂的工作和任务[1-4]。协同机器人首先能够自主感知静态障碍物并进行避障。机器人在静态环境下的自主避障问题的研究越来越受到人们的重视[5,6]。然而最重要的是,机械臂也必须同时要自主避开动态障碍物,例如有人突然进入到机械臂的工作区域内,这就需要机械臂实现动态路径规划[7]。
路径规划的定义是在机械臂的约束条件必须满足[8]的位姿空间中,从初始位姿到目标位姿的非碰撞连续路径。在路径规划的方法中,基于随机采样的快速扩展随机树(RRT)算法已经被广泛应用于复杂环境中高维机械臂的动态路径规划。RRT具有概率完整性、完美的可扩展性和快速的搜索速度,因此不需要将障碍物从任务空间映射到位姿空间。然而,现有的RRT算法不能很好地解决当机器人面临大量障碍物随机、非均匀分布的动态非结构化环境中的路径规划问题。例如,现有的RRT算法节点扩展速度慢,收敛速度慢,不能满足机械臂动态路径规划的实时性要求。此外,障碍物约束使得RRT算法随机采样产生的路径包含许多不必要的断点,导致路径不平滑和不连续。因此,机械臂的跟踪运动往往是不稳定的。
针对上述传统RRT的缺点和不足,近年来许多研究者在相关文献中提出了各自的一些改进方案。为了探索速度问题,Kuffner和LaValle[9]提出了Bi-RRT算法,此算法中两棵树分别从初始状态和目标状态生长,从而提高了算法的探索和收敛速度。在此基础上,文献[10]还提出了提高节点扩展效率的RRT-connect方案。文献[11]中提出了一种七自由度冗余度机械臂的目标定向搜索算法,用于加速路径规划,其缺点是在实际应用中有时需要改变搜索空间。文献[12]中利用遍历法构造了串联机械手的关节位姿空间,并利用RRT算法对无碰撞路径进行探索,其缺点是在机械臂和障碍物的几何模型简单情况下才可实现。文献[13]中针对移动机械臂末端执行器的具体任务,提出了一种基于PRM和RRT的动态路径规划方法,并通过仿真验证了该方法的有效性,仿真实验中机械臂有效地避开了静态和动态障碍物,但仅限于简单的长方体和圆柱体障碍物。
针对RRT随机性导致的路径不平滑问题,Kuwatat[14]提出了由直线和圆弧组成的Dubins路径,但路径曲率不是连续的。Fraichard和Scheuer[15]利用一条回旋曲线来平滑路径;但由于其解的非封闭性,在实际应用中不能得到准确的解。Lau等人[16]使用的是一条五次贝塞尔曲线,但没有考虑路径曲率的连续性。Elbanhawi等人[17]提出了满足连续曲率移动机器人非完整约束条件的三次方B样条函数算法。
因此,本文提出了一种基于改进RRT算法的机器人自主避障动态路径规划方法,称为平滑RRT(S-RRT),以克服上述不足。静态障碍物采用类人实体模型,动态障碍物采用真人手臂。利用Kinect-RGB-D传感器和点云后处理技术获取障碍物的轮廓信息。首先引入的目标定向节点扩展方法,大大提高了RRT算法的采样速度。在此基础上,提出了一种基于最大曲率约束的路径优化策略,以生成平滑、弯曲的连续可执行路径。最后,通过MATLAB静态仿真和机器人操作系统动态仿真,以及机器人在动态非结构化环境下的自主避障实验,验证了该方法的正确性、有效性和实用性。
- 改进的RRT算法
2.1传统RRT算法
高维空间的路径探索要比低维空间复杂得多。RRT算法的基本思想是从机械手的初始部分开始,以树的形式进行探索,在可行空间中随机采样,将枝叶扩展到目标区域,直到探索树覆盖目标区域。Tk、qinit、qgoal和qrand分别表示探索随机树包含k个节点、初始状态、目标状态和在构型空间中随机选择状态点。生成点并扩展RRT探索树的分支,直到找到目标位置。RRT算法的伪代码如下:
遍历随机树Tk,找到Tk,此时Tk表示最接近叶子节点qnear。dist(qnear,qrand)表示构型空间中两个节点之间的标度函数,表示两个节点之间的距离。如果dist (qnear qrand) lt; L,表示探索树已经延长了目标区域,在其他区域时,dist(qnear qrand)ge;L;在dist(qnear qrand)= ε(ε表示探测步长)的条件下,qnew处在qnew和grand两点之间的连线上;如果qnew不超过关节限制且与障碍物没有碰撞,则探索树将增加一个新节点,否则将随机重新生成一个新节点qrand。重复上述过程,直到到达目标区域。RRT探测树分支扩展的伪码如下:
-
- 节点扩展
节点扩展是RRT路径搜索的关键步骤。传统的算法采用纯随机抽样方法,并向外扩展。近年来提出的启发式探索方法为路径探索提供了新的思路。目标方向是RRT规划节点扩展的一个重要思想。向目标位置的延伸直接加速了RRT探测过程。然而,为了保持随机性,一些节点需要进行随机扩展,以保持随机扩展与目标方向之间的平衡。采样过程的伪代码如下:
目标方向概率阈值Pgoal决定了RRT是向目标点方向增长还是随机增长,这有助于在不盲目探索的情况下找到一个可行的增长方向。随机增长的目的是保持RRT算法的完整性。为了增强目标的方向性,首先采用第一个目标,然后采用随机抽样的方法。改进的RRT节点扩展的伪代码如下:
当目标方向扩展遇到碰撞时,随机扩展策略的伪码如下:
改进后的扩展方法的目标方向更加明确。如果不发生碰撞,则整个过程持续递归,直到到达目标区域。如果目标方向扩展遇到碰撞,则采用随机扩展的方法逃离碰撞区域。
随机扩展策略包括整棵树的随机扩展和最接近目标的点邻居的随机扩展。利用参数Pbest来调整它们的比例。采用随机可拓方法,直到找到一个可行解。本文选择Pbest为0.6。
-
- 碰撞检测
碰撞检测是RRT算法中非常重要的一部分,它是判断采样点是否可行的主要标准,同时也是相当耗时的。开源的碰撞检测库Flexible collision library[18](FCL)提供了物体碰撞检测和接近距离的计算。FCL可以检测传统的三角形表面和基本的身体形状(如球体、立方体和圆柱体)之间的碰撞或距离。此外,FCL还可以检测点云之间的碰撞。再者,FCL具有碰撞检测效率高、时间短的优点,非常适合ROS。因此,本文调用FCL来完成RRT算法的碰撞检测。RRT采样过程中应检查采样点的合理性,包括关节角度是否超出限制,机械手是否发生碰撞。检查关节角度很简单。利用FCL库对机械手的碰撞进行检测,碰撞检测的伪代码如下:
通过机械臂的运动学正解,计算出各连杆机构的位置和方向,得到六个气缸的中心位置和轴线方向。FCL库用于逐个检查气缸与周围障碍物之间的碰撞。如果发生碰撞,上述碰撞检查过程将重复进行。
-
- 轨迹优化
RRT算法所规划的路径具有很强的随机性,往往不是最优的。生成的路径也是不平滑、曲率不连续的,包含许多不必要的断点。此外,障碍物约束会导致断点的产生,特别是在动态非结构化环境中,这会导致机械手跟踪路径的能力不稳定,甚至会导致破坏。因此,为了解决复杂环境下机械手的路径规划问题,有必要对其轨迹进行优化。结合改进的RRT算法生成具有连续曲率的光滑路径。轨迹优化方法的伪代码如下:
将改进的RRT算法定义为平滑RRT (S-RRT)。利用基于最大曲率约束的函数剪枝(T)对整个树进行剪枝,删除不必要的节点,插入必要的节点。然后,利用三次B样条插值对其余节点进行平滑处理,生成可执行轨迹。在轨迹优化函数(T)中,从函数剪枝(T)的第5行到第23行可以看到基于最大曲率约束的剪枝函数。首先,从上述S-RRT的树T中得到一系列从初始状态到目标状态的有效路径点集Q1。然后,初始状态的第一个路径点与后续的路径点连接。如果连接线没有与障碍物空间相交,则可以删除路径点,并使用一条直线连接它们的点,依此类推。当发生冲突时,将冲突点的父节点替换为新节点,并再次执行上述操作,直到达到目标状态。将第一步处理后获得的路径点存储在Q2中。接下来,根据最大曲率约束,在这些直线中插入一个基于alpha;min的路径点,对于这种情况,Q2中相邻路径段之间的角度小于alpha;min。这样,尖锐的角度会变平,使得生成的轨迹曲率不大于b样条拟合的最大曲率约束。如图1a所示,红色折线表示S-RRT算法生成的路径。由于蓝色节点q0、q1、q2、q3和q4与障碍区域之间没有交点,因此可以使用直线直接连接,从而删除它们之间的冗余节点。alpha;min表示最小路径角,默认值为90◦。考虑到ang;q2q3q4 lt;alpha;min, 需要在alpha;min的基础上插入节点qinsert,使锐角平滑,使得ang;qinsertq3q4 = alpha;min,在这种情况下,q2、q3、q4也可以直接连接。最后得到一组平坦的路径点,如图1b所示,用绿点标记。
图1所示。剪枝算法图。(a) S-RRT产生的初始路径;(b)使用剪枝函数(T)平滑路径。
B样条曲线具有连续性和局部性强的优点[19,20],在运动规划中得到了广泛的应用。因此,利用B样条曲线拟合预先修剪过的轨迹点,生成平滑的连续曲率轨迹,便于机械手后续跟踪。k阶B样条曲线的表达式如式(1)所示:
这里,P是控制点,B样条曲线的基函数可用Cox—deBoor递推关系求得:
对于K阶B样条曲线和n个控制点,节点向量为U = [u0,u1,u2,···,um], m = n K。初始状态和目标状态的约束意味着曲线必须经过起始点和目标点以及与控制边相切的点。为满足上述约束条件,我们使用k节点向量,即节点向量满足以下方程:
- 仿真与实验
3.1 基于MATLAB的静态仿真环境
机器人的路径规划是一种高维流形空间规划。为了验证S-RRT算法的优越性和有效性,在MATLAB中用静态障碍物对二维路径规划进行了仿真,并与基本的RRT和Bi-RRT算法进行了比较。本节假设机械臂为代理机器人,构型空间为场景中的位置。整个状态空间的大小为600times;400。障碍物区域为随机设置的黑色矩形框架。路径规划是通过任意分配初始位置(如图蓝色实心圆所示)和目标位置(如图蓝色实心圆所示)来实现的。基本的RRT、Bi-RRT、S-RRT方案的求解结果分别如图2a-c的红色折线所示。S-RRT算法的修剪结果(如图中绿色实点所示)和最终生成的平滑路径(如图中蓝色曲线所示)如图2d所示。使用修剪算法对树进行修剪,以获得无冲突的序列点(如蓝色实点所示)。S-RRT最终路径规划的曲率变化图如图2e所示,从图中可以看出曲率是连续的。此外,考虑到RRT算法的随机性和算法性能的客观评价,在相同的实验场景下,分别使用三种算法各进行了50次路径规划实验。然后分别记录下平均探测时间、采样节点数和成功探测次数,如表1所示。从仿真实验的图2和表1的相关数据可以看出,相比较Basic-RRT和Bi-RRT来说,S-RRT的探测速度和探测效率都有明显的提高。此外,S-RRT的探测路径更加平滑,生成的路径曲率也具有连续性和可执行性,满足了机械臂避障过程中无冲击平稳运动的要求。
图2,三种算法与平滑快速扩展随机树(S-RRT)算法的比较。(a)基本RRT随机树;(b)Bi-RRT随机树;(c)S-RRT随机树;(d)优化S-RRT随机树;(e)S-RRT生成的路径曲率变化图。
表1 不同算法的仿真比较结果。
-
- 基于ROS的动态环境中的仿真验证
利用RRT算法在ROS可视化工具RViz上进行了动态避障的仿真实验。把ROS中的标记作为机械臂位置和障碍物的特殊标记,动态显示RRT算法的运动规划。动态避障仿真中的障碍物以标记的形式存在于ROS中,可以用操纵杆控制障碍物的位置,可以上下移动、前后移动、左右移动,如图3所示。
图3,高维静态RRT规划场景。
黄色圆点表示机械手的起始位置和结束位置。初始位姿和目标位姿的位置和方向如下(单位:mm): 剩余内容已隐藏,支付完成后下载完整资料
资料编号:[237595],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。