一种偏向目标型地RRT算法实现

合集下载

rrt算法实验报告

rrt算法实验报告

rrt算法实验报告《RRT算法实验报告》摘要:本实验报告主要介绍了基于RRT(Rapidly-exploring Random Tree)算法的路径规划实验。

通过对RRT算法的原理和实现进行介绍,以及在不同场景下的实际应用效果进行测试和分析,得出了该算法在路径规划中的优势和局限性。

引言:路径规划是机器人和自动驾驶等领域中的重要问题之一。

RRT算法是一种基于树结构的路径规划算法,通过随机采样和快速探索的方式,能够在复杂环境中高效地寻找到可行的路径。

本实验旨在通过对RRT算法的实际应用和效果进行测试,验证其在路径规划中的可行性和优势。

方法:本实验使用Python语言实现了RRT算法,并在不同场景下进行了测试。

首先,我们在一个简单的二维空间中对RRT算法进行了测试,验证其在简单环境中的可行性。

然后,我们将算法应用到一个复杂的三维环境中,测试其在复杂环境中的表现。

最后,我们对比了RRT算法和其他常见的路径规划算法,分析了它们的优势和局限性。

结果:实验结果表明,RRT算法能够在复杂环境中高效地寻找到可行的路径,并且具有较好的鲁棒性。

在简单环境中,RRT算法的表现与其他常见的路径规划算法相当,但在复杂环境中表现出更好的性能。

然而,RRT算法在某些情况下可能会出现局部最优解的问题,需要进一步改进。

讨论:RRT算法作为一种基于树结构的路径规划算法,在实际应用中具有一定的优势。

然而,该算法在处理动态环境和高精度路径规划等方面仍存在一些挑战,需要进一步改进和优化。

未来的研究可以从改进采样策略、优化树的生长方式等方面入手,提高RRT算法在实际应用中的性能和效果。

结论:通过本实验,我们对RRT算法的原理和实现进行了介绍,并在不同场景下进行了实际应用和测试。

实验结果表明,RRT算法在路径规划中具有一定的优势,但也存在一些局限性。

未来的研究可以进一步改进和优化该算法,提高其在实际应用中的性能和效果。

基于改进RRT路径规划算法

基于改进RRT路径规划算法

No.2Feb.2021第2期2021年2月组合机床与自动化加工技术Modular Machine Tool & Automatic Manufacturing Technique文章编号:1001 -2265(2021)02 -0022 -03DOI : 10.13462/j. .nki. mmtamt. 2021.02. 006基于改进RRT 路径规划算法*李金良,舒翰儒,刘德建,徐磊(山东科技大学机械电子工程学院,山东青岛266560)摘要:针对基本RRT 算法路径规划特点:树的扩展具有随机性,路径中存在冗余的节点,规划出的路径拐角多。

因此,提出一种改进的RRT 算法。

改进后的算法首先采用目标偏向策略,以一定的概率F 把目标点作为采样点进行随机树扩展,提高随机树向目标点的扩展的概率;其次,改变度量 函数,添加了角度约束,减少了路径规划中搜索的范围,以减少搜索时间;最后,通过贪心算法对路 径进行简化,并对简化后的节点采用三次B 样条曲线进行优化。

结果证明改进后的RRT 算法搜索 时间更少,搜索路径更短,平滑性更高。

关键词:RRT 算法;路径规划;目标偏向策略;三次B 样条曲线中图分类号:TH16 ;TG506 文献标识码:APatt Planning Algorittm Basen on Improven RRTLI Jin-liang &SHU Han-ru &LU De-jian ,XU Lei(Colleee of Mechanicd and Electronia Engineering , Shandong University of Sciencc and TechnoKgy , Qing ­dao Shandong , 366560& China )Abstrad;: Based on the basic RRT algorithm path planning fs W tcs : tree expansion is random , there are re ­dundant nodes in the path , and the planned path has many corners. Therefore & an improved RRT algorithmis proposed. The improved algorithm frst adoptr the taget bias strategy & and uses a certain probability P to take the target point as a sampling point for random tree expansion to improve the probability of the random he r expansion to the taget point. Second & the methc function is changed & and angula consWai.nW areadded to reduce The scope of the seach in path planning to reduce the seach time ; fnaiy & the path issimplified by a greedy algorithm & and the simplified nodes are optimized using a cubic B-spline curve. The resultr prove that the improved RRT algorithm has less seach time , fewer search paths & and higher smoohhne s .Key worp RRT algorithm ; path planning ; target bias shategy ; cubic B-spline curve0引言随着人工智能的不断推进,机器人技术得到了飞速的发展,智能化成为未来机器人领域的新航标。

三维 rrt算法 python

三维 rrt算法 python

三维 rrt算法 python
三维RRT算法(Rapidly-exploring Random Tree)是一种用于
路径规划的算法,它在三维空间中寻找从起点到目标点的可行路径。

在Python中实现三维RRT算法,可以通过以下步骤进行:
1. 定义节点类,首先,你需要定义一个节点类来表示树中的节点。

这个节点类应该包括节点的坐标、父节点等信息。

2. 初始化RRT树,创建一个空的树,将起点作为树的根节点。

3. 扩展树,通过随机采样和节点扩展的方式,不断扩展RRT树
直到找到目标点或者达到最大迭代次数。

4. 碰撞检测,在扩展节点时,需要进行碰撞检测,确保新的节
点不会与障碍物发生碰撞。

5. 路径回溯,一旦找到目标点,需要从目标点回溯到起点,构
建可行路径。

在Python中,你可以使用现有的库来实现三维RRT算法,比如
使用numpy进行数学计算,使用matplotlib进行可视化,使用
scipy进行碰撞检测等。

同时,你也可以参考已有的开源实现来加
快开发速度。

总的来说,实现三维RRT算法需要深入理解算法原理,具备良
好的编程能力以及对三维空间的理解。

希望这些信息对你有所帮助。

基于RRT路径规划算法的改进方法研究

基于RRT路径规划算法的改进方法研究

基于RRT路径规划算法的改进方法研究何佳; 夏海鹏; 刘修知【期刊名称】《《汽车实用技术》》【年(卷),期】2019(000)022【总页数】4页(P39-42)【关键词】RRT算法; 路径规划; 节点选择【作者】何佳; 夏海鹏; 刘修知【作者单位】中国汽车技术研究中心有限公司天津 300300【正文语种】中文【中图分类】U471.15前言随着无人驾驶技术的发展,无人车的路径规划技术作为其中的重要技术获得了迅速的发展[1]。

其中传统的路径规划算法包括人工势场法、模糊规则法、遗传算法、神经网络、模拟退火算法、蚁群优化等算法[2]。

但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度机器人在复杂环境中的规划问题。

本文主要研究RRT 算法及其改进方法,快速扩展随机树(RRT/rapi-dly exploring random tree)算法在1998 年由LaValle 教授提出[3],通过环境空间的随机采样点,把搜索导向空白区域,从而寻找到一条从起始点到目标点的规划路径。

通过对环境空间中的采样点进行碰撞检测,避免了对环境空间的建模,能够有效地解决高维空间和复杂约束的路径规划问题,适合解决多自由度机器人在复杂环境下和动态环境中的路径规划[4]。

RRT 算法存在节点扩展时缺乏引导信息,存在较大的盲目性,导致生成的路径曲折不连续,且容易陷入局部极小值等不足。

关于RRT 算法的改进提出了很多解决方法,大致可以分为两大类,一类是基于基本RRT 算法节点选择、步长选择、扩展方向等的改进,另一类与其他路径规划算法融合的改进。

1 基本RRT 算法RRT 算法以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目标区域,便可以在随机树中找到一条从初始点到目标点的路径。

基本RRT 算法流程图如图1 所示。

基于双向同时无碰撞检测目标偏置RRT算法的路径规划方法

基于双向同时无碰撞检测目标偏置RRT算法的路径规划方法

基于双向同时无碰撞检测目标偏置RRT算法的路径规划方法陈海洋;王露楠
【期刊名称】《空军工程大学学报:自然科学版》
【年(卷),期】2022(23)3
【摘要】针对传统RRT算法在复杂环境中对不必要区域的搜索和路径规划的时间代价过高等问题,提出了一种双向同时无碰撞检测目标偏置快速扩展随机树算法——TNCG-RRT。

该算法将B-RRT中的双向搜索策略和BIT中的启发式搜索融合作为文中的基础算法,引入神经网络的批量抓取数量决定一次采样的节点数目从而影响采样速度;然后,将正向树和反向树的扩展同时进行以加快路径搜索速度,通过对目标偏向策略中扩展顶点队列的改进和对采样区域的不断更新明确扩展方向,缩小随机树生长的范围;最后,利用3次B样条曲线使生成的路径趋于平滑。

与B-RRT算法和BIT算法进行对比实验,实验结果表明:TNCG-RRT算法在路径生成时间上缩短4.5%,剪枝数增加80%,路径代价(即路径长度)缩短9%,证明了TNCG-RRT算法的有效性。

【总页数】8页(P60-67)
【作者】陈海洋;王露楠
【作者单位】西安工程大学电子信息学院
【正文语种】中文
【中图分类】TP312
【相关文献】
1.基于目标导向的双向RRT路径规划算法
2.基于目标导向的双向RRT路径规划算法
3.基于改进双向RRT算法的机器人路径规划
4.目标偏置双向RRT*算法的机器人路径规划
5.基于改进双向RRT^(*)算法的机械臂路径规划
因版权原因,仅展示原文概要,查看原文内容请购买。

具有目标导向性的RRT路径规划研究

具有目标导向性的RRT路径规划研究

具有目标导向性的RRT路径规划研究作者:郭孝坤吴玉秀李景程瑞嘉来源:《现代信息科技》2022年第01期摘要:在机器人全局路径规划中,首先对全局路径规划的各种探索路径的算法做了总结,对RRT、A*和D*算法做了对比,分析了这些算法的优缺点。

鉴于RRT具有概率完备性,A*和D*具有深度优先性,也就是目标导向性,文章使用一种算法更改了原RRT算法中随机点的选取方式,使RRT具有概率完备性的同时也拥有了目标导向性,实验证明,改进后的RRT算法能够更快探索出到达目标点的路径。

关键词:全局路径规划;RRT;A*;深度优先性;概率完备性中国分类号:TP242 文献标识码:A文章编号:2096-4706(2022)01-0069-05Abstract: In the global path planning of robots, we first summarize the various path exploration algorithms of the global path planning, compare the RRT, A* and D* algorithms,and analyze their advantages and disadvantages. Given that RRT has probability completeness, A* and D* has depth priority, that is target orientation, this paper uses an algorithm to change the selection method of random points in the original RRT algorithm and make RRT have probability completeness and target orientation at the same time. The experiment proves that improved RRT algorithm can faster explore the path to reach the target point.Keywords: global path planning; RRT; A*; depth priority; probability completeness0 引言机器人应用中,路径规划是必须且首先需要的核心技术[1],很多后续任务也都是从路径规划开始。

rrt算法步骤

rrt算法步骤

RRT算法步骤简介Rapidly-exploring Random Trees (RRT)算法是一种用于解决路径规划问题的算法,被广泛应用于机器人导航、无人车路径规划等领域。

RRT算法通过随机采样、构建树结构和搜索路径等步骤,在环境中快速生成一个代表可行路径的树结构。

本文将详细介绍RRT算法的步骤和相关实现细节。

RRT算法步骤1. 初始化首先,需要初始化RRT算法的树结构。

这个树是一个有向图,其中包含了起始点的一个节点作为根节点。

2. 随机采样接下来,需要在搜索空间中随机采样一个点,作为新节点的位置。

采样的点应该可以代表整个搜索空间,通常通过随机均匀分布来实现。

3. 扩展树在RRT算法中,新节点是通过从现有树中选择最近邻节点,并向随机采样的点方向前进一个步长来获得的。

所以,需要计算最近邻节点,并向目标节点前进一个步长的点。

4. 碰撞检测在扩展树的过程中,需要对新的节点进行碰撞检测,以确保路径是可行的。

如果新节点与障碍物碰撞,则需要重新选择随机采样的点,并重新进行扩展。

5. 连接树在确定新节点后,需要将新节点连接到最近邻节点,形成一条新边。

这样,随着搜索的进行,树的结构逐渐扩大。

6. 判断是否到达目标在每一次扩展之后,需要判断是否已经到达目标位置。

如果已经到达目标位置,则可以停止搜索,并返回生成的路径。

7. 重复扩展如果还未达到目标位置,则需要继续重复之前的步骤。

通过不断随机采样、扩展树和连接树,直到找到一条可行路径为止。

RRT算法实现细节节点选择方式在扩展树中,需要选择最近邻节点。

通常采用欧式距离来计算节点间的距离,找到距离最近的节点。

步长选择向目标节点前进的步长是RRT算法中的一个重要参数。

步长过大会导致搜索得太快,步长过小则搜索过程缓慢。

通常可以通过试验或动态规划来选择合适的步长。

碰撞检测算法在碰撞检测中,可以使用多种算法来判断新节点是否与障碍物碰撞。

例如,可以使用轴对齐包围盒(AABB)、球形包围盒等快速碰撞检测算法。

rrt算法实验报告

rrt算法实验报告

rrt算法实验报告rrt算法实验报告引言:在机器人路径规划领域,Rapidly-exploring Random Trees (RRT) 算法是一种常见且有效的算法。

本实验旨在通过实际操作和实验结果验证RRT算法的可行性和效果,并对其性能进行评估。

实验设计:本实验使用一个模拟的二维环境,其中包含了障碍物和起点终点。

通过RRT算法,我们将尝试找到从起点到终点的最短路径。

实验中,我们将考察RRT算法的运行时间、路径规划的质量以及算法的鲁棒性。

实验过程:1. 环境建模:首先,我们将实验环境进行建模。

通过定义二维平面上的障碍物的位置和形状,以及起点和终点的位置,搭建一个合适的环境。

2. RRT算法实现:接下来,我们实现RRT算法。

该算法的基本思想是通过随机采样和树的生长,逐步扩展搜索空间,直到找到连接起点和终点的路径。

我们需要实现树的节点生成、节点扩展、路径搜索等基本功能。

3. 算法调优:在实验中,我们可以通过调整RRT算法的参数来优化路径规划的结果。

例如,可以调整采样点的数量、树的生长速度等。

我们将尝试不同的参数组合,并比较它们的性能差异。

4. 路径可视化:为了直观地观察实验结果,我们将实现路径的可视化。

通过在二维平面上显示出树的生长过程和最终的路径,我们可以更清楚地了解RRT算法的工作原理和效果。

实验结果:通过实验,我们得到了以下结果:1. 运行时间:RRT算法在不同环境下的运行时间有所差异。

在简单的环境中,算法能够快速找到路径;而在复杂的环境中,算法可能需要更长的时间来搜索最优路径。

2. 路径质量:RRT算法能够找到连接起点和终点的路径,但路径的质量取决于环境的复杂程度和参数的选择。

在简单环境中,算法通常能够找到较短的路径;而在复杂环境中,路径可能会更加曲折。

3. 参数调优:通过调整RRT算法的参数,我们可以改善路径规划的质量和效率。

例如,增加采样点的数量可以增加路径搜索的范围,但也会增加计算时间。

rrt算法matlab代码

rrt算法matlab代码

rrt算法matlab代码
随机数生成器:
RRT算法是一种在无人机路径规划中应用广泛,基于树结构的算法。

在Matlab中实现RRT算法,主要涉及以下步骤:
1. 定义启动点和目标点:在Matlab中,可以通过定义变量的方式来
实现。

比如,将启动点设为起点(0,0)和目标点设为终点(10,10)。

2. 定义空间边界:在Matlab中,可以用plot函数画出空间的边界,例如:plot([0 0 10 10 0], [0 10 10 0 0]),表示空间为一个边长为
10的正方形。

3. 定义RRT树:在Matlab中,可以用二叉树结构或者图结构实现RRT树。

一般建议使用图结构,方便节点的链接。

4. 生成随机采样点:在Matlab中,可以使用rand函数生成随机采
样点。

也可以使用更精细的采样方法,比如按照分布方式采样。

5. 确定最近邻节点:在RRT算法中,每次生成新节点时需要选出其
最近邻节点。

在Matlab中,可以使用计算距离的函数,比如pdist2函数,快速确定最近邻节点。

6.确定新节点:根据RRT算法的扩展规则,将新节点加入到RRT树中。

7. 确定路径:当目标点与某个节点距离较近时,即可很快确定路径。

在Matlab中,可以使用findpath函数,从起点到终点找出一条路径。

以上就是在Matlab中实现RRT算法的主要步骤。

当然,具体实现还
需要根据实际情况进行优化和调整,使得算法更加高效和稳定。

一种基于RPP算法改进的路径规划

一种基于RPP算法改进的路径规划
性和稳定性 。
真 实验 ,结 果证 明 了算 法 的有 效
2基本的双 向搜索树 ( B i — R R T )介绍
1 . 1基本 的R R T 算 法
基本 的 R R T算法 的主 要思 想是:在 位姿 空间 中,以初 始点 x 。 . . 为根节点 ( x 。 。 ∈c ), 3 . 2 改进 的扩 展 节 点 函数 通过随机采样方式产 生叶子节点,在 自由位姿 基本 的扩展函数 C o n n e c t( T , q )函数 ,其 空 间 中递增 构建一 棵随机 搜索树 ,直至 搜索 或搜索树 T ,q是 自由空 树上的节点到达 目 标 点或 目标区域为止 ;然后 中 T是搜 索树 。 在该搜索树上规划 出一条 从初始 点到 目标点的 间中选择 的临时 目标点。对于改进的算法 ,从 初始 点生 成的搜 索树 T . 调 用的扩 展节 点函数 可行路径。 为C o n n e c t( T , G)函数 ,其 中 是 目标 点;从 1 . 2 R P P 算法 目标 点生成 的搜 索树 T , 调用 的扩展 节点 函数 为C o n n e c t( T 2 , q n 1 )函数 ,其中 q I l 1 是搜索 由于基 本 的 R R T算法本 身具 有随机 性, 树 扩展 的一个新节点 。 导致搜 索 路径 的 随机性 ,一 些基 于偏 向性 的 改 进 被 提 出, 如 R P P ,RR T - Go a l Bi a s ,RR T - 3 . 3随机节点 函数 Go ,Z o o m等 。 由于在本文算法 中,从初 始点生成的搜 索 R P P算 法, 将 目标 点 q 。 作 为 基 本 的 树 采用了R P P 算法中偏 向 目 标 点搜索 的思想, R RT算法 中 的随机 采样 点,q 即 q : q g 。 l 。

c语言实现rrt算法

c语言实现rrt算法

c语言实现rrt算法Rapidly-exploring Random Tree (RRT) 是一种用于解决机器人路径规划问题的算法。

RRT的基本思想是通过在图空间中随机选择节点,然后以当前节点为起点,通过搜索最近节点的方式生成树,直到树的规模达到预设值或者找到目标节点。

以下是一个简单的C语言实现RRT算法的示例:```cinclude <>include <>include <>include <>define MAX_NODES 1000define DISTANCE_THRESHOLDdefine NODE_RADIUSdefine MAX_ITERATIONS 10000typedef struct Node {double x, y;struct Node parent;} Node;Node createNode(double x, double y) {Node newNode = (Node)malloc(sizeof(Node));newNode->x = x;newNode->y = y;newNode->parent = NULL;return newNode;}double distance(Node n1, Node n2) {return sqrt(pow(n1->x - n2->x, 2) + pow(n1->y - n2->y, 2)); }Node nearestNode(Node start, Node nodes[], int numNodes) { double minDist = distance(start, nodes[0]);int minIndex = 0;for (int i = 1; i < numNodes; i++) {double dist = distance(start, nodes[i]);if (dist < minDist) {minDist = dist;minIndex = i;}}return nodes[minIndex];}void rrt(Node start, Node goal, double startX, double startY, double goalX, double goalY) {srand(time(NULL));Node nodes[MAX_NODES];for (int i = 0; i < MAX_NODES; i++) {nodes[i] = createNode(rand() % 100 / - , rand() % 100 / - ); }nodes[0] = start;int numNodes = 1;for (int i = 0; i < MAX_ITERATIONS; i++) {double angle = (rand() % 360) / M_PI;double distance = rand() % 20 / + ;double dx = distance cos(angle);double dy = distance sin(angle);double newX = nodes[numNodes - 1]->x + dx;double newY = nodes[numNodes - 1]->y + dy;if (distance(nodes[numNodes - 1], createNode(newX, newY)) <= NODE_RADIUS) {nodes[numNodes] = createNode(newX, newY);numNodes++;} else {double k = distance(nodes[numNodes - 1], createNode(newX, newY)) / distance(nodes[numNodes - 1],nearestNode(nodes[numNodes - 1], nodes, numNodes));double alpha = acos(k);if (rand() % 2 == 0) {alpha = -alpha;}double nx = nodes[numNodes - 1]->x + NODE_RADIUScos(alpha);double ny = nodes[numNodes - 1]->y + NODE_RADIUSsin(alpha);nodes[numNodes] = createNode(nx, ny);numNodes++;}if (distance(nodes[numNodes - 1], goal) <=DISTANCE_THRESHOLD) {while (nodes[numNodes - 1] != goal) {printf("Move robot from %f, %f to %f, %f\n",nodes[numNodes - 2]->x, nodes[numNodes - 2]->y,nodes[numNodes - 1]->x, nodes[numNodes - 1]->y);nodes[numNodes - 1] = createNode(goalX + rand() % 10 /。

基于改进RRT的路径规划算法

基于改进RRT的路径规划算法

Techniques of Automation &Applications基于改进RRT 的路径规划算法*刘晓倩,张辉,王英健(长沙理工大学电气与信息学院,湖南长沙410114)摘要:传统的RRT(Rapid-exploration Random Tree)算法具有搜索速度快,适用于解决动力学非完整性约束问题,但是由于算法本身的随机性,生成的路径比较曲折,甚至出现绕远路现象。

为此,本文提出一种改进的RRT 路径规划算法,该算法结合目标偏向策略,使算法快速向目标节点收敛;对选取节点的度量函数,加入了角度的影响;同时引入贪心剪枝思想,对冗余节点进行剪枝,提高了路径规划算法的效率;最后通过仿真实验,验证了该算法的正确性和有效性。

关键词:路径规划;RRT;目标偏向采样策略;贪心思想中文分类号:TP312;PT242文献标志码:A文章编号:1003-7241(2019)05-0096-05Improved Path Planning Algorithm of RRTLIU Xiao-qian,ZHANG Hui,WANG Ying-jian(School of Electrical and information,Changsha University of Science and Technology,Changsha 410000China )Abstract:The traditional Rapid-exploration Random Tree algorithm has an excellence searching rate,the algorithm is suitable forsolving the dynamics of nonholonomic constraint problems,but due to the randomness of the algorithm,the generated path is comparatively zigzagging,it usually results in tromboning.Therefore,this paper proposes an improved RRT path planning algorithm,combining with the target bias strategy,which makes the algorithm fast convergence to the target node;The metric function of selecting nodes increase the impact of angle;Meanwhile,it introduces an greedy pruning ide-ology to prune the redundant nodes,which improves the efficiency of path planning algorithm;Finally,the correctness and effectiveness of the algorithm are verified by simulation experiments.Key words:path planning;rapidly-exploring random tree;target bias sampling strategy;greedy ideology*基金项目:国家自然科学基金项目(编号61401046)收稿日期:2018-03-211引言随着社会的不断进步以及科技的不断发展,智能机器人产品在家居、医疗、工业生产得到广泛的应用。

城市工况下基于改进RRT的无人车运动规划算法

城市工况下基于改进RRT的无人车运动规划算法

(3)
式中,Ni,k(t)为 Tn,k上(k-1)次 B 样条基函数,由 deBoox-Cox
递推关系[14]确定:
( ) ì
ïïNi,1(t) í ïïNi,k(t) î
= =
ìï1,t ∈ í
ti, ti + 1
îï0,其它
t ti
-
+kti-1Fra bibliotekNi,
k
-
1(
t)
+
ti+1 - t ti+k - ti+1
的安全性。最后,对 RRT 进行修剪和重构。通过仿真和实车测试验证了该算法的有效性和实用性。
主题词:无人驾驶汽车 运动规划 偏向性采样 邻近点搜索
中图分类号:U461
文献标识码:A
DOI: 10.19620/ki.1000-3703.20180524
An Improved RRT-Based Motion Planning Algorithm for Autonomous
Ni + 1,k - 1(t),i
=
(4) 0, 1, …, n
B 样条曲线具有连续性、凸包性和局部性等优点,
曲线控制点个数和阶数没有必然联系,不需要复杂的数
值计算。另外,通过限定控制点连线间的夹角可将曲线
的曲率维持在一定界限内,如图 3 所示。
A1
A2
α
B2
O
L
B1
图 3 曲线控制线段模型
控制点 A1、O、B1 决定的线段夹角的最小值 αmin 与曲
率最大值以及控制点连线的最短线段长度 Lmin满足[11]:
( ) Lmin = 16·siκnmαaxmin

改进RRT路径规划算法

改进RRT路径规划算法

收稿日期:2020-07-13基金项目:吉林省科技发展计划资助项目(20190303058S F )作者简介:梁中一(1995-),男,汉族,吉林长春人,长春工业大学硕士研究生,主要从事传动系统建模与智能优化控制方向研究,E -m a i l :1277586985@q q.c o m.*通讯作者:程方晓(1969-),女,汉族,吉林长春人,长春工业大学教授,博士,主要从事测控技术与智能系统方向研究,E -m a i l :187049858@q q.c o m.第41卷第6期 长春工业大学学报 V o l .41N o .62020年12月 J o u r n a l o f C h a n g c h u nU n i v e r s i t y o fT e c h n o l o g yD e c .2020 D O I :10.15923/j.c n k i .c n 22-1382/t .2020.6.15改进R R T *路径规划算法梁中一, 程方晓*, 魏 巍(长春工业大学电气与电子工程学院,吉林长春 130012)摘 要:通过改进随机树生长方式,使随机树朝着目标点进行生长,选用复杂度低的度量函数以提高随机树的求解速度,嵌入D i jk s t r a 算法进行优化㊂通过MA T L A B 仿真平台对改进的R R T *算法仿真及分析㊂关键词:路径规划;R R T *算法;优化;D i jk s t r a 算法中图分类号:T P24 文献标志码:A 文章编号:1674-1374(2020)06-0602-06A n i m p r o v e dR R T *p a t h p l a n n i n g a l g o r i yh m L I A N GZ h o n g y i , C H E N GF a n gx i a o *, W E IW e i (S c h o o l o fE l e c t r i c a l&E l e c t r o n i cE n g i n e e r i n g ,C h a n g c h u nU n i v e r s i t y o fT e c h n o l o g y ,C h a n gc h u n130012,C h i n a )A b s t r a c t :I m pr o v e dr a n d o mt r e e g r o w t h m e t h o d i su s e dt o m a k e t h er a n d o mt r e e g r o wt o w a r dt h e t a r g e t p o i n t ,a n da l o w -c o m p l e x i t y m e t r i c f u n c t i o n i ss e l e c t e dt os p e e du p t h e r a n d o mt r e es o l u t i o n w h i c h i so p t i m i z e d w i t ht h ee m b e d d e dD i j k s t r a .T h e MA T L A Bi su s e dt os i m u l a t ea n da n a l yz et h e i m p r o v e dR R T *a l g o r i t h m.K e y wo r d s :p a t h p l a n n i n g ;R R T *a l g o r i t h m ;o p t i m i z a t i o n ;D i j k s t r a a l g o r i t h m.0 引 言在科学技术快速发展的今天,机器人在日常生活中得到广泛应用,而路径规划是研究机器人的一个重要环节㊂机器人路径规划指在特定的工作环境中,通过不断探索障碍物的信息找到一条从起始点到终点的无障碍路径[1]㊂路径规划算法是实现机器人移动的重要前提,近年来,路径规划的相关算法也不断地被国内外学者提出㊂路径规划算法[2]主要有以下几种:基于图搜索的路径规划算法,如A *㊁D *㊁人工势场法㊁栅格图法等;基于智能仿生学的路径规划算法,如遗传算法㊁蚁群算法等;基于图搜索算法,虽然能够收敛到路径最优,但是随着空间纬度的增加会导致算法的复杂化;对于智能仿生学算法在进行路径搜索时可能会陷入局部最小值㊂为了更好地解决以上路径规划算法问题,有学者提出了基于采样的路径规划算法,主要有概率路标算法[3](P R M )和快速扩展随机树算法(R R T )㊂快速扩展随机树(R R T )是在指定的工作环境中,从起始点以节点搜索的方式不断探索到终点的一种路径规划算法,可以应用在完整系统与非完整性系统中,为高维复杂环境的机器人路径规划提供一种新的解决方案[4]㊂但是传统的R R T在含有大量障碍物或者狭小的工作空间时,该算法的收敛速率会大幅度的下降;传统的R R T 算法具有一定的随机性,使得最终生成的路径并非是最优解[5]㊂针对以上问题,R R T及其变体得到了广泛的应用㊂文献[6]提出一种针对狭窄通道的R R T-C o n n e c t算法,避免扩展大量无用的节点,与原始R R T-C o n n e c t算法相比,有效地提高了路径规划的效率;文献[7]通过目标偏向策略及气味扩散的方法改善R R T扩展节点的方式,从而使随机树向目标点进行生长,并通过3次B样条对路径进行优化;文献[8]提出了D R R T-C o n n e c t算法,在起始点和目标点之间选取一个第三节点,使该算法同时在三个节点处进行扩展,与此同时引入自适应步长函数,加快随机树扩展速度;文献[9]提出了R P-R R T*算法,引入人工势场算法,通过建立虚拟立场对R R T*算法的采样过程进行优化;文献[10]通过改进R R T算法中随机数生长方向的角度进行最优路径的选取㊂文中提出改进的R R T*算法,首先采用目标偏向策略降低随机树扩展的随机性,其次应用复杂度低的度量函数提高随机树的求解速度,最后嵌入D i j k s t r a算法进行路径优化㊂对改进前后的R R T*算法进行仿真实验㊂1基本概念1.1R R T算法R R T算法是一种随机采样算法,其基本思想是首先将起始点作为根节点加入树中,然后在状态空间中随机采样选取一个节点,使树向着采样点的目标方向生长,若与障碍物发生碰撞,则重新选择采样点生长出与障碍无碰撞的节点,直到随机树扩展到终点为止㊂R R T算法扩展方式如图1所示㊂R R T算法以X i n i t为根节点进行扩展,在工作环境中随机选取一个采样点X r a n d,然后在工作空间中选取离该采样点最近的节点X n e a r,在X n e a r和X r a n d的连线上以一定的步长ε选取一个新的采样点X n e w,如果选取的采样点X n e w没有与障碍物发生碰撞,则将采样点X n e w加入到树中,反之则将该采样点舍弃,并重新选取采样点X r a n d进行扩展㊂重复以上步骤直到扩展树找到一条从X i n i t到X g o a l的无碰撞路径为止㊂图1 R R T扩展方式R R T算法伪代码[11]:B u i l dR R T(X i n i t):T r e e.i n i t(X i n i t);f o r n=1t oNd o;X r a n dѳR a n d o m_S t a t e();E x t e n d(T r e e,X r a n d);r e t u r nT r e e;E x t e n d(T r e e,X r a n d):X n e a rѳN E A R E S T(X r a n d,T r e e);X n e wѳN E W_S T A T E(X r a n d,X n e a r);i fX n e wʂN u l l t h e n;T r e e.a d d_n o d e(X n e w);T r e e.a d d_e d g e(X n e a r,X n e w);i f||X n e w-X g o a l||<εt h e n;e n de n dr e t u r nT r e e;1.2R R T*算法针对R R T算法的扩展随机性,使生成的路径不一定是最优解的问题,文献[12]提出了R R T*算法,使生成的路径可以达到渐进最优化㊂R R T*扩展方式如图2所示㊂(a)采样点随机扩展节点306第6期梁中一,等:改进R R T*路径规划算法(b )寻找X m in(c)扩展树重新连接采样点图2 R R T *扩展方式根据前面R R T 算法的搜索方式,在环境地图中找到采样点X n e w ,对该采样点进行障碍物的碰撞检测,若没有发生碰撞,则以X n e w 为圆心,步长为半径做圆形区域,通过N e a r 函数选择X n e w 附近的采样点,落在圆形区域的采样点属于X n e w的子集,依次比较从初始节点X i n i t 到X n e a r e s t 与X m i n 到X n e w 的路径代价和,选取路径代价和最小节点X m i n 作为X n e w 的最新父节点,切断X n e w 与原父节点的连接,使其与新的父节点进行连接㊂重复以上步骤,直到扩展树到达目标点为止㊂R R T *算法伪代码[13]: B u i l dR R T*(X i n i t ):T=I n i t i a l i z eT r e e();T=I n s e r t N o d e (∅,X i n i t ,T )f o r n =1t okd oX r a n d =Sa m p l e _p o i n t ();X n e a r e s t =N e a r e s t _n o d e (T ,X r a n d );(X n e w ,X n e w )=S t e e r (X n e a r e s t ,X r a n d ); i fO b s t a c l e F r e e (X n e w )t h e n X n e a r =N e a r (T ,X n e w ,r ); X m i n =C h o o s e P a r e n t (X n e a r ,X n e a r e s t ,X n e w ); T=I n s e r t N o d e (X m i n ,X n e w ,T ); T=R e w i r e (T ,X n e a r ,X m i n ,X n e w ); e n de n dr e t u r nT ;1.3 D i jk s t r a 算法 D i jk s t r a 算法是由迪杰斯特拉首先提出的,是从一个节点到其他节点的最短路径算法[14-16]㊂该算法的主要特点是以起始点为中心向外逐渐扩展(广度优先搜索思想),直到扩展到终点找到最短距离为止㊂D i jk s t r a 算法的基本思想是在两个集合的共同作用下,求出源点到其余各节点的最短路径的算法㊂第一个集合S 为已求解的最短路径顶点集合,集合S 在初始时刻只包含源点s ;第二个集合U 为未确定的最短路径点集合,U 集合中与源点连接的节点距离为相应的权值,没有直接连接的节点距离设为ɕ㊂在U 中选出距离最短的点加入到S 中,并在U 中移除该点㊂以距源点距离最小的点为源点,逐渐更新距源点的距离值㊂重复以上两个步骤,直到集合S 涵盖所有的节点,算法结束㊂2 R R T *算法的改进2.1 目标偏向思想由于R R T *算法存在计算量大,收敛速度慢的问题,文中在R R T *的基础上引用目标偏向思想,即随机树在随机获取采样点时,首先按照均匀概率分布获取一个概率值p r ,若p r 小于设定的阈值p t h ,则X r a n d =X g o a l ;若p r 大于阈值p t h ,则按照原有的随机采样方式获取随机点,其伪代码表示如下:p r =r a n d (0~1);i f (p r <p t h X r a n d =X go a l ;e l s eX r a n d =Sa m p l e _p o i n t (); 通过在R R T *算法中引入目标偏向思想,可以减少随机树在扩展时的随机性,减少损耗㊂2.2 度量函数为了提高随机树的扩展速率,原始R R T *算406长春工业大学学报 第41卷法采用欧几里得的度量方式,d=(x i1-x j1)2+(x i2-x j2)2㊂(1)通过式(1)可以看出,若采用该种度量方式增加计算的难度,应采用对角线距离的度量方式进行路径规划,即d=m a x(|x i1-x j1|,|x i2-x j2|)+(2-1)m i n(|x i1-x j1|,|x i2-x j2|)㊂(2) 2.3D i j k s t r a算法的嵌入通过目标偏向思想和对角线距离的度量方式,虽然可以减少随机树在扩展过程的随机性以及提高随机树的扩展速度,但是随机树在扩展时仍会存在一些没有用的随机节点,通过嵌入D i j k s t r a算法可以很好地解决这一问题㊂D i j k s t r a 算法是基于贪心算法模式演变而来,还是解决移动机器人最短路径的经典算法之一,它可以为机器人在环境地图中移动规划出一条最短路径㊂文中对随机树进行第二次采样,将之前所得到的路径进行重新调整,进而达到最优的一条路径㊂3实验仿真与分析3.1地图构建为验证改进R R T*算法的有效性,在MA T L A B仿真平台上进行实验,将改进后的算法效果与R R T*分别进行比较,验证该算法的优越性㊂对改进前后的算法在不同环境地图中进行仿真实验,环境地图的尺寸为500*500,扩展树的起始点位置用圆圈表示;目标点位置坐标用五角星表示㊂环境地图中黑色区域代表障碍物㊂3.2实验结果分析分别在宽敞环境㊁狭窄环境以及复杂环境下进行实验仿真,仿真结果图中细线路径代表R R T*算法生成的结果;粗线路径代表改进R R T*算法生成的结果㊂3.2.1宽敞环境地图仿真R R T*算法与改进R R T*算法在宽敞环境地图中的路径规划如图3所示㊂3.2.2狭窄环境地图仿真R R T*算法与改进R R T*算法在狭窄环境地图中的路径规划如图4所示㊂3.2.3复杂环境地图仿真 RR T*算法与改进R R T*算法在复杂环境地图中的路径规划如图5所示㊂(a)R R T*算法(b)改进R R T*算法图3宽敞环境地图中的路径规划(a)R R T*算法506第6期梁中一,等:改进R R T*路径规划算法(b )改进R R T *算法图4狭窄环境地图中的路径规划(a )R R T *算法(b )改进R R T *算法图5 复杂环境地图中的路径规划通过以上三种不同环境地图下的仿真结果,得到实验数据见表3㊂表3 实验数据环境R R T *算法改进R R T *算法路径长度/c m 完成时间/s 路径长度/c m 完成时间/s 宽敞173032886726.9狭窄157017275718.8复杂149032774526.2通过实验数据可见,改进后的R R T *算法在以上三个不同的地图环境中路径规划速度更快,路径长度也更短㊂4 结 语在MA T L A B 仿真平台上,针对不同的环境地图对改进前后的R R T *算法进行仿真验证及对比,结果显示,改进后的R R T *算法在性能上具有明显的优势,可以成功地避开环境地图中障碍物的威胁,具有一定的可行性㊂参考文献:[1] 霍凤财,迟金,黄梓健,等.移动机器人路径规划算法综述[J ].吉林大学学报:信息科学版,2018,36(6):639-647.[2] 杨俊成,李淑霞,蔡增玉.路径规划算法的研究与发展[J ].控制工程,2017,24(7):1473-1480.[3] K a v r a k i LE ,K o l o u n t z a k i sM N ,L a t o m b e JC .A -n a l y s i so f p r o b a b i l i s t i cr o a d m a p sf o r p a t h p l a n n i n g [C ]//I E E EI n t e r n a t i o n a lC o n f e r e n c eo nR o b o t i c s &A u t o m a t i o n .I E E E ,1998,14(1):166-171.[4] L a v a l l e SM ,K u f f n e r J J .R a p i d l y -e x p l o r i n g ra n d o m t r e e s :p r o g r e s sa n d p r o s p e c t s [C ]//A l g o r i t h m i ca n d C o m pu t a t i o n a lR o b o t i c sN e w D i r e c t i o n s .C l e v e l a n d ,U S A :C R CP r e s s ,2000:293-308.[5] D o s h iA A ,P o s t u l aAJ ,F l e t c h e rA ,e t a l .D e v e l -o p m e n t o fm i c r o -U A V w i t h i n t e g r a t e dm o t i o n p l a n -n i n g f o r o p e n -c u tm i n i n g s u r v e i l l a n c e [J ].M i c r o pr o -c e s s o r s a n d M i c r o s ys t e m s ,2015,39(8):829-835.[6] 付久鹏,曾国辉,黄勃,等.基于双向快速探索随机树的狭窄通道路径规划[J ].计算机应用,2019,39(10):2865-2869.[7] 刘紫燕,张杰.改进R R T 算法的室内移动机器人路径规划[J ].计算机工程与应用,2020,56(9):190-606长春工业大学学报 第41卷197.[8]王坤,黄勃,曾国辉,等.基于改进R R T-C o n n e c t的快速路径规划算法[J].武汉大学学报:理学版, 2019,65(3):283-289.[9]裴以建,杨超杰,杨亮亮.基于改进R R T*的移动机器人路径规划算法[J].计算机工程,2019,45(5): 285-290,297.[10]刘恩海,高文斌,孔瑞平,等.改进的R R T路径规划算法[J].计算机工程与设计,2019,40(8):2253-2258.[11]宋宇,王志明.改进R R T移动机器人路径规划算法[J].长春工业大学学报,2018,39(6):546-550.[12]朱旻华,任明武.基于多安全度模型的改进R R T路径规划方法[J].计算机与数字工程,2019,47(8):1941-1946.[13]丁帅,陈苗苗,王猛,等.基于R R T*算法的水下机器人全局路径规划方法[J].舰船科学技术,2019,41(17):66-73.[14]王辉,朱龙彪,王景良,等.基于D i j k s t r a-蚁群算法的泊车系统路径规划研究[J].工程设计学报,2016,23(5):489-496.[15]邹益民,高阳,高碧悦.一种基于D i j k s t r a算法的机器人避障问题路径规划[J].数学的实践与认识,2013,43(10):111-118.[16]车建涛,高方玉,解玉文,等.基于D i j k s t r a算法的水下机器人路径规划[J].机械设计与研究,2020,36(1):44-48.706第6期梁中一,等:改进R R T*路径规划算法。

rrt原理

rrt原理

rrt原理RRT原理及其在路径规划中的应用引言:路径规划是人工智能领域中一个重要的研究方向,其目标是找到从起点到终点的最优路径。

其中,Rapidly-exploring Random Trees (RRT)是一种常用的路径规划算法之一。

本文将介绍RRT原理及其在路径规划中的应用。

一、RRT原理RRT算法是由Steven M. LaValle于1998年提出的,其核心思想是通过随机采样和扩展的方式构建一棵树,从而搜索到起点到终点的路径。

下面将详细介绍RRT算法的具体步骤:1. 初始化:将起点作为树的唯一节点。

2. 随机采样:在搜索空间中随机生成一个点,作为扩展的目标。

3. 扩展:从树中选取与目标点最近的节点,然后沿着连线方向扩展一定距离,生成新的节点。

4. 碰撞检测:判断新节点与障碍物是否发生碰撞。

5. 添加节点:如果新节点通过碰撞检测,则将其添加到树中。

6. 终止条件:当新节点接近终点时,停止扩展并构建完整的树。

7. 路径提取:从终点回溯到起点,得到起点到终点的路径。

二、RRT在路径规划中的应用RRT算法具有以下优点,使其在路径规划中得到广泛应用:1. 适应性强:RRT算法能够适应不同形状和复杂度的搜索空间,可以应用于各种路径规划问题。

2. 高效性:RRT算法利用随机采样和扩展的方式构建树,能够在较短的时间内找到一条可行路径。

3. 可扩展性:RRT算法可以通过调整参数和优化策略来提高搜索效率和路径质量。

RRT算法在实际应用中有着广泛的应用,以下列举几个典型的应用场景:1. 机器人路径规划:RRT算法可以应用于机器人的自主导航中,通过构建树来搜索到机器人从起点到终点的最优路径,避开障碍物,并考虑到机器人的动力学约束。

2. 无人驾驶汽车:RRT算法可以应用于无人驾驶汽车的路径规划中,通过构建树来搜索到汽车从起点到终点的最优路径,避开障碍物,并考虑到交通规则和行驶速度等因素。

3. 游戏开发:RRT算法可以应用于游戏中的角色行为规划,通过构建树来搜索到角色从当前位置到目标位置的路径,并避开障碍物,使角色在游戏中具有智能的移动能力。

rrt算法

rrt算法

RRT算法
概述
Rapidly-exploring Random Trees (RRT) 算法是一种用来解决无人驾驶、机器人路径规划等问题的重要方法。

该算法由 Steven M. LaValle 于 1998 年提出,旨在通过随机采样的方式快速探索可行空间,并生成一个近似最优的路径。

原理
RRT算法的关键思想在于利用树结构来表示可行空间的探索情况。

算法通过不断生成随机点,并将这些点连接到树结构上,逐步扩展已有路径,直到找到一条连接起始点和目标点的路径为止。

算法流程
1.初始化:将起始点加入到树中。

2.生成随机点:在可行空间内随机生成一个点。

3.寻找最近节点:在树中找到距离随机点最近的节点。

4.插入新节点:将随机点与最近节点连接,并判断连接路径是否在可行
空间内。

5.重复生成:重复步骤2至步骤4,直到生成目标点。

6.构建路径:从目标点回溯至起始点,得到最终路径。

优缺点
•优点:
–算法简单且高效。

–能够处理高维度空间的路径规划问题。

–适用于动态环境下的路径规划。

•缺点:
–生成的路径不一定是最优解。

–需要进行大量的随机采样,可能无法适应复杂环境。

应用场景
RRT算法在无人驾驶、机器人导航、三维模型生成等领域有着广泛的应用。

其快速探索、简单实现的特点使得它成为了路径规划领域的重要工具。

结语
RRT算法作为一种基于随机采样的路径规划算法,虽然存在一定的局限性,但在许多实际问题中仍然表现出色。

通过不断优化算法参数及策略,RRT算法将会在未来的智能导航领域发挥更大的作用。

一种偏向目标型的RRT算法实现

一种偏向目标型的RRT算法实现

一种偏向目标型的RRT算法实现摘要:本文针对基本快速扩展随机树(RRT)算法存在搜索过于平均、效率低下、用时较长的缺陷,提出了一种偏向目标型的改进型RRT算法。

这种算法在生成随机点时以一定概率选择最终目标点作为局部目标点,使树的扩展有一个趋向于最终目标点的趋势,从而加快了算法的收敛速度,优化了规划路径。

最后通过Matlab程序仿真,在二维平面上验证了改进型算法相对于基本算法的优越性。

关键词:路径规划、RRT算法、偏向目标型一.引言机器人学是当今科学技术研究的热点问题,它汇聚了各个尖端学科最先进的研究成果。

科学家们从上世纪40年代开始着手研制机器人到如今,机器人的发展主要经历了三次技术变革。

从最简单的第一代机器人到现在的第三代智能机器人,机器人从只会机械的执行命令逐渐演变成利用各种先进的传感器自动的学习环境,适应环境,并完成人类下达的任务。

路径规划问题是机器人研究中的重要的组成部分,它的重点就是要使机器人自主并且安全的从起始位姿移动到目标位姿。

机器人路径规划主要分为全局路径规划和局部路径规划两大方面。

全局路径规划是一种利用环境全局信息的方法,它通常将周边环境信息存储在一张地图中,并且利用这张地图寻找可行路径。

全局路径规划的优点是有利于找到全局可行解和最优解,但是它的运算时间长,不适用于快速变化的动态环境。

常用的全局路径规划方法有栅格法、可视图法、拓扑法和自由空间法等。

局部路径规划只考虑机器人当前能探测到的环境信息,运算速度快、反应迅速,非常适用于动态环境。

但其缺点是算法可能无法收敛,不能保证机器人一定能够到达目标点,而且找到的可行路径可能会偏离最短路径。

常用的局部路径规划算法有人工势场法、模糊逻辑法、神经网络法和遗传算法等等。

RRT算法是最近几年才发展起来的,并且应用比较普遍的一种路径规划算法。

它在处理非完整约束的路径规划问题时具有相当大的优势,因为它可以将各种约束集成到算法本身之中,因此对环境要求较低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种偏向目标型的RRT算法实现摘要:本文针对基本快速扩展随机树(RRT)算法存在搜索过于平均、效率低下、用时较长的缺陷,提出了一种偏向目标型的改进型RRT算法。

这种算法在生成随机点时以一定概率选择最终目标点作为局部目标点,使树的扩展有一个趋向于最终目标点的趋势,从而加快了算法的收敛速度,优化了规划路径。

最后通过Matlab程序仿真,在二维平面上验证了改进型算法相对于基本算法的优越性。

关键词:路径规划、RRT算法、偏向目标型一.引言机器人学是当今科学技术研究的热点问题,它汇聚了各个尖端学科最先进的研究成果。

科学家们从上世纪40年代开始着手研制机器人到如今,机器人的发展主要经历了三次技术变革。

从最简单的第一代机器人到现在的第三代智能机器人,机器人从只会机械的执行命令逐渐演变成利用各种先进的传感器自动的学习环境,适应环境,并完成人类下达的任务。

路径规划问题是机器人研究中的重要的组成部分,它的重点就是要使机器人自主并且安全的从起始位姿移动到目标位姿。

机器人路径规划主要分为全局路径规划和局部路径规划两大方面。

全局路径规划是一种利用环境全局信息的方法,它通常将周边环境信息存储在一地图中,并且利用这地图寻找可行路径。

全局路径规划的优点是有利于找到全局可行解和最优解,但是它的运算时间长,不适用于快速变化的动态环境。

常用的全局路径规划方法有栅格法、可视图法、拓扑法和自由空间法等。

局部路径规划只考虑机器人当前能探测到的环境信息,运算速度快、反应迅速,非常适用于动态环境。

但其缺点是算法可能无法收敛,不能保证机器人一定能够到达目标点,而且找到的可行路径可能会偏离最短路径。

常用的局部路径规划算法有人工势场法、模糊逻辑法、神经网络法和遗传算法等等。

RRT 算法是最近几年才发展起来的,并且应用比较普遍的一种路径规划算法。

它在处理非完整约束的路径规划问题时具有相当大的优势,因为它可以将各种约束集成到算法本身之中,因此对环境要求较低。

而且该算法概率完备,在理论上肯定能找到可行路径。

但其缺点是搜索过于平均,算法效率较低,而且规划出的路径往往偏离最短路径。

本文针对RRT 算法存在的缺陷,提出了一种改进的偏向目标型的RRT 算法,该算法有效的解决了搜索过于平均的问题,提高了算法效率,而且规划出的路径是更接近于最短路径的次优路径。

二. RRT 算法的基本原理RRT 算法在路径规划时以状态空间中的一个初始点作为根节点,通过随机采样逐渐增加叶节点的方式,生成一个随机扩展树。

当随机树中的叶节点中包含了目标点或目标区域时,便可在随机树中找到一条从根节点到目标点的路径。

RRT 的扩展方式如下图1所示。

图 1 RRT 算法扩展过程图1中T 表示当前存在的扩展树,rand q 表示随机点,near q 表示离随机点randq 最近的一个树节点,然后在rand q 和near q 的连线上以步长step 为单位截取一个新节点new q ,如果new q 没碰到障碍物,则将new q 加入到扩展树T 中。

重复以上步骤直到new q 到达目标区域则算法结束,此时可在树T 中找到一条起点到目标点的路径。

为了便于计算机编程实现,我们将RRT的构建过程归纳为以下两个表格。

其中表1为各参数意义,表2为RRT构建流程。

表1 RRT算法中的各参数意义表2 RRT算法构建流程三. 改进的RRT 算法虽然RRT 算法概率完备,在理论上总能找出一条可行路径。

但是由于其扩展新节点的方式是在全空间随机产生的,一方面造成扩展树在全空间分布过于平均,算法效率较低;另一方面规划的路径质量不高,通常偏离最短路径较大。

针对以上缺陷,我们希望对基本的RRT 算法进行改进。

经过分析我们得知造成RRT 算法上述缺陷的根源是在扩展新节点时,随机点是在全空间随机产生的。

借鉴启发式算法的灵感,我们可以在确定随机点时让随机点以一定的概率等于目标点。

这样树的扩展就有一个趋于目标点的趋势,而不是在全空间随机分布,从而提高了算法的搜索效率,而且由于树节点的扩展是趋向于目标点的,理论上规划出来的路径也会更加接近于最短路径。

还应注意的是改进后的算法在概率上依然是完备的。

通过以上分析,我们知道改进的RRT 算法流程和基本的RRT 算法流程大致相同,只要把第二节中表2的第3个步骤进行如下的改写即可。

(1) 生成随机点rand q ;(2) 给定一个0到1的偏置变量Bias ,生成一个0到1的随机数rand ; (3) 如果rand<Bias,则rand q =goal q ;否则, rand q 不变。

四. Matlab 仿真实验 1.定义环境模型本文仿真是在二维平面上进行的,将整个平面划分为了有障碍部分和无障碍物部分,如下图2所示。

图 2环境模型示意图地图尺寸为100*100,其中白色区域代表无障碍空间,机器人可以随意行走;黑色区域表示障碍物空间,机器人不能通行。

为了仿真的方便,这里的障碍物都选择为圆形,这不影响算法验证的可靠性。

2.定义节点数据结构分析可知扩展树的每个节点有三个必要要素,分别是节点的x ,y 坐标以及其父节点。

因此我们定义节点的数据结构如下:123[,,]node x x x其中12,x x 表示节点在二维平面上的坐标,3x 表示节点的父节点序号。

考虑到起点作为根结点,其没有父节点,因此定义它的父节点序号为0。

3.仿真结果对比 (1)分布障碍地图起点(5,80),终点(90,70)图3 路径规划图,RRT算法(左),改进RRT算法(右)上图中蓝色的“*”点表示扩展树的所有节点,红色的曲线表示规划得到的路径。

通过图3的对比明显可以看出在分布障碍地图中,偏向目标型RRT算法得到的扩展树节点数更少,这说明算法的效率更高。

观察路径曲线可以看出偏向目标型RRT算法得到的路径更优。

(2)狭窄通道地图起点(1,1),终点(90,90)图4路径规划图,RRT算法(左),改进RRT算法(右)从图4中可以看出在狭窄通道地图中,我们可以明显的观察到基本RRT算法在搜索时表现出来的搜索过于平均,算法效率低下的缺陷,而且规划得到的路径也偏离最优路径较大。

而改进后的偏向目标型RRT算法体现出了强烈的趋向于目标点趋势,而且规划得到的路径也非常接近于最优路径。

(3)复杂随机地图起点(1,1),终点(90,90)图5路径规划图,RRT算法(左),改进RRT算法(右)通过图5,我们也可以看出改进后的RRT算法在复杂随机地图中也表现优异,证明了偏向目标型RRT算法的优越性。

五.总结本文针对基本RRT算法存在搜索过于平均,算法效率低下,规划路径偏离最短路径较大的缺陷,分析其缺陷原因在于随机点的确定在全空间分布过于平均导致的。

借鉴启发式算法的思想,我们提出了一种确定随机点的新方法,即让随机点以一定的概率等于目标点,这样就使随机树的扩展有一种趋向于目标点的趋势,从而解决了随机点分布过于平均的缺点。

最后通过Matlab仿真对两种算法的结果对比分析得到,改进后的偏向目标型RRT算法相对于基本RRT算法,无论在算法效率还是路径质量,都体现出了很大的优越性。

参考文献[1]王全.基于RRT的全局路径规划方法及其应用研究[D].国防科学技术大学,2014.[2]加东.基于RRT算法的非完整移动机器人运动规划[D].华东理工大学,2014.[3]林,贾菁辉.基于对比优化的RRT路径规划改进算法[J].计算机工程与应用,2011,47(3):210-213,228.[4]贾菁辉.移动机器人的路径规划与安全导航[D].理工大学,2009.[5]周培培.未知环境下机器人路径规划算法的研究[D].科技大学,2014.[6]猛.基于智能优化与RRT算法的无人机任务规划方法研究[D].航空航天大学,2012.[7]王滨,金明河,宗武等.基于启发式的快速扩展随机树路径规划算法[J].机械制造,2007,45(12):1-4.[8]宋金泽,戴斌,单恩忠等.一种改进的RRT路径规划算法[J].电子学报,2010,38(z1):225-228.[9]乔永兴.自主式移动机器人的路径规划[D].广西大学,2003.[10]磊,叶涛,谭民等.移动机器人技术研究现状与未来[J].机器人,2002,24(5):475-480.[11]刚,林成.复杂环境下路径规划问题的遗传路径规划方法[J].机器人,2001,23(1):40-44.附录本文中使用的Matlab程序%主程序function BiasGoal_RRTMap=CreateMap(1); %创建有障碍物的模拟地图,输入参数为不同的地图类型step=5; %步长startNode=[1,1,0]; %起点endNode=[90,90,0]; %终点tree=startNode; %根结点if((norm(startNode(1,1:2)-endNode(1,1:2))<=step)&(collision(startNode,endNode, Map)==0))path=[startNode(1,1:2);endNode(1,1:2)];elsesuccess=0;while success==0[tree,flag]=extendTree(tree,endNode,step,Map);success=flag;endendpath=findPath(tree);plotmap(Map,path,tree);%创建地图,有三种不同类型的地图function Map=CreateMap(num)if num==1 %分布障碍地图Map.BarNum=3;Map.LLCd=[0;0]; %地图左下角坐标Map.URCd=[100;100]; %地图右上角坐标radius=[20;15;20]; %障碍物半径barCenter=[33,75;38,30;75,50]; %障碍物中心点坐标for i=1:Map.BarNumMap.radius(i)=radius(i);Map.cx(i)=barCenter(i,1);Map.cy(i)=barCenter(i,2);endendif num==2 %狭窄通道地图Map.BarNum=2;Map.LLCd=[0;0];Map.URCd=[100;100];radius=[23.75;23.75];barCenter=[50,76.25;50,23.75];for i=1:Map.BarNumMap.radius(i)=radius(i);Map.cx(i)=barCenter(i,1);Map.cy(i)=barCenter(i,2);endendif num==3 %复杂随机地图Map.BarNum=100;Map.LLCd=[0;0];Map.URCd=[100;100];MaxRadius=2.5;for i=1:Map.BarNumMap.radius(i)=MaxRadius*rand;Map.cx(i)=Map.LLCd(1)+Map.radius(i)+(Map.URCd(1)-Map.LLCd(1)-2*Map.radius( i))*rand;Map.cy(i)=Map.LLCd(2)+Map.radius(i)+(Map.URCd(2)-Map.LLCd(2)-2*Ma p.radius(i))*rand;endend%基本RRT算法程序function [newTree,flagReach]=extendTree(tree,endNode,step,Map)flag=1;while flagrandPoint=[(Map.URCd(1)-Map.LLCd(1))*rand,(Map.URCd(2)-Map.LLCd(2))*rand];distmp=tree(:,1:2)-ones(size(tree,1),1)*randPoint;[mindis,minnum] = min(diag(distmp*distmp'));pvector=randPoint-tree(minnum,1:2);newPoint=tree(minnum,1:2)+pvector/norm(pvector)*step;if collision(newPoint,tree(minnum,1:2),Map)==0newNode=[newPoint,minnum];newTree=[tree;newNode];flag=0;endendif((norm(newPoint-endNode(1,1:2))<=step)&(collision(newPoint,endNode(1,1:2),M ap)==0))flagReach=1;elseflagReach=0;end%改进后的偏向目标型RRT算法程序function [newTree,flagReach]=BiasextendTree(tree,endNode,step,Map)flag=1;Bias=0.5;while flagrandPoint=[(Map.URCd(1)-Map.LLCd(1))*rand,(Map.URCd(2)-Map.LLCd(2))*rand];if rand<BiasrandPoint=endNode(1:2);enddistmp=tree(:,1:2)-ones(size(tree,1),1)*randPoint;[mindis,minnum] = min(diag(distmp*distmp'));pvector=randPoint-tree(minnum,1:2);newPoint=tree(minnum,1:2)+pvector/norm(pvector)*step;if collision(newPoint,tree(minnum,1:2),Map)==0newNode=[newPoint,minnum];newTree=[tree;newNode];flag=0;endendif((norm(newPoint-endNode(1,1:2))<=step)&(collision(newPoint,endNode(1,1:2),M ap)==0))flagReach=1;elseflagReach=0;end%检测新节点和每一个障碍物是否有碰撞,若有则返回1function collision_flag = collision(node, parent, Map);collision_flag = 0;for sigma = 0:.2:1,p = sigma*node(1:2) + (1-sigma)*parent(1:2);for i=1:Map.BarNum,if (norm([p(1);p(2)]-[Map.cx(i); Map.cy(i)])<=Map.radius(i)), collision_flag = 1;break;endendend%随机扩展树完成后,根据每个节点父节点的序号找出可行路径function path=findPath(tree)lastnodenum=size(tree,1);path=[tree(lastnodenum,1:2)];parentnodenum=tree(lastnodenum,3);while(parentnodenum~=0)path=[tree(parentnodenum,1:2);path];parentnodenum=tree(parentnodenum,3);end%画出地图以及路径function plotmap(Map,path,tree)close all;th=0:2*pi/100:2*pi;axis([0,100,0,100]);hold onfor i=1:Map.BarNumX = Map.radius(i)*cos(th) + Map.cx(i);Y = Map.radius(i)*sin(th) + Map.cy(i);fill(X,Y,'k'); %障碍物endplot(tree(:,1),tree(:,2),'*'); %所有节点plot(path(:,1),path(:,2),'r','linewidth',3); %路径课程论文评分标准表。

相关文档
最新文档