当前位置: 首页 > news >正文

基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

📝2.1 Dijkstra算法

📝2.2 A*算法

📝2.3 动态规划

🎉3 Matlab代码实现

💥1 概述

     在基于采样的方法中,需要在落在给定地图的未占用区域的地图上生成一定数量的点。然后,我们计算哪个节点与哪些节点有连接。通过这种方式,获得了生成的随机点的无向图。

    为了生成这些点,可以使用一些复杂的方法来尽可能聪明地在地图周围分布节点。但是在那个存储库中,选择通过均匀随机来生成它们。生成了100个节点,这些节点位于地图的自由区域。有给定的映射,生成的节点及其连接。

      通过Dijkstra、Astar和动态规划测试了102个节点图路径规划。

📚2 运行结果

📝2.1 Dijkstra算法

📝2.2 A*算法

📝2.3 动态规划

部分代码:

function [map, nodelocation]= generate_node(map,nnode)

% merge vertices of all obstacle
obsx=map.pgx{1};
obsy=map.pgy{1};
for i=2:length(map.pgx)
    obsx=[obsx NaN map.pgx{i}];
    obsy=[obsy NaN map.pgy{i}];
end
map.obsx=obsx;
map.obsy=obsy; 
% set nodelocation to all zero
nodelocation=zeros(nnode,2);
% generate nodes
n=1;
while (n<=nnode)
    % generate random two number in range of map's border
    rx=rand* (map.xrange(2)-map.xrange(1)) + map.xrange(1);
    ry=rand* (map.yrange(2)-map.yrange(1)) + map.yrange(1);
    state=0;
    % if this node is not inside any obstacle
    if ~inpolygon(rx,ry,obsx,obsy)
        % add this location to nodelocation list
        nodelocation(n,1)=rx;
        nodelocation(n,2)=ry;
        n=n+1;
    end
end
hold on;
plot(nodelocation(:,1),nodelocation(:,2),'r*');
hold off;

 

🎉3 Matlab代码实现

相关文章:

  • 国产EDA与FPGA芯片验证方案
  • 一种更优雅书写Python代码的方式
  • 自定义类型(结构体、位段、联合体、枚举)
  • 如何基于 GORM 实现 CreateOrUpdate 方法
  • Spring Boot核心之基本配置、日志配置、自动配置、条件注解
  • ArcGIS校园3D展示图制作详细教程
  • 【算法 | 实验6-1】n*n的网格,从左上角开始到右下角结束遍历所有的方块仅一次,总共有多少种不同的遍历路径
  • c++数据结构:图(邻接表)
  • SCOUT MINI Pro松灵机器人j建图定点步骤
  • 10个Pandas的小技巧
  • 广度优先遍历解决迷宫问题
  • 掌握 Microsoft Excel 宏和 Excel VBA
  • springboot框架中如何整合mybatis框架?
  • 阿里巴巴面试题- - -JVM篇(十七)
  • 学生党用什么蓝牙耳机好?学生党性价比高的蓝牙耳机推荐
  • 【comparator, comparable】小总结
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • C++11: atomic 头文件
  • jquery cookie
  • React的组件模式
  • Shell编程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 翻译--Thinking in React
  • 每天一个设计模式之命令模式
  • 深入浅出webpack学习(1)--核心概念
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 试着探索高并发下的系统架构面貌
  • 突破自己的技术思维
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 字符串匹配基础上
  • const的用法,特别是用在函数前面与后面的区别
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • #include<初见C语言之指针(5)>
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (1)bark-ml
  • (16)Reactor的测试——响应式Spring的道法术器
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (待修改)PyG安装步骤
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (十一)c52学习之旅-动态数码管
  • (算法)Game
  • (转)一些感悟
  • (转载)Linux网络编程入门
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net mvc部分视图
  • .NET Standard 的管理策略
  • .NET 反射 Reflect
  • .NET中的Exception处理(C#)
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken