多地图-RRT算法规划路径

这篇具有很好参考价值的文章主要介绍了多地图-RRT算法规划路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RRT算法

%% 
%% 初始化
map=im2bw(imread('map2.bmp')); % bmp无损压缩图像500x500,im2bw把灰度图转换成二值图像01
source=[10 10]; % 起始点位置
goal=[490 490]; % 目标点位置
stepsize=20; % RRT每步步长
disTh=20; % 直到qnearest和目标点qgaol距离小于一个阈值
maxFailedAttempts = 10000;  % 最大尝试次数
display=true; % RRT是否展示

%%  %%%% 参数 %%%%%

tic;  % 保存当前时间
if ~feasiblePoint(source,map), error('source lies on an obstacle or outside map'); end
if ~feasiblePoint(goal,map), error('goal lies on an obstacle or outside map'); end
if display, imshow(map);rectangle('position',[1 1 size(map)-1],'edgecolor','k'); end  %展示图像,并创建带有尖角的矩形边框
RRTree=double([source -1]); % RRT 从起点开始(索引为-1),经过的结点和索引
failedAttempts=0;  % 已经尝试失败的次数
counter=0;  % 循环计数
pathFound=false;  % 是否找到路径的flag
while failedAttempts<=maxFailedAttempts  % RRT循环
    if rand < 0.5, 
        sample=rand(1,2) .* size(map);   % 50%几率随机采点
    else
        sample=goal; % 50%几率向目标前进
    end
    
    % 每一个分支都会继续分支
    [A, I]=min( distanceCost(RRTree(:,1:2),sample) ,[],1); % 发现结点和随机采样点最小距离的一行,并返回对应索引,[],1可以去掉
    closestNode = RRTree(I(1),1:2); %树结点最近点坐标,最近点可能多个(1)不可取
    theta=atan2(sample(1)-closestNode(1),sample(2)-closestNode(2));  % 产生新结点的方向
    newPoint = double(int32(closestNode(1:2) + stepsize * [sin(theta)  cos(theta)]));  % 产生新结点,先计算纵坐标,再计算横坐标
    
    if ~checkPath(closestNode(1:2), newPoint, map) % 检测最近结点到新结点的路径是否可行
        failedAttempts=failedAttempts+1;
        continue;
    end
    if distanceCost(newPoint,goal)<disTh, pathFound=true;break; end % 检测新结点是否到达目标点,即小于一定的阈值
    [A, I2]=min( distanceCost(RRTree(:,1:2),newPoint) ,[],1); % 检测检点是否已经存在树结点中
    if distanceCost(newPoint,RRTree(I2(1),1:2))<disTh, failedAttempts=failedAttempts+1;continue; end   %如果新结点在树结点中,记失败一次
    RRTree=[RRTree;newPoint I(1)]; % 将新结点介入到如结点中
    failedAttempts=0;
    % 每扩展一个新结点,画一条线
    if display, 
        line([closestNode(2);newPoint(2)],[closestNode(1);newPoint(1)]);
        counter=counter+1;M(counter)=getframe;
    end
end
% 补充最后一个新结点和终点的连线
if display && pathFound 
    line([closestNode(2);goal(2)],[closestNode(1);goal(1)]);
    counter=counter+1;M(counter)=getframe;
end
if display 
    disp('click/press any key');
    waitforbuttonpress; 
end
if ~pathFound, error('no path found. maximum attempts reached'); end

%% 重现原轨迹
path=[goal];
prev=I(1);
while prev>0
    path=[RRTree(prev,1:2);path];
    prev=RRTree(prev,3);
end
pathLength=0;
for i=1:length(path)-1, pathLength=pathLength+distanceCost(path(i,1:2),path(i+1,1:2)); end
fprintf('processing time=%d \nPath Length=%d \n\n', toc,pathLength);   % 打印运行时间toc和路径长度
imshow(map);rectangle('position',[1 1 size(map)-1],'edgecolor','k');
line(path(:,2),path(:,1));

仿真视频:

多地图RRT算法规划

地图一:
算法过程:多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
最终规划成的路线:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
地图二:
算法过程:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划

最终规划成的路线:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
地图三:
算法过程:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划

最终规划成的路线:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
地图四:
算法过程:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划

最终规划成的路线:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
地图五:
算法过程:
多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划

最终规划成的路线:

多地图-RRT算法规划路径,机器人学习,图像处理,RRT算法,路径规划
需要源代码私聊我。文章来源地址https://www.toymoban.com/news/detail-661061.html

到了这里,关于多地图-RRT算法规划路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于粒子群算法的机器人栅格地图路径规划

    基于粒子群算法的机器人栅格地图路径规划 路径规划是机器人导航和自主移动的重要任务之一。在栅格地图中,机器人需要找到一条最优路径以避开障碍物并到达目标位置。粒子群算法(Particle Swarm Optimization,PSO)是一种模拟自然群体行为的优化算法,可以用于解决路径规划

    2024年02月07日
    浏览(36)
  • 基于蚁群算法的机器人栅格地图路径规划

    基于蚁群算法的机器人栅格地图路径规划 蚁群算法(Ant Colony Optimization, ACO)是一种模拟蚂蚁觅食行为的启发式优化算法。它常被应用于求解路径规划问题,其中包括机器人在栅格地图上寻找最佳路径的情景。在本文中,我们将介绍如何使用蚁群算法来实现机器人在栅格地图

    2024年02月07日
    浏览(35)
  • A*算法在MATLAB中的机器人栅格地图路径规划

    A*算法在MATLAB中的机器人栅格地图路径规划 路径规划是机器人领域中的重要问题之一,其中A*(A-star)算法是一种常用且有效的路径搜索算法。本文将介绍如何在MATLAB中使用A*算法进行机器人栅格地图的路径规划,并提供相应的源代码。 首先,我们需要了解A 算法的原理。A 算

    2024年02月06日
    浏览(40)
  • 基于遗传算法求解机器人栅格地图路径规划问题matlab仿真

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月22日
    浏览(39)
  • 【栅格地图路径规划】基于双向蚁群算法的机器人栅格法路径规划附matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年02月22日
    浏览(48)
  • 【路径规划】鲸鱼算法栅格地图机器人最短路径规划【含Matlab源码 3613期】

    1 鲸鱼算法 一种元启发式优化算法,模拟座头鲸狩猎行为的元启发式优化算法。目前的工作与其他群优化算法相比的主要区别在于,采用随机或最佳搜索代理来模拟捕猎行为,并使用螺旋来模拟座头鲸的泡泡网攻击机制。该算法具有机制简单、参数少、寻优能力强等优点,在

    2024年02月04日
    浏览(39)
  • 基于Bresenham直线算法的机器人栅格地图路径规划(附带Matlab代码)

    基于Bresenham直线算法的机器人栅格地图路径规划(附带Matlab代码) 路径规划是机器人导航中的关键任务之一,它涉及寻找从起点到目标点的最优路径。在栅格地图中,机器人通常被表示为一个点,而障碍物被表示为栅格单元。Bresenham直线算法是一种经典的图形算法,可以用于

    2024年02月07日
    浏览(36)
  • A*算法在机器人栅格地图路径规划与避障中的应用

    路径规划是机器人导航和自主移动中的重要任务之一。A*(A-star)算法是一种常用的搜索算法,被广泛应用于机器人路径规划和避障问题中。本文将介绍如何使用A*算法求解机器人在栅格地图上的路径规划,并提供相应的Matlab代码。 栅格地图表示 栅格地图是将环境划分为网格

    2024年02月06日
    浏览(33)
  • 【路径规划】萤火虫算法栅格地图机器人最短路径规划【含Matlab源码 3662期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年02月20日
    浏览(48)
  • 【路径规划】自适应遗传算法机器人栅格地图最短路径规划【含Matlab源码 3570期】

    1 遗传算法 遗传算法是一种基于生物进化论模型的优化算法,通过模拟生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。遗传算法可以用于解决各种优化问题,如函数优化、组合优化、机器学习等

    2024年02月03日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包