主要内容

stateSpaceSE3

(3)状态空间

    描述

    stateSpaceSE3对象将参数和状态存储在SE(3)状态空间中,该状态空间由状态向量组成,表示为[xyzqwqx、qy求出].xy,z笛卡尔坐标。qwqx、qy,求出表示四元数的方向。该对象使用欧几里得距离计算和线性插值的状态的平移分量。该对象使用四元数距离计算和球面线性插值的旋转分量的状态。

    创建

    描述

    空间= stateSpaceSE3创建一个具有默认状态边界的SE(3)状态空间对象xy,z.状态变量qwqx、qy,求出对应的方向是没有界限的。

    例子

    空间= stateSpaceSE3 (界限创建一个SE(3)状态空间对象,其状态边界指定为一个7 × 2矩阵。每一行指定顺序中状态维度的最小值和最大值xyzqwqx、qy,求出.输入界限设置StateBounds财产。

    属性

    全部展开

    此属性是只读的。

    状态空间的名称,指定为字符向量。

    数据类型:字符

    此属性是只读的。

    状态空间维数,指定的维数,作为正整数返回。

    数据类型:

    状态变量的界,指定为实值的7 × 2矩阵。

    • 的上下边界x在米。

    • 属性的上下边界y在米。

    • 属性的上下边界z在米。

    • 第四行到第七行指定状态变量的上界和下界qwqx、qy,求出分别对应四元数的方向。

    请注意

    StateBounds属性只影响状态的笛卡儿分量。与方向相对应的状态变量是没有边界的。

    例子:stateSpaceSE3 ([-10 10;-10年10;-10年10;正正;正正;正正;正正])

    例子:空间。statbounds = [-10 10;-10年10;-10年10;正正;正正;正正;正正)

    数据类型:

    施加于xy,z距离计算,指定为正实标量。默认情况下,平移的权重会大于旋转的权重。

    对象计算距离为:

    d w x y z d x 2 + d y 2 + d z 2 + w d 2

    在哪里wxyz重量是否适用于xy,z坐标,w为四元数中应用于方向的权值。dxdy,dz距离在xy,z方向,分别。d是四元数距离。

    例子:空间。WeightXYZ = 2

    数据类型:

    用于四元数距离计算的权值,指定为正实标量。默认情况下,旋转的权重小于平移的权重。

    对象计算距离为:

    d w x y z d x 2 + d y 2 + d z 2 + w d 2

    在哪里wxyz是重量应用于xy,z坐标,w为四元数中应用于方向的权值。dxdy,dz距离在xy,z方向,分别。d是四元数距离。

    例子:空间。WeightQuaternion = 0.5

    数据类型:

    对象的功能

    复制 创建状态空间对象的深度拷贝
    距离 两态距离
    enforceStateBounds 减少州到州的边界
    插入 国家之间插入
    sampleUniform 样本状态使用均匀分布

    例子

    全部折叠

    创建3-D占用地图和相关的状态验证器。计划,验证,并可视化通过占用地图的路径。

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

    将一个城市街区的三维占用地图加载到工作区中。指定一个阈值,使单元格被认为是无障碍的。

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

    将占用地图充气,在障碍物周围增加一个安全操作的缓冲区。

    充气(omap 5)

    创建一个带有状态变量边界的SE(3)状态空间对象。

    ss = stateSpaceSE3([-20 220;-20 220;-10 100;正正;正正;正正;正正]);

    使用创建的状态空间创建一个3-D占用地图状态验证器。

    sv = validatorOccupancyMap3D (ss);

    将占用映射分配给状态验证器对象。指定采样距离间隔。

    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;

    设定开始和目标状态。

    起始= [40 180 25 0.7 0.2 0 0.1];目标= [150 33 35 0.3 0 0.1 0.6];

    使用指定的开始、目标和计划来规划路径。

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

    检查路径上的点是否处于有效状态。

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

    检查每个顺序路径状态之间的运动是否有效。

    isPathValid = 0(大小(pthObj.States 1) 1, 1,“逻辑”);i = 1:size(pthob . states,1)-1 [isPathValid(i),~] = isMotionValid(sv, pthob . states (i,:),),...: pthObj.States (i + 1));结束isPathValid
    isPathValid =5 x1逻辑阵列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)%画出路径

    图中包含一个坐标轴。以占用地图为标题的坐标轴包含4个类型为patch, scatter, line的对象。

    扩展功能

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

    介绍了R2020b