主要内容

nav.StateValidatorclass

包:导航

创建国家验证器路径规划

自从R2019b

描述

nav.StateValidator所有状态验证器是一个接口用于路径规划。来自这门课如果你想定义自己的验证器。这表示允许状态和运动验证。

创建一个示例模板生成自己的状态空间类,调用createPlanningTemplate(“StateValidator”)。为特定的实现状态确认器类通用应用程序,看看验证状态运动规划

nav.StateValidator类是一个处理类。

类属性

文摘
真正的

类属性的信息,请参阅类属性

创建

描述

例子

ssObj= nav.StateValidator (stateSpace)创建一个验证器对象,验证在给定的状态空间。这个构造函数只能被称为派生类。创建自己的类定义使用createPlanningTemplate

属性

全部展开

状态空间的定义,指定为一个子类的对象nav.StateSpace。指定这个属性使用stateSpace投入建设。您还可以指定我们的任何预定义的对象验证状态部分运动规划

例子:stateSpaceSE2

属性:

GetAccess
公共
SetAccess
不可变的

方法

全部展开

例子

全部折叠

这个例子展示了如何使用createPlanningTemplate函数来生成一个定制自己的状态验证类的模板。状态验证用于路径规划算法,以确保有效的路径。模板函数提供了一个基本实现例如目的。

调用创建模板函数。这个函数为您生成一个类定义文件修改为您自己的实现。保存这个文件。

createPlanningTemplate (“StateValidator”)

类和属性定义

第一个模板指定了类定义的一部分,任何属性的类。源自nav.StateValidator类。你可以在这里指定任何其他用户定义的属性。

classdefMyCustomStateValidator <导航。StateValidator &matlabshared.planning.internal.EnforceScalarHandle属性%用户定义的属性结束

保存您的自定义状态确认器类,并确保你的文件名匹配的类名。

类构造函数

使用构造函数设置状态空间验证器的名称和指定状态空间对象。设置一个默认值为状态空间如果没有提供。调用基类的构造函数。初始化其他用户定义的属性。这个例子使用一个默认的MyCustomStateSpace前面的示例中所示。

方法函数obj = MyCustomStateValidator(空间)narginchk (0, 1)如果输入参数个数= = 0 = MyCustomStateSpace空间;结束obj@nav.StateValidator(空间);%初始化用户定义的属性结束

复制语义

指定复制方法定义。所有你的用户定义的变量的值复制到一个新对象,copyObj是一个深拷贝。给定的默认行为在这个例子中创建一个新的对象具有相同类型的副本。

函数copyObj =复制(obj) copyObj =函数宏指令(类(obj), obj.StateSpace);结束

检查状态的有效性

定义如何验证给定状态。的状态输入可以是一个行向量或矩阵的行向量为多个国家。自定义这个函数用于任何特殊的验证行为对障碍你的状态空间碰撞检查。

函数isValid = isStateValid (obj,状态)narginchk (2, 2);nav.internal.validation.validateStateMatrix(州、南obj.StateSpace.NumStateVariables“isStateValid”,“状态”);边界= obj.StateSpace.StateBounds ';发边线球的> = =状态边界(:1)&国家< =边界(2:);isValid =(发边线球的,2);结束

检查运动的有效性

定义如何生成之间的运动状态和确定它是否有效。对于这个示例,使用linspace均匀状态之间的插入和检查这些状态是否有效使用isStateValid。自定义这个函数样本国家之间或考虑其他分析方法确定给定状态之间的车辆可以移动。

函数[isValid, lastValid] = isMotionValid (obj, state1 state2) narginchk (3,3);state1 = nav.internal.validation.validateStateVector (state1,obj.StateSpace.NumStateVariables,“isMotionValid”,“state1”);state2 = nav.internal.validation.validateStateVector (state2,obj.StateSpace.NumStateVariables,“isMotionValid”,“state2”);如果(~ obj.isStateValid (state1))错误(“statevalidator: StartStateInvalid”,“开始的运动状态是无效的。”);结束%以固定时间间隔插入状态,检查状态的有效性numInterpPoints = 100;interpStates = obj.StateSpace.interpolate (state1、state2 linspace (0, 1, numInterpPoints));interpValid = obj.isStateValid (interpStates);%寻找无效状态。设置索引1 lastValid状态。firstInvalidIdx =找到(~ interpValid, 1);如果isempty (firstInvalidIdx) isValid = true;lastValid = state2;其他的isValid = false;lastValid = interpStates (firstInvalidIdx-1:);结束结束

终止部分的方法和类。

结束结束

保存状态空间验证器类定义。您现在可以使用类构造函数来创建一个对象的验证状态对于一个给定的状态空间。

扩展功能

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

版本历史

介绍了R2019b