项目介绍
本项目实现了一个基于快速扩展随机树(RRT)算法的高维多自由度路径规划仿真系统。系统模拟了机器人在包含多个圆形障碍物的复杂二维环境中,如何通过随机采样和树状扩展逐步寻找到从起始点到目标点的可行路径。该算法的核心优势在于无需对障碍物空间进行显式建模,通过不断向状态空间的空白区域生长,能够克服传统算法在处理高维空间时计算量呈指数级增长的问题。
功能特性
- 概率采样机制:采用带有偏向性的采样策略,在全局随机采样的基础上加入目标导向,使树的生长方向更有利于快速收敛。
- 动态树扩展:实时在图中绘制随机树的生长过程,包括节点生成的连线,直观展示搜索空间的覆盖能力。
- 严谨的碰撞检测:通过对路径段进行多步采样检测,确保生成的每一段路径都与圆形障碍物保持安全裕量。
- 结果可视化:能够自动回溯最优路径、计算总路径长度、统计运行总耗时及迭代次数,并以不同颜色区分起始点、目标点、障碍物和最终规划出的路径。
实现逻辑
算法的运行过程主要遵循以下逻辑步骤:
- 环境变量初始化:定义100x100的二维搜索区域,设定起始位置为(10, 10),目标位置为(90, 90),并配置步长为3.0,最大尝试次数为5000次。
- 环境构建:在空间内布置七组特定坐标和半径的圆形障碍物,用于模拟复杂的通行约束。
- 迭代循环:
- 生成采样点:系统生成随机数,以10%的概率直接选择目标点作为采样目标,以90%的概率在全场范围内随机取点。
- 寻找最近节点:在已知的所有树节点中,通过欧几里得距离检索逻辑,找到离采样点最近的现有节点。
- 节点生长计算:基于步长限制,从最近节点向采样点方向延伸固定距离,生成一个新的候选节点。
- 安全性验证:首先判断新生成的节点坐标是否超出边界,随后进行碰撞检测逻辑。
- 树结构增长:若通过验证,将新节点加入树数组中,并将其父节点索引指向被选中的最近节点,同时在界面上实时渲染连接线。
- 终止条件判定:每步生长结束后,计算新节点与目标点的距离,若距离小于设定的阈值(4.0),则认为已成功连接至目标区域,终止迭代。
- 路径回溯:规划成功后,从末端节点出发,根据存储的父节点索引逐级向上寻找,直至回到起始点,并将最终路径点串联输出。
关键算法与细节分析
- 最近邻搜索逻辑:采用遍历搜索方式,计算当前所有节点与随机采样点的向量模长(norm),确保树能以最短的物理跨度向新方向扩展。
- 碰撞检测子系统:该功能通过对新生成的支路进行10等分的密集采样,检测每一个采样点到各圆心的距离是否大于其半径叠加0.5的探测裕量。这种离散采样法有效地保证了路径在连续空间内的安全性。
- 角度控制与生长:利用atan2函数计算采样方向的角度,结合三角函数确保树的每一次步进都严格控制在设定的步进上限内,保证了搜索过程的平稳性。
- 概率引导策略:通过调节采样目标点的概率参数,平衡了算法的探索能力与开发能力,避免了盲目搜索导致的计算资源浪费。
使用方法
- 在Matlab软件中打开代码文件。
- 直接点击“运行”按钮或在命令行窗口输入主函数。
- 在弹出的图形窗口中观察随机树的生长过程。
- 观察命令行窗口输出的规划结果,包括是否成功、总耗时、迭代次数及最终路径长度。
- 规划完成后,红色粗实线将标记出系统计算出的最终安全路径。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 依赖工具箱:无需特殊工具箱,涉及的基本数学运算和绘图功能均在标准函数库中。
- 硬件要求:标准桌面级配置即可,算法具备较低的时间复杂度和内存需求。