主要内容

stateSpaceSE3

(3)状态空间

自从R2020b

    描述

    stateSpaceSE3对象参数和状态存储在SE(3)状态空间,这是由状态向量表示为(x,y,z,qw,qx、,qy,求出]。x,y,z笛卡尔坐标。qw,qx、,qy,求出四元数表示方向。对象使用欧氏距离计算和线性插值的翻译组件状态。对象使用四元数的距离计算和球形线性插值旋转组件的状态。

    创建

    描述

    空间= stateSpaceSE3创建一个SE(3)状态空间对象的默认状态边界x,y,z。状态变量qw,qx、,qy,求出相应的方向不是有界。

    例子

    空间= stateSpaceSE3 (界限)创建一个SE(3)状态空间对象与国家范围指定为一个7-by-2矩阵。每一行指定最小值和最大值的一个维度的顺序x,y,z,qw,qx、,qy,求出。输入界限设置StateBounds财产。

    属性

    全部展开

    这个属性是只读的。

    状态空间的名称,指定为一个特征向量。

    数据类型:字符

    这个属性是只读的。

    的状态空间维度,指定的尺寸,作为一个正整数返回。

    数据类型:

    状态变量的范围,指定为一个7-by-2矩阵的值。

    • 第一行指定的上下界限x在米。

    • 第二行指定的上下界限y在米。

    • 第三行指定的上下界限z在米。

    • 第四到第七行指定状态变量的上下界限qw,qx、,qy,求出分别对应于取向四元数。

    请注意

    StateBounds属性只对笛卡尔组件的状态。相对应的状态变量取向不是有界。

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

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

    数据类型:

    应用到重量x,y,z距离计算,指定为一个积极的真正的标量。默认情况下,翻译选择的重量要大于旋转的重量。

    对象计算的距离为:

    d = w x y z ( d x 2 + d y 2 + d z 2 ) + w d 2

    ,

    在哪里wxyz重量申请吗x,y,z坐标,w是应用于定位在四元数的重量。dx,dy,dz的距离吗x,y,z方向,分别。d四元数的距离。

    例子:空间。WeightXYZ = 2

    数据类型:

    重量适用于四元数距离计算,指定为一个积极的真正的标量。默认情况下,选择旋转的重量小于体重的翻译。

    对象计算的距离为:

    d = w x y z ( d x 2 + d y 2 + d z 2 ) + w d 2

    ,

    在哪里wxyz重量适用于x,y,z坐标,w是应用于定位在四元数的重量。dx,dy,dz的距离吗x,y,z方向,分别。d四元数的距离。

    例子:空间。WeightQuaternion = 0.5

    数据类型:

    对象的功能

    复制 状态空间对象的创建深复制
    距离 两个国家之间的距离
    enforceStateBounds 减少州边界
    插入 国家之间插入
    sampleUniform 示例使用均匀分布状态

    例子

    全部折叠

    创建一个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