主要内容

validatorOccupancyMap3D

基于三维网格地图状态验证器

自从R2020b

    描述

    validatorOccupancyMap3D根据入住率值对象验证状态和离散运动的3 d入住率地图。对象解释无障碍地图位置为有效状态。对象解释占领和未知的地图位置为无效状态。

    创建

    描述

    验证器= validatorOccupancyMap3D创建一个3 d入住率地图验证器与一个SE(3)会用默认设置状态空间。

    例子

    验证器= validatorOccupancyMap3D (stateSpace)在指定的状态空间创建一个验证器。的stateSpace输入设置的值StateSpace财产。

    验证器= validatorOccupancyMap3D (stateSpace,名称,值)属性使用一个或多个名称-值对。未指定的属性有默认值。在报价附上每个属性的名字。

    例如,validatorOccupancyMap3D (ValidationDistance, 0.1)创建一个3 d入住率地图验证器采样间隔为0.1。

    属性

    全部展开

    这个属性是只读的。

    状态空间的验证状态,指定为的一个子类nav.StateSpace。这些预定义的状态空间对象:

    例子:validatorOccupancyMap3D (stateSpaceSE3)

    地图用于验证状态,指定为一个occupancyMap3D对象。

    例子:验证器。地图= occupancyMap3D(10)

    国家间的间隔抽样和检查状态有效性,指定为一个积极的数字标量。

    例子:验证器。ValidationDistance = 0.1

    数据类型:

    状态变量映射xyz状态向量坐标,指定为一个三元素向量的形式[xIdx yIdx zIdx]

    数据类型:

    对象的功能

    复制 创建深拷贝的验证器对象
    isMotionValid 检查状态之间的路径是否有效
    isStateValid 检查状态是否有效

    例子

    全部折叠

    创建一个3 d入住率地图和相关的验证器。计划、验证和可视化通过占用道路地图。

    加载和分配映射到状态验证器

    一块3 d占用城市地图加载到工作区。指定一个阈值的细胞考虑无障碍。

    mapData =负载(“dMapCityBlock.mat”);omap = mapData.omap;的核心。FreeThreshold = 0.5;

    膨胀的入住率地图添加一个缓冲地带安全运行的障碍。

    充气(omap, 1)

    创建一个SE(3)状态空间对象状态变量的范围。

    党卫军= stateSpaceSE3 ([-20 220;-20 220;-10 100;正正;正正;正正;正正]);

    创建一个3 d入住率映射状态验证器使用创建的状态空间。

    sv = validatorOccupancyMap3D (ss);

    分配入住率validator对象映射到状态。指定采样间隔的距离。

    sv。地图= omap; sv.ValidationDistance = 0.1;

    计划和可视化道路

    创建一个路径规划与最大连接距离增加。减少迭代的最大数量。

    规划师= plannerRRT (ss、sv);计划。MaxConnectionDistance = 50;计划。MaxIterations = 1000;

    创建一个用户定义的评估函数来确定是否达到目标的路径。指定在抽样选择目标状态的概率。

    计划。GoalReachedFcn = @ ~, x, y)(规范(x - y (1:3)) (1:3) < 5);计划。GoalBias = 0.1;

    设定开始和目标状态。

    开始= 25 [40 180 0.7 0.2 0.1 0];目标= (150 33 35 0.3 0 0.1 - 0.6);

    使用指定的开始规划一条路径,目标,计划。

    [pthObj, solnInfo] =计划(计划,开始,目标);

    检查的路径是有效的。

    pthObj.States isValid = isStateValid (sv)
    isValid =7 x1逻辑阵列1 1 1 1 1 1 1

    检查每个连续的路径之间的运动状态是有效的。

    isPathValid = 0(大小(pthObj.States 1) 1, 1,“逻辑”);i = 1:尺寸(pthObj.States, 1) 1 (isPathValid(我)~]= isMotionValid (sv, pthObj.States(我,:):pthObj.States (i + 1));结束isPathValid
    isPathValid =6 x1逻辑阵列1 1 1 1 1 1

    可视化结果。

    显示(omap)scatter3(开始(1,1),开始(1、2),开始(1、3)‘g’,“填充”)%画开始状态scatter3(目标(1,1)、目标(1、2)、目标(1、3)“r”,“填充”)%画目标状态plot3 (pthObj.States (: 1) pthObj.States (:, 2), pthObj.States (:, 3),的r -,“线宽”,2)%画出路径

    图包含一个坐标轴对象。坐标轴对象与标题入住率地图,包含X [m], ylabel Y(米)包含4对象类型的补丁,散点、线。

    扩展功能

    C / c++代码生成
    生成C和c++代码使用MATLAB®编码器™。

    版本历史

    介绍了R2020b