news 2026/6/9 23:11:06

RRT路径规划示例图](https://i.imgur.com/3LkQ7jC.gif

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RRT路径规划示例图](https://i.imgur.com/3LkQ7jC.gif

基于matlab的全局路径规划算法中的快速扩展随机树RRT路径规划算法及其改进方法RRT Star、RRT_Conncet是一种具有状态约束的非线性系统生成开环轨迹的技术,相比于其他算法可以轻松处理障碍物的问题。 程序中的各参数已进行详细说明,起点坐标,终点坐标,步长,迭代数等均可根据需求进行更改,程序已调通

(假设这是程序运行后的动态效果图,实际使用时需替换为真实截图)

路径规划这事儿吧,有时候像极了找对象——既要避开各种"雷区",又得尽快到达终点。今天咱们来唠唠MATLAB里那几个用随机树开路的算法:RRT、RRT*和RRT-Connect。先扔个最简单的RRT实现片段镇楼:

% 基础RRT核心参数 start = [10,10]; % 起点坐标 goal = [90,90]; % 终点坐标 stepSize = 3; % 树枝生长步长 maxIter = 2000; % 最大迭代次数 obstacles = [30,30,15; 60,60,10]; % 障碍物[x,y,半径] tree = start; % 初始化树 for k = 1:maxIter randPoint = rand(1,2)*100; % 随机撒点 [minDist, nearestIdx] = min(vecnorm(tree - randPoint, 2, 2)); nearestNode = tree(nearestIdx,:); % 计算生长方向 direction = (randPoint - nearestNode)/norm(randPoint - nearestNode); newNode = nearestNode + direction * stepSize; if ~checkCollision(nearestNode, newNode, obstacles) tree = [tree; newNode]; if norm(newNode - goal) < stepSize disp('找到路径啦!') break; end end end

这段代码里最有意思的是随机撒点策略。就像玩飞镖,每次都往地图随便一扔,然后找树上离得最近的枝丫(第9行那个vecnorm计算),接着以固定步长往随机点方向生长新枝(第13行)。不过这种野蛮生长容易走弯路,不信你试试把stepSize改成10,路径立马变得跟醉汉走路似的七扭八歪。

基于matlab的全局路径规划算法中的快速扩展随机树RRT路径规划算法及其改进方法RRT Star、RRT_Conncet是一种具有状态约束的非线性系统生成开环轨迹的技术,相比于其他算法可以轻松处理障碍物的问题。 程序中的各参数已进行详细说明,起点坐标,终点坐标,步长,迭代数等均可根据需求进行更改,程序已调通

这时候RRT*带着优化来了。它在生长新节点后会搞个"邻里重新接线"的操作:

% RRT*新增的重布线逻辑 nearIndices = find(vecnorm(tree - newNode, 2, 2) < 5*stepSize); % 找近邻 minCost = cost(nearestIdx) + stepSize; for j = 1:length(nearIndices) if checkCollision(tree(nearIndices(j),:), newNode, obstacles) tentativeCost = cost(nearIndices(j)) + norm(tree(nearIndices(j),:) - newNode); if tentativeCost < minCost minCost = tentativeCost; nearestIdx = nearIndices(j); end end end

这个重布线就像给树枝做嫁接,把新节点接到更优的父节点上(第5行的代价比较)。代价函数cost这里简单用路径长度,但要是加上能耗、风险系数,立马就能玩出不同花样。

说到效率提升,RRT-Connect这货直接整了两棵树同时开搞:

% RRT-Connect双树生长逻辑 if mod(k,2) == 0 % 交替生长两棵树 [treeA, treeB] = growTree(treeA, treeB, stepSize); else [treeB, treeA] = growTree(treeB, treeA, stepSize); end function [tree1, tree2] = growTree(tree1, tree2, step) % 这里包含标准RRT生长逻辑 % 当两棵树相遇时触发路径连接 end

双树策略相当于从起点和终点两头挖隧道,实测迭代次数能比单树少30%以上。不过要注意障碍物多的时候,两棵树可能像牛郎织女似的被银河(障碍)隔开,这时候加点偏向目标区域的采样策略会好很多。

最后给个调参小技巧:步长建议设为地图尺寸的1/20~1/30,迭代次数别低于500次。遇到复杂地形时,把目标偏向概率调到5%~10%(就是在随机采样时有一定概率直接采样目标点),这样路径收敛速度能快不少。代码包里我塞了个plotTrajectory函数,运行完会画出带搜索树的路径图,障碍物用红色圆圈表示,调整起来特直观。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:44:25

Qwen2.5-VL-7B-Instruct新手入门:轻松实现图片问答

Qwen2.5-VL-7B-Instruct新手入门&#xff1a;轻松实现图片问答 1. 这不是“又一个”多模态工具&#xff0c;而是你真正能用起来的视觉助手 你有没有过这样的时刻&#xff1a; 截了一张网页&#xff0c;想快速转成可运行的HTML代码&#xff0c;却要手动敲半天&#xff1b;手里…

作者头像 李华
网站建设 2026/6/9 18:42:43

语音识别+情感分析一体化:SenseVoice-Small量化ONNX模型实战应用教程

语音识别情感分析一体化&#xff1a;SenseVoice-Small量化ONNX模型实战应用教程 本文介绍如何快速部署和使用SenseVoice-Small量化ONNX模型&#xff0c;实现高精度语音识别与情感分析的一体化应用。 1. 环境准备与快速部署 1.1 系统要求与依赖安装 SenseVoice-Small模型支持主…

作者头像 李华
网站建设 2026/6/8 14:32:09

无需专业设备!用SmolVLA在家搭建智能机器人控制系统

无需专业设备&#xff01;用SmolVLA在家搭建智能机器人控制系统 1. 引言&#xff1a;让机器人控制变得像聊天一样简单 想象一下这样的场景&#xff1a;你对着家里的机器人说"把桌上的杯子拿过来"&#xff0c;它就能准确理解你的意思&#xff0c;然后走过去拿起杯子…

作者头像 李华
网站建设 2026/6/8 19:09:44

AI头像生成器+Midjourney:最强头像制作组合

AI头像生成器Midjourney&#xff1a;最强头像制作组合 1. 为什么你需要这个组合——告别“随便找张图当头像”的时代 你有没有过这样的经历&#xff1a;想换微信头像&#xff0c;翻遍相册找不到一张既专业又不呆板的照片&#xff1b;想更新LinkedIn形象&#xff0c;却苦于没有…

作者头像 李华
网站建设 2026/6/9 22:01:17

手把手教你用Nunchaku FLUX.1 CustomV3生成高质量AI图片

手把手教你用Nunchaku FLUX.1 CustomV3生成高质量AI图片 你是不是也试过输入一大段提示词&#xff0c;结果生成的图要么细节糊成一片&#xff0c;要么风格跑偏到外太空&#xff1f;或者明明看到别人晒出的插画质感惊艳、光影通透&#xff0c;自己却调不出那种味道&#xff1f;…

作者头像 李华
网站建设 2026/6/9 21:20:37

手把手教你使用美胸-年美-造相Z-Turbo生成高质量图片

手把手教你使用美胸-年美-造相Z-Turbo生成高质量图片 你是不是也遇到过这样的烦恼&#xff1a;想为社交媒体、博客文章或者个人项目制作一些精美的配图&#xff0c;但自己不会画画&#xff0c;找设计师又太贵&#xff0c;网上的免费图片要么质量不高&#xff0c;要么版权不明&…

作者头像 李华