主要内容

mobileRobotPropagator

轮式机器人系统的状态传播器

    描述

    mobileRobotPropagator对象是一个状态传播器,它根据控制命令、持续时间和目标状态传播和验证移动机器人的状态。该对象支持不同的运动学金宝app模型、积分器类型和控制策略。

    创建

    描述

    mobileProp= mobileRobotPropagator使用线性追踪控制策略为自行车运动模型创建移动机器人传播器。

    例子

    mobileProp= mobileRobotPropagator (名称,值使用名称-值参数指定属性。例如,mobileRobotPropagator(“ControlStepSize”= 0.01)创建一个控制步长为0.01的移动机器人传播器。

    属性

    全部展开

    类的子类的对象指定的用于规划期间采样的状态空间导航。StateSpace对象。

    状态空间负责表示系统的配置空间。对象应该包括与传播系统相关的所有状态信息。采用多层级联控制器的系统可以将持久的低级控制信息直接附加到状态向量,而状态传播器则直接管理顶级控制命令。

    用于验证状态的环境,指定为binaryOccupancyMapoccupancyMap,或vehicleCostmap(自动驾驶工具箱)对象。

    mobileRobotPropagator对象验证沿传播运动的离散状态。默认情况下,环境为空,因此对象只拒绝状态空间边界之外的状态。

    此属性只能在构建期间设置。

    用于估计传播成本的距离度量,指定为以下选项之一:

    • “欧几里得”-标准欧氏距离。

    • “杜宾”-沿着连接两个州的杜宾斯路径的距离。有关更多信息,请参见dubinsPathSegment

    • “reedsshepp”-沿着连接两个州的reed Shepp路径的距离。有关更多信息,请参见reedsSheppPathSegment

    此属性只能在构建期间设置。

    达到目标状态的距离阈值,指定为正标量。当传播状态时,当一个状态比这个距离阈值更接近时,就认为它等于目标状态。

    此属性只能在构建期间设置。

    用于传播状态的运动学模型,它确定了状态变量、控制输入的大小和其他系统参数,您可以在SystemParameters财产。

    运动学模型状态与控制

    类型 状态向量 控制输入
    “自行车” [x y theta] (v psi)
    “阿克曼” [xy] [v psiDot]

    此属性只能在构建过程中设置,选择Ackermann运动学模型需要机器人系统工具箱™。

    传播状态时的积分方法。集成步长可以通过SystemParameters财产。

    “rungekutta4”提供更准确的集成结果“欧拉”以速度为代价。

    此属性只能在构建期间设置。

    运动学模型、积分器和控制策略的参数,指定为具有以下字段的结构:

    • KinematicModel中指定的运动学模型类型的参数KinematicModel财产。

      • 轴距-轴距尺寸,以米为单位

      • SpeedLimit-前进和后退方向的速度,单位为米/秒。

      • SteerRatelimit-以弧度每秒为单位的转向速率限制

    • 积分器中指定的积分器类型的参数积分器财产。

    • ControlPolicy—控制策略的参数ControlPolicy财产。

    控制参数

    控制命令生成策略,指定为以下选项之一:

    • “linearpursuit”-对一个随机速度进行采样,并沿着连接初始状态和目标状态的矢量计算一个超前点。

    • “arcpursuit”-对随机速度进行采样,并沿与目标状态切向并与初始状态相交的弧计算一个超前点xy-安置。

    • “randomsamples”-从控制空间中绘制一个有限的随机控制样本集,并传播到每个样本。传播器选择最接近目标的样本,然后执行验证。

    控件指定的每个状态的控制命令的限制n2矩阵。n是系统模型的控制输入的数量。

    此属性是只读的。

    控制输出的数量,指定为非负标量。

    每个控制命令的持续时间,指定为正标量。

    传播指定为正整数的系统的最大次数。

    对象的功能

    距离 估计传播到目标状态的成本
    传播 未经验证就传播系统
    propagateWhileValid 传播系统并返回有效的运动
    sampleControl 生成控制命令和持续时间
    设置 设置移动机器人状态传播器

    例子

    全部折叠

    为自行车运动模型规划控制路径mobileRobotPropagator对象。为环境指定映射,设置状态边界,并定义起点和目标位置。使用基于控制的RRT算法规划路径,该算法使用状态传播器来规划运动和所需的控制命令。

    设置状态和状态传播器参数

    加载一个三元映射矩阵并创建一个occupancyMap对象。使用映射创建状态传播器。默认情况下,状态传播器使用自行车运动模型。

    负载(“exampleMaps”“ternaryMap”) map = occuancymap (ternaryMap,10);传播器= mobilerobot传播器(环境=地图);自行车型号

    在基于地图世界限制的状态空间上设置状态边界。

    : propagator.StateSpace.StateBounds (1:2) =...[map.XWorldLimits;map.YWorldLimits];

    计划路径

    从状态传播器创建路径规划器。

    planner = plannerControlRRT(传播器);

    指定开始和目标状态。

    Start = [10 15 0];目标= [40 30 0];

    在两个州之间规划一条路径。为了获得可重复的结果,请在规划之前重置随机数生成器。的计划函数输出navPathControl对象,其中包含状态、控制命令和持续时间。

    rng (“默认”)路径=计划(计划,开始,目标)
    path = navPathControl with properties: StatePropagator: [1x1 mobileRobotPropagator] States: [192x3 double] Controls: [191x2 double] duration: [191x1 double] TargetStates: [191x3 double] NumStates: 192 NumSegments: 191

    可视化的结果

    可视化地图并绘制路径状态。

    显示(map)情节(开始(1),(2)开始,“处方”)情节(目标(1)、目标(2),“走”)情节(path.States (: 1) path.States (:, 2),“b”)举行

    图中包含一个轴对象。标题为“占用网格”的坐标轴对象包含4个类型为image、line的对象。

    显示(v psi)控制输入的前进速度和转向角度。

    plot(path.Controls) ylim([-1 1])“速度(米/秒)”转向角(弧度)])

    图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象表示速度(米/秒),转向角度(rad)。

    R2021b中引入