💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
目录
💥1 概述
移动机器人路径规划[1] 是实现机器人自主导航的关键技术之一,其目的是使机器人在障碍物约束环境中,通过路径长度、搜索时间,平滑度以及避障能力等性能指标,求解出一条从起始点到目标点的最优或近似最优路径。
传统的移动机器人路径规划算法包括 dijkstra 算法、遗传算法、A∗算法[4]、粒子群算法等,然而面对复杂约束的机器人应用场景,这些算法往往需要大量的计算力。而Lavalle 提出的快速扩展随机树(Rapidly -Exploring RandomTree, RRT)算法,在状态空间中进行随机碰撞检测(Tree,RRT)算法,在状态空间中进行随机碰撞检测,将搜索空间逐渐扩展至可通行区域,进而搜索出一条从起始点到目标点的可行路径,避免了对规划空间建模,运行速度快,被广泛应用于移动机器人路径规划中。本文基于拓展随机树(RRT)算法的路径规划,用Matlab代码实现。
一、RRT算法路径规划概述
-
核心思想:RRT算法是一种基于随机采样的路径规划方法,其核心在于在状态空间中随机采样,构建扩展树探索可行路径。例如在机器人在复杂环境中移动时,通过这种方式寻找从起点到终点的路径。它适用于解决高维空间和复杂约束下的路径规划问题,像多自由度机器人在复杂场景中的规划就很适用。
-
基本步骤
-
随机采样:在可行驶区域内随机采样一个点作为目标点(随机点)。例如在一个有障碍物分布的地图中,在没有障碍物的区域随机确定一个点。
-
寻找最近节点:在已有的扩展树里,找到距离采样点最近的节点。
-
扩展树:从找到的最近节点朝着采样点方向扩展一定步长,形成新节点并加入扩展树。
-
碰撞检测:对新扩展的节点和路径进行碰撞检测,如果新节点或路径与障碍物碰撞,则放弃该次扩展并重新随机采样。
-
迭代扩展:重复上述步骤,直到扩展树的某个节点达到或者接近目标点。
-
二、RRT算法的优缺点
-
优点
-
快速探索:RRT算法能够快速地探索未知空间,从而找到可行的路径。例如在一个新的、未知的环境中,机器人可以利用该算法迅速找到一条可以通行的路线。
-
低计算复杂度:相比于其他需要对障碍物进行建模的路径规划算法,RRT算法避免了复杂的建模过程,降低了计算复杂度。这样在处理大规模环境或者复杂场景时,计算资源的消耗相对较少。
-
适用于高维空间和复杂约束:在高维空间或者有复杂约束的情况下,如多关节机器人的运动规划,RRT算法能够有效地解决路径规划问题。
-
-
缺点
-
非最优路径:传统的RRT算法可能产生非最优路径,由于其随机采样的特性,搜索过程有一定的盲目性。比如在有多个可选路径的环境中,可能选择的不是最短或者最经济的路径。
-
搜索效率低下:在某些情况下,可能需要大量的随机采样和扩展才能找到可行路径,导致搜索效率低下。例如在环境中障碍物分布较为复杂且不规则时,可能会花费较长时间寻找路径。
-
三、RRT算法的改进方法
-
目标偏置RRT(Goal - Biased RRT):在随机采样阶段引入一定概率选择目标点作为随机点,这样能更快地朝向目标点搜索路径。例如,在原本随机采样的过程中,设置一定的比例(如20%)直接将目标点作为采样点,从而提高搜索效率。
-
双向扩展RRT(Bidirectional RRT):同时从起始点和目标点出发,在两个方向上生成两棵树,通过不断扩展这两棵树来搜索可行路径。这种方式提高了搜索效率,因为双向同时搜索可以更快地找到连接起点和终点的路径。
-
采样约束RRT:对随机采样过程施加约束,减少探索无用空间,加速搜索过程。比如根据环境中障碍物的分布情况,设置采样区域的限制,避免在不可能存在路径的区域采样。
-
路径优化技术:如逆向寻优、三次B样条曲线优化等,用于改善RRT算法生成的路径质量,使其更接近最优路径。例如在初步找到一条可行路径后,利用逆向寻优的方法对路径上的节点进行调整优化。
四、RRT算法在不同领域的应用
-
机器人技术领域:在多自由度机器人的路径规划方面,RRT算法能够帮助机器人在复杂的工作环境中找到从初始位置到目标位置的路径,避开各种障碍物,实现高效的任务执行。
-
自动驾驶领域:对于自动驾驶车辆,RRT算法可以规划出在道路和交通场景中的行驶路径,应对不同的交通状况和道路障碍物。
-
无人机领域:无人机在执行任务过程中,需要在复杂的空域环境中飞行,RRT算法可用于规划无人机的飞行路径,避开空中障碍物,实现高效的航线规划。
五、RRT算法的未来发展方向
-
算法优化:通过引入更先进的优化算法和机器学习技术,进一步提高RRT算法的搜索效率和路径质量。例如利用深度学习中的神经网络来优化采样策略或者路径评估机制。
-
多传感器融合:结合多种传感器信息,提高机器人对环境的感知能力和路径规划的准确性。比如融合激光雷达、摄像头等传感器的数据,更全面地了解环境,从而做出更准确的路径规划。
-
协同路径规划:在复杂环境中,多个机器人(或车辆、无人机等)需要协同工作以完成任务。因此,协同路径规划技术将成为未来研究的重要方向之一。例如多台无人机协同执行搜索救援任务时,需要协调彼此的飞行路径。
-
实时性与鲁棒性:随着应用场景的复杂化,对路径规划算法的实时性和鲁棒性要求也越来越高。未来的RRT算法将更加注重这两个方面的提升,确保在各种复杂环境和动态变化的情况下,都能快速、稳定地规划出合理的路径。
📚2 运行结果
RRT_Continous:
RRT_Discrete:
部分代码:
y = 5;
x = 12;
world_offset_x = 150/y;
world_offset_y = 250/y;
empty_world = ones(int32(world_offset_x),int32(world_offset_y));
% obstacle 1
for i = int32(world_offset_x*0.25):int32(world_offset_x*0.32)
for j = int32(world_offset_y*0.2):int32(world_offset_y*0.27)
empty_world(i,j) = 0;
end
end
% obstacle 2
for i = int32(world_offset_x*0.3):int32(world_offset_x*0.4)
for j = int32(world_offset_y*0.35):int32(world_offset_y*0.45)
empty_world(i,j) = 0;
end
end
% obstacle 3
for i = int32(world_offset_x*0.25):int32(world_offset_x*0.45)
for j = int32(world_offset_y*0.55):int32(world_offset_y*0.65)
empty_world(i,j) = 0;
end
end
% obstacle 4
for i = int32(world_offset_x*0.57):int32(world_offset_x*0.78)
for j = int32(world_offset_y*0.58):int32(world_offset_y*0.65)
empty_world(i,j) = 0;
end
end
% obstacle 5
for i = int32(world_offset_x*0.25):int32(world_offset_x*0.78)
for j = int32(world_offset_y*0.75):int32(world_offset_y*0.82)
empty_world(i,j) = 0;
end
end
save environment
imshow(empty_world)
axis on
grid on
grid minor
🎉3 参考文献
[1]张志威,贾云伟,王永霞,付邦鹏.基于改进的快速扩展随机树的快速路径规划算法[J].天津理工大学学报,2022,38(03):14-19.
[2]侯宇翔,高焕兵,汪子健,杜传胜.改进RRT的移动机器人路径规划算法[J].电子测量技术,2022,45(16):47-52.DOI:10.19651/j.cnki.emt.2209355.