主要内容

updateObstacleGeometry

更新几何性质的障碍

描述

例子

updateObstacleGeometry (capsuleListObj,obstacleIDs,geomStruct)更新几何参数在胶囊列表中指定的障碍。如果ID指定的障碍已经不存在,添加一个新的功能障碍与ID列表。

状态= updateObstacleGeometry (capsuleListObj,obstacleIDs,geomStruct)返回一个指示是否一个障碍被添加,更新,或复制。

例子

全部折叠

建立一个自我身体路径和维护使用障碍状态dynamicCapsuleList对象。可视化的环境中的所有对象在不同的时间戳。验证自我身体的路径通过检查与障碍物碰撞的环境。

创建dynamicCapsuleList对象。提取步骤使用的最大数量随着时间戳你的对象数量的路径。

obsList = dynamicCapsuleList;numSteps = obsList.MaxNumSteps;

增加自我的身体

定义一个自我身体通过指定ID,在结构几何和状态。胶囊几何长度3米,半径1米。国家指定为一个线性路径x= 0 mx= 100

egoID1 = 1;几何学=结构(“长度”3,“半径”,1“FixedTransform”、眼睛(3));州= linspace (0, 1, obsList.MaxNumSteps)”。* (100 0 0);egoCapsule1 =结构(“ID”egoID1,“州”州,“几何”、几何学);addEgo (obsList egoCapsule1);显示(obsList“步伐”(1:numSteps));ylim (20 [-20])

图包含一个轴。轴包含一个补丁类型的对象。

添加障碍

指定国家自我身体分开的两个障碍5 m在相反的方向y设在. .假设的障碍有相同的几何几何学身体的自我。

obsState1 =州+ [0 5 0];obsState2 =州+ [0 5 0];obsCapsule1 =结构(“ID”,1“州”obsState1,“几何”、几何学);obsCapsule2 =结构(“ID”2,“州”obsState2,“几何”、几何学);addObstacle (obsList obsCapsule1);addObstacle (obsList obsCapsule2);显示(obsList“步伐”(1:numSteps));ylim (20 [-20])

图包含一个轴。轴包含3补丁类型的对象。

更新障碍

随着时间的推移改变你的障碍位置和几何尺寸。使用前面生成的结构,修改字段,并使用更新障碍updateObstacleGeometryupdateObstaclePose对象的功能。减少了半径0.5米的第一障碍,并改变对自我身体的路径移动它。

obsCapsule1.Geometry。半径= 0.5;obsCapsule1。州=[linspace(0100年,numSteps)”% xlinspace (5 4 numSteps) 'y %0 (numSteps 1)];updateObstacleGeometry (obsList 1 obsCapsule1);updateObstaclePose (obsList 1 obsCapsule1);

检查碰撞

可视化的新路径。展示自我的身体和一个障碍之间的碰撞,其中用红色突出显示。注意,不检查障碍之间的碰撞。

显示(obsList“步伐”(1:numSteps),“ShowCollisions”1);ylim(20[-20])包含(“X”(m))ylabel (“Y (m)”)

图包含一个轴。轴包含3补丁类型的对象。

通过使用编程方式检查碰撞checkCollision对象的功能。函数返回一个向量的逻辑值,表明每个时间步的状态。向量是转置显示的目的。

碰撞= checkCollision (obsList) '
碰撞=1 x31逻辑阵列0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0

验证路径与大量的步骤,使用任何碰撞函数向量的值。

如果任何(碰撞)disp (“碰撞检测。”)结束
碰撞检测。

更新自我的道路

指定一个自我身体的新路径。可视化的路径,显示碰撞。

egoCapsule1。州=[linspace(0100年,numSteps)”% x3 * sin (linspace(0, 2 *π,numSteps))”y %0 (numSteps 1)];updateEgoPose (obsList 1 egoCapsule1);显示(obsList“步伐”(1:numSteps),“ShowCollisions”1);ylim (20 [-20])

图包含一个轴。轴包含3补丁类型的对象。

输入参数

全部折叠

动态胶囊列表,指定为一个dynamicCapsuleListdynamicCapsuleList3D对象。

IDs的障碍来更新,指定为一个向量的正整数。

几何参数对自我身体,指定为一个结构或结构数组,其中每个结构包含的字段结构几何被更新的障碍. .这个领域的结构取决于您使用的是dynamicCapsuleListdynamicCapsuleList3D对象。

数据类型:结构体

输出参数

全部折叠

结果更新障碍,指定为N,0元列向量的和消极的。N中指定的数量的障碍吗obstacleIDs论点。每个值表明障碍是否删除(1),没有发现(0),或复制(1)。如果您指定ID的多次相同的障碍obstacleIDs除了最后一个输入参数,那么所有条目标记为一个重复。

扩展功能

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

介绍了R2020b