news 2026/8/14 5:27:27

【路径规划】基于RRT算法机器人最短路径规划matlab代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【路径规划】基于RRT算法机器人最短路径规划matlab代码

​1 简介

移动机器人运动规划技术是自主移动机器人导航的核心技术之一,而路径规划技术是导航技术研究的一个关键课题.路径规划的任务是:依据一定的评价准则(如距离最短,时间最短,工作代价最小等等),在一个存在障碍物的工作环境内,寻求一条从初始点开始到目标点结束的较优的无碰撞路径.本文旨在结合实际环境基于快速扩展随机树(Rapidly-Exploring Random Tree, RRT)算法实现自主移动机器人的路径规划。​

2 部分代码

%*************************************** %% ????? clear all; close all; x_I=1; y_I=1; % ????? x_G=700; y_G=700; % ????? Thr=50; % ??????? Delta= 30; % ?????? NearDelta= 60; % ??near????? %% ????? T.v(1).x = x_I; % T????????v??????????????T??? T.v(1).y = y_I; T.v(1).xPrev = x_I; % ?????????????? T.v(1).yPrev = y_I; T.v(1).dist=0; % ???????????????????? T.v(1).rootDist=0; % ???????????????????? T.v(1).indPrev = 0; % T.v(1).p = []; % ????????????? %% ?????棗???? figure(1); ImpRgb=imread('newmap.png'); Imp=rgb2gray(ImpRgb); imshow(Imp) xL=size(Imp,1); yL=size(Imp,2); hold on plot(x_I, y_I, 'ro', 'MarkerSize',10, 'MarkerFaceColor','r'); plot(x_G, y_G, 'go', 'MarkerSize',10, 'MarkerFaceColor','g'); count=1; found = 0; updateFlag = 0; solutionEndIdx = -1; solutionIdxSet = []; solutionEllipse = inf; for iter = 1:4000 %Step 1: ???????????x_rand,????????????? x_rand=[xL, yL].*rand(1,2); if norm(x_rand - [x_I,y_I])+norm(x_rand - [x_G,y_G])> solutionEllipse continue; end %Step 2: ?????????????? x_phase1_near x_phase1_near=[]; min_dis_toT = inf; for i = 1:length(T.v) t_node = T.v(i); t_nodexy = [t_node.x, t_node.y]; dis_toT = norm(t_nodexy - x_rand); if dis_toT < min_dis_toT min_dis_toT = dis_toT; x_phase1_near = t_nodexy; end end %Step 3: ????x_new?? dxy = x_rand - x_phase1_near; dxynorm = dxy/norm(dxy); x_new = x_phase1_near + dxynorm*Delta; if ~collisionChecking(x_new,[],Imp) continue; end %Step 3: ??????x_new?????x_link,???near?? near_set = []; min_dis_toT = inf; x_link_idx = -1; for i = 1:length(T.v) t_node = T.v(i); t_nodexy = [t_node.x, t_node.y]; dis_toT = norm(t_nodexy - x_new); if dis_toT < NearDelta && collisionChecking(x_new,t_nodexy,Imp) near_set = [near_set;t_nodexy, i]; curDist = dis_toT + T.v(i).rootDist; if min_dis_toT > curDist min_dis_toT = curDist; x_link_idx = i; end end end if x_link_idx == -1 continue; end x_link = [T.v(x_link_idx).x,T.v(x_link_idx).y]; %Step 4: ?x_new???T %??????x_new?????x_link count=count+1; T.v(count).x = x_new(1); T.v(count).y = x_new(2); T.v(count).xPrev = x_link(1); T.v(count).yPrev = x_link(2); T.v(count).dist=norm(x_new - x_link); T.v(count).rootDist= T.v(x_link_idx).rootDist + norm(x_new - x_link); T.v(count).indPrev = x_link_idx; T.v(count).p = plot([x_link(1), x_new(1)],[x_link(2), x_new(2)], 'r', 'marker', '.'); drawnow; %Step 5:??rewire updateFlag = 0; x_new_idx = count; % disp(['cur is ', num2str(curNodeIdx), 'link to ', num2str(selected_nea_idx)]) for i = 1:size(near_set, 1) node_xy = near_set(i,1:2); node_idx = near_set(i,3); % ???x_new??? if node_idx == x_new_idx continue; end dist = norm(x_new - node_xy); if T.v(node_idx).rootDist > T.v(x_new_idx).rootDist + dist updateFlag = 1; T.v(node_idx).rootDist = T.v(x_new_idx).rootDist + dist; T.v(node_idx).xPrev = x_new(1); T.v(node_idx).yPrev = x_new(2); T.v(node_idx).dist = dist; T.v(node_idx).indPrev = x_new_idx; delete(T.v(node_idx).p) T.v(node_idx).p = plot([x_new(1), node_xy(1)],[x_new(2), node_xy(2)], 'r', 'marker', '.'); drawnow; end end %Step 6:????????????? if norm(x_new-[x_G,y_G]) < Thr && collisionChecking(x_new,[x_G,y_G],Imp) && found == 0 % ??[x_G y_G]?? count=count+1; solutionEndIdx = count; T.v(count).x = x_G; T.v(count).y = y_G; T.v(count).xPrev = x_new(1); T.v(count).yPrev = x_new(2); T.v(count).dist=norm(x_new - [x_G,y_G]); T.v(count).rootDist= T.v(x_new_idx).rootDist + norm(x_new - [x_G,y_G]); T.v(count).indPrev = x_new_idx; T.v(count).p = plot([x_new(1), x_G],[x_new(2), y_G], 'r', 'marker', '.'); found = 1; % ??[x_I x_I]?x_new ??????????? pathIndex = solutionEndIdx; solutionIdxSet = [pathIndex]; set(T.v(pathIndex).p, 'color', 'b','Linewidth', 3); for k = 1:1000 pathIndex = T.v(pathIndex).indPrev; if pathIndex == 1 break end solutionIdxSet = [solutionIdxSet, pathIndex]; set(T.v(pathIndex).p, 'color', 'b','Linewidth', 3); end % ???????? drawnow; end %Step 7: ???????????????????????????????????? if found == 1 && updateFlag == 1 % ?????? solutionEllipse = -inf; for i = 1:length(solutionIdxSet) set(T.v(solutionIdxSet(i)).p, 'color', 'r','Linewidth', 1); node_xy = [T.v(solutionIdxSet(i)).x,T.v(solutionIdxSet(i)).y]; if solutionEllipse < norm(node_xy - [x_I,y_I])+norm(node_xy - [x_G,y_G]) solutionEllipse = norm(node_xy - [x_I,y_I])+norm(node_xy - [x_G,y_G]); end end % ??????????? pathIndex = solutionEndIdx; solutionIdxSet = [pathIndex]; set(T.v(pathIndex).p, 'color', 'b','Linewidth', 3); for k = 1:1000 pathIndex = T.v(pathIndex).indPrev; if pathIndex == 1 break end solutionIdxSet = [solutionIdxSet, pathIndex]; set(T.v(pathIndex).p, 'color', 'b','Linewidth', 3); end % ???????? drawnow; end end

3 仿真结果

4 参考文献

[1]朱宏辉, 王嘉豪. 一种移动机器人路径规划新算法[J]. 计算机测量与控制, 2020, 28(11):6.

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

厦门网站建设cnmxcm:为什么你的企业网站总是没人看?揭秘幕后真相与避坑指南

在这个互联网渗透率高达70%以上的时代,如果你问一个在厦门做生意的朋友:“你有家企业网站吗?”他大概率会笑着摇摇头,或者翻翻手机展示他的微信公众号、抖音账号。这其实是一个非常普遍的现象,甚至可以说是一种“错觉”。很多人觉得,有了社交媒体,有了电商平台,还要那个…

作者头像 李华
网站建设 2026/8/14 5:27:05

谷歌 Pixel 11 Pro 推出 HiLight 指示灯,简约怀旧体验能否回归?

Pixel 11 Pro 配备 HiLight 指示灯Pixel 11 Pro 系列机型在摄像头凸起处配备了闪烁指示灯&#xff0c;HiLight 指示灯会在来电和与 Gemini 交互时闪烁。该功能可能会有更多拓展&#xff0c;但别指望在发布时就实现。过去&#xff0c;手机的 LED 指示灯能让人根据颜色清楚知道何…

作者头像 李华
网站建设 2026/8/14 5:25:28

揭秘叶县建设局网站背后的民生温度与工程品质

在这个信息爆炸、指尖触达一切的时代,我们对于政府部门的印象,往往还停留在那些厚重的文件柜、繁琐的办事流程或者是那个总是排着长队的办事大厅里。很多人提到“叶县建设局”,脑海里浮现的可能是钢筋水泥的冰冷触感,或者是轰鸣作响的建筑工地。但是,当我真正沉下心来,去…

作者头像 李华
网站建设 2026/8/14 5:25:20

如何低成本快速建设一个微商的网站并实现销量爆发式增长全攻略

在这个万物互联、指尖触达一切的时代,如果你还在纠结要不要搞自己的私域流量池,要不要搞自己的独立商城,那我只能告诉你,你的竞争对手可能已经悄悄把客户圈走了。很多人一提到“建设一个微商的网站”,脑海中浮现的往往是那些花里胡哨、代码乱飞、加载慢得像蜗牛的科技产品…

作者头像 李华
网站建设 2026/8/14 5:24:53

网站建设中页面下载的重要性及优化策略

在这个信息爆炸的时代,互联网的每一个角落都充斥着各种各样的网站。从大型企业的官方网站到小型个人的博客平台,每一个网站都有其独特的功能和价值。然而,在这些网站背后,有一个至关重要的环节常常被忽略,那就是网站建设中页面下载。这不仅关系到用户的第一印象,更直接影…

作者头像 李华
网站建设 2026/8/14 5:24:35

2024年光泽网站建设实战指南:中小企业如何用高性价比策略在搜索引擎突围并实现品牌数字化升级

在这个数字化浪潮席卷全球的时代,几乎每个企业主都在思考同一个问题:我的生意该怎么搬到网上去?以前,大家觉得有个电话、有个实体店就万事大吉了,那时候做生意靠的是街坊邻里的口耳相传,靠的是“酒香不怕巷子深”。但现在,情况完全变了。巷子虽然不深,但信息太杂了,如…

作者头像 李华