Robotics System Toolbox路径规划

使用Robotics System Toolbox工具箱在已知环境中规划路径

%% 导入环境数据

filePath = fullfile(fileparts(which('PathPlanningExample')),'data','exampleMaps.mat');

load(filePath)

%%

% 将环境数据读入工具箱

map = robotics.BinaryOccupancyGrid(simpleMap, 2)

%%

% 显示环境

show(map)

%% 将机器人转化为质点需要考虑的形态参数

robotRadius = 0.2;

%%

% 环境中的障碍转化

mapInflated = copy(map);

inflate(mapInflated,robotRadius);

%%

% 显示转化后的环境

show(mapInflated)

%% 定义规划器

prm = robotics.PRM

%%

% 读入转化后的环境

prm.Map = mapInflated;

%%

% 设置规划器参数

prm.NumNodes = 50;

prm.ConnectionDistance = 5;

%% 设置起点终点

startLocation = [2 1];

endLocation = [12 10];

%%

% 路径搜索

path = findpath(prm, startLocation, endLocation)

%%

% 显示路径结果

show(prm)

%% 复杂环境情况

map = robotics.BinaryOccupancyGrid(complexMap, 1)

%%

show(map)

%%

mapInflated = copy(map);

inflate(mapInflated, robotRadius);

%%

show(mapInflated)

%%

prm.Map = mapInflated;

%%

prm.NumNodes = 20;

prm.ConnectionDistance = 15;

%%

show(prm)

%%

startLocation = [3 3];

endLocation = [45 35];

%%

path = findpath(prm, startLocation, endLocation)

%% 加入循环直到搜索到合适路径

while isempty(path)

% 不合适就增加节点

prm.NumNodes = prm.NumNodes + 10;

% 更新规划器

update(prm);

% 搜索

path = findpath(prm, startLocation, endLocation);

end

% 显示路径

path

show(prm)

%% 真实环境情况

map = robotics.OccupancyGrid(ternaryMap, 20)

%%

show(map)

%%

mapInflated = copy(map);

inflate(mapInflated, robotRadius);

%%

show(mapInflated)

%%

prm.Map = mapInflated;

prm.NumNodes = 60;

prm.ConnectionDistance = 5;

%

show(prm)

%%

startLocation = [7 22];

endLocation = [15 5];

% 同样加入循环

path = findpath(prm, startLocation, endLocation);

while isempty(path)

prm.NumNodes = prm.NumNodes + 10;

update(prm);

path = findpath(prm, startLocation, endLocation);

end

% 显示结果

path

show(prm)

原文发布于微信公众号 - 帮你学MatLab(MatLab_helper)

原文发表时间:2018-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

UVM(七)之phase及objection

UVM(七)之phase及objection 这两个概念与UVM验证平台息息相关,phase就好比铁轨,让UVM这趟列车在铁轨上向前运行,不会脱轨,不...

4458
来自专栏我的博客

原生JavaScript第一天

首先:感谢李炎恢老师的无私奉献 其次:下面的学习总结都是根据李炎恢老师的视频以及参考网络资料编写,转载请注明出处:http://www.0377joyous.c...

2844
来自专栏程序员互动联盟

【编程基础第四讲】遇到编译错误怎么办?

存在问题: 现在刚入门的小伙伴,在编译初级的代码一遇到错误就显得不知所措,那么怎么办? 解决方案: 编程的新手,包括刚毕业工作的同学在解决编译错误时有时候不知...

3679
来自专栏韩伟的专栏

实用主义编程规范:JAVA篇

JAVA代码规范 1.规范说明 此规范包含:避免出现常见恶劣代码的禁令;指导编写合格代码的基本规则 此规范不包含:分析与设计出符合业务需求的代码; 2.基本原则...

4346
来自专栏从零开始学自动化测试

python笔记11-多线程之Condition(条件变量)

前言 当小伙伴a在往火锅里面添加鱼丸,这个就是生产者行为;另外一个小伙伴b在吃掉鱼丸就是消费者行为。当火锅里面鱼丸达到一定数量加满后b才能吃,这就是一种条件判断...

3715
来自专栏林冠宏的技术文章

php isset( $test ) 的神奇之处。

这次总结下 php 的一个 函数 :  boolean isset($test), 返回值:boolean类型,传入参数不为空,返回true,反之,false ...

19010
来自专栏Phoenix的Android之旅

用代理模式优雅地写代码

代理模式通常分为两种 · 静态代理 · 动态代理 关于代理模式,今天先由浅到深说一下静态代理。

1011
来自专栏技术记录

谈谈序列化—实体bean一定要实现Serializable接口?

导读:最近在做项目的过程中,发现一个问题,就是我们最开始的时候,传递参数包括返回类型,都有map类型。但是由于map每次都要匹配key值,很麻烦。所以在之后就将...

3978
来自专栏程序员宝库

给Python新手的一些编码建议

每天你都应该努力提升自己的编码技能,今天我给Python新手带来了一些编程建议。 Python箴言 打开Python交互终端并运行下面命令 ? 然后命令会有一...

38010
来自专栏IT可乐

深入理解计算机系统(4.1)------Y86指令集体系结构

  本章我们将进入处理器体系结构介绍的神秘海洋中,我们熟悉的手机,电脑等设备的核心硬件都离不开处理器。处理器可以称的上是人类创造的最复杂的系统之一,一块手指大小...

25710

扫码关注云+社区

领取腾讯云代金券