文档帮助中心文档
更新自我身体的状态
updateEgoPose (capsuleListObj egoIDs poseStruct)
状态= updateEgoPose (capsuleListObj egoIDs poseStruct)
例子
updateEgoPose (capsuleListObj,egoIDs,poseStruct)更新胶囊列表中指定自我身体的状态。如果指定的自我ID还不存在,该函数将使用该ID添加一个新的自我体到列表中。
updateEgoPose (capsuleListObj,egoIDs,poseStruct)
capsuleListObj
egoIDs
poseStruct
状态= updateEgoPose (capsuleListObj,egoIDs,poseStruct)返回一个指示器,指示是否添加了自我主体、更新了自我主体还是复制了自我主体。
状态= updateEgoPose (capsuleListObj,egoIDs,poseStruct)
状态
全部折叠
建立一个自我身体的路径,并保持障碍状态使用dynamicCapsuleList对象。可视化环境中所有对象在不同时间戳下的状态。通过检查与环境中的障碍物的碰撞来验证自我身体的路径。
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米y设在. .假设障碍有相同的几何形状几何学作为自我身体。
几何学
obsState1 = states + [0 5 0];obsState2 = states + [0 -5 0];obsCapsule1 =结构(“ID”,1,“州”obsState1,“几何”、几何学);obsCapsule2 =结构(“ID”2,“州”obsState2,“几何”、几何学);addObstacle (obsList obsCapsule1);addObstacle (obsList obsCapsule2);显示(obsList“步伐”(1: numSteps));ylim (20 [-20])
更新障碍
随时间改变障碍物的位置和几何尺寸。使用前面生成的结构,修改字段,并使用updateObstacleGeometry和updateObstaclePose对象的功能。将第一个障碍物的半径减小到0.5米,并改变路径将其移向自我体。
updateObstacleGeometry
updateObstaclePose
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)”)
控件以编程方式检查冲突checkCollision对象的功能。该函数返回一个逻辑值向量,指示每个时间步骤的状态。为了显示目的,将矢量转置。
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 1 1 1 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])
dynamicCapsuleList3D
动态胶囊列表,指定为dynamicCapsuleList或dynamicCapsuleList3D对象。
要更新的自我体id,指定为正整数向量。
为自我身体的状态,指定为一个或多个结构阵列,其中每个结构包含在“几何自我身体的场被更新。结构阵列的每个元素包含了每个自我身体的状态矩阵。状态矩阵的大小取决于你是否使用adynamicCapsuleList或dynamicCapsuleList3D对象。
几何
数据类型:结构体
结构体
自我主体更新的结果,具体为N元素的列向量为1、0和- 1。N自我主体的数目是否在egoIDs论点。每个值指示是否更新主体(1),未找到(0),或复制品(-1).如果你多次指定同一个自我IDegoIDs输入参数,则除最后一项外的所有项都被标记为重复项。
1
0
-1
addEgo
addObstacle
egoGeometry
egoPose
obstacleGeometry
obstaclePose
removeEgo
removeObstacle
显示
updateEgoGeometry
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系