【MATLAB Navigation Toolbox之状态验证器】

本篇文章基于MATLAB导航工具箱的官方文档,详情参考A* 网格地图路径规划器 - MATLAB - MathWorks 中国

目录

1 状态验证器的意义

2 validatorOccupancyMap

3 举例


1 状态验证器的意义

状态验证器是来验证状态空间中的某个位置是否被占用,也就是平常我们所说的这个点是不是在空区域,在障碍物外。

2 validatorOccupancyMap

validator=validatorOccupancyMap;%第一种
validator=validatorOccupancyMap(stateSpace);%第二种
validator=validatorOccupancyMap(stateSpace,Name,Value);%第三种

这是基于二维网格图的验证器,还有其他类型的验证器,本篇文章就以这个验证器为例,其他的验证器的操作都是类似的

第一种默认使用SE2状态空间

第二种自己选择预定义的状态空间或自定义空间

第三种进行属性的设置

StateSpace:可以设置为stateSpaceSE2(默认),stateSpaceDubins,stateSpaceReedsShepp

Map:默认是宽度和高度都是10m的网格地图,每米一个网格

ValidationDistance:代表状态空间下采样的间隔

对象函数

isStateValid:输入状态验证器和状态值组成的矩阵,得到每个状态的布尔值

path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
validator = validatorOccupancyMap;
isValid = isStateValid(validator,path)

isMotionValid:输入状态验证器和初始状态值组成的矩阵和末状态值组成的矩阵,得到初末状态之间的离散路径是否有效,若无效返回最后一个有效点

startStates=[1,1,pi];endStates=[5,5,-pi];
validator = validatorOccupancyMap;
[isPathValid, lastValid] = isMotionValid(validator,startStates(1,:),endStates(1,:));

3 举例

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)
path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o");
validator = validatorOccupancyMap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;
startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab Navigation是指在Matlab环境下进行路径规划和导航的相关功能。其中,路径长度(pathLength)是指路径的总长度,可以通过navPathControl函数来控制路径的生成和控制。该函数可以接受不同的参数,如传播(propagator)、状态(states)、控制(controls)、目标(targets)和持续时间(durations)等。\[1\] 在Matlab中,使用A*路径规划(plannerAStarGrid)可以进行路径规划。该路径规划需要一个地图作为输入,可以通过指定不同的参数来创建。需要注意的是,大多数涉及到的Matlab代码需要R2019以上的版本才能运行。\[2\] 在路径规划中,可以使用dubinsConnection和connect函数来定义特定的路径段。dubinsConnection函数可以将两个点之间的路径段连接起来,得到一个由多个dubinsPathSegment组成的矩阵。而interpolate函数可以对路径段进行插值,得到路径上的一系列位姿(poses)。此外,还可以通过指定长度(lengths)来控制插值的步长,同时还可以获取路径上的方向(directions)。\[3\] 综上所述,Matlab Navigation提供了一系列功能和函数,可以在Matlab环境下进行路径规划和导航的相关操作。 #### 引用[.reference_title] - *1* *3* [【MATLAB Navigation Toolbox之路径类型】](https://blog.csdn.net/weixin_65089713/article/details/124809413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【MATLAB Navigation Toolbox之A* 路径规划】](https://blog.csdn.net/weixin_65089713/article/details/124303615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无意2121

创作不易,多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值