isStateValid
描述
例子
验证通过占用道路地图环境
这个例子展示了如何通过一个环境验证路径。
加载地图。使用简单的地图创建一个二进制入住率地图。
负载exampleMaps.mat地图= occupancyMap (simpleMap);显示(图)
指定一个粗糙的地图路径。
路径=[2 2π/ 2;10 15 0;17日8 -π/ 2];持有在情节(路径(:1),路径(:,2),”——o”)
创建一个验证器使用状态stateSpaceSE2
定义。指定映射和插值和验证路径段的距离。
验证器= validatorOccupancyMap (stateSpaceSE2);验证器。地图=地图;验证器。ValidationDistance = 0.1;
检查路径的点是有效的。三个点都在自由的空间,所以被认为是有效的。
isValid = isStateValid(验证器,路径)
isValid =3 x1逻辑阵列1 1 1
检查每个连续的路径之间的运动状态。的isMotionValid
函数沿着路径状态之间的篡改。如果一个路径段是无效的,情节最后有效点沿着路径。
startStates =[路径(1:);路径(2:)];endStates =[路径(2:);路径(3:)];为我= 1:2 (isPathValid lastValid] = isMotionValid(验证器,startStates(我,:),endStates(我,:));如果~ isPathValid情节(lastValid (1) lastValid (2),”或“)结束结束持有从
通过车辆Costmap环境验证路径
这个例子展示了如何通过一个环境验证路径。
加载地图。使用简单的地图创建车辆成本地图。指定一个通胀raidus 1米。
负载exampleMaps.mat地图= vehicleCostmap(双(simpleMap));地图。CollisionChecker = inflationCollisionChecker (“InflationRadius”1);图(图)
指定一个粗糙的地图路径。
路径=[3 3π/ 2;8 15 0;17日8 -π/ 2];持有在情节(路径(:1),路径(:,2),”——o”)
创建一个验证器使用状态stateSpaceSE2
定义。指定映射和插值和验证路径段的距离。
验证器= validatorVehicleCostmap (stateSpaceSE2);验证器。地图=地图;验证器。ValidationDistance = 0.1;
检查路径的点是有效的。三个点都在自由的空间,所以被认为是有效的。
isValid = isStateValid(验证器,路径)
isValid =3 x1逻辑阵列1 1 1
检查每个连续的路径之间的运动状态。的isMotionValid
函数沿着路径状态之间的篡改。如果一个路径段是无效的,情节最后有效点沿着路径。
startStates =[路径(1:);路径(2:)];endStates =[路径(2:);路径(3:)];为我= 1:2 (isPathValid lastValid] = isMotionValid(验证器,startStates(我,:),endStates(我,:));如果~ isPathValid情节(lastValid (1) lastValid (2),”或“)结束结束持有从
通过3 d入住率地图环境验证路径
创建一个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)%画出路径
输入参数
验证器
- - - - - -状态验证器对象
的子类的对象nav.StateValidator
状态验证器对象,指定为对象的子类nav.StateValidator
。这些预定义的状态验证器对象:
州
- - - - - -国家立场
n有效行向量|米——- - - - - -n矩阵
国家的立场,作为一个指定n有效行向量或米——- - - - - -n矩阵。n状态空间中指定的尺寸吗验证器
。米是验证的状态数。
数据类型:单
|双
输出参数
isValid
——有效状态
米元逻辑列向量
有效的国家,作为一个返回米元逻辑列向量。
数据类型:逻辑
版本历史
介绍了R2019b
Abrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。