文档帮助中心文档
检查自我身体和障碍之间的碰撞
collisionFound = checkCollision (capsuleListObj)
[fullResults,距离]= checkCollision (capsuleListObj选项)
例子
collisionFound= checkCollision (capsuleListObj)检查每一个自我身体是否与环境中的障碍物发生碰撞。该函数表示每个自我身体是否在每个时间步中发生碰撞。
collisionFound= checkCollision (capsuleListObj)
collisionFound
capsuleListObj
(fullResults,距离) = checkCollision (capsuleListObj,选项)检查每个自我主体与环境中的障碍的碰撞,并使用额外指定的碰撞检测选项返回结果选项。
(fullResults,距离) = checkCollision (capsuleListObj,选项)
fullResults
距离
选项
全部折叠
建立一个自我身体路径,并使用障碍状态dynamicCapsuleList对象。可视化环境中所有对象在不同时间戳的状态。通过检查与环境中障碍的碰撞来验证自我身体的路径。
dynamicCapsuleList
创建dynamicCapsuleList对象。提取要用作对象路径时间戳数量的最大步骤数。
obsList = dynamicCapsuleList;numSteps = obsList.MaxNumSteps;
增加自我的身体
通过在一个结构中指定本我、几何和状态来定义一个自我身体。胶囊几何形状的长度为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 0 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 m,并改变路径将其移向自我身体。
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 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])
dynamicCapsuleList3D
动态胶囊列表,指定为dynamicCapsuleList或dynamicCapsuleList3D对象。
碰撞检测选项,指定为具有以下字段的结构:
FullResults——返回每个障碍物的碰撞结果,作为一个逻辑指定0(假)或1(真正的)。看到fullResults输出参数。
FullResults
0
假
1
真正的
ReturnDistance返回距离计算从碰撞检查,指定为一个逻辑0(假)或1(真正的)。看到距离输出参数。
ReturnDistance
数据类型:结构体
结构体
碰撞检查结果,返回为n——- - - - - -e矩阵的逻辑值。默认情况下,该函数检查任何对象之间的任何碰撞,它返回n——- - - - - -e矩阵,n在指定的状态中,自我体的最大状态数是多少capsuleListobj对象,e是自我身体的数量。
capsuleListobj
数据类型:逻辑
逻辑
每个障碍物的完整碰撞检查结果,返回为n——- - - - - -o——- - - - - -e逻辑值的数组。n在指定的状态中,自我体的最大状态数是多少capsuleListobj参数,o是障碍的数量,和e是自我身体的数量。
返回fullResults参数,指定选项的输入参数FullResults字段设置为真正的。
距离障碍,返回为一n——- - - - - -e数字矩阵或n——- - - - - -o由- - - - - -e数字数组。参数的值决定了距离参数的尺寸和行为FullResultsoptions参数的字段
返回距离参数,指定选项的输入参数ReturnDistance字段设置为真正的。
数据类型:单|双
单
双
addEgo
addObstacle
egoGeometry
egoPose
obstacleGeometry
obstaclePose
removeEgo
removeObstacle
显示
updateEgoGeometry
updateEgoPose
您有这个示例的一个修改版本。要用编辑打开这个例子吗?
您点击了一个对应于这个MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站来获得可用的翻译内容,并看到当地的活动和提供。根据您所在的位置,我们建议您选择:。
你也可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。
与当地办事处联系