obstaclePose

Положения препятствий

Описание

[obstacleIDs,poseStruct] = obstaclePose(capsuleListObj) возвращает ID препятствия и состояния для каждого препятствия в заданном списке капсул.

пример

[obstacleIDs,poseStruct] = obstaclePose(capsuleListObj,selectObstacleIDs) задает, для каких препятствий возвратить ID и утверждает.

[obstacleIDs,poseStruct,status] = obstaclePose(capsuleListObj,selectObstacleIDs) возвращает индикатор ли каждый ID в selectObstacleIDs \exists.

Примеры

свернуть все

Добавьте препятствия среде с помощью dynamicCapsuleList объект. Измените свойства препятствий. Удалите препятствие из среды. Визуализируйте состояния всех объектов в среде в различных метках времени.

Создайте dynamicCapsuleList объект. Извлеките максимальное количество шагов, чтобы использовать в качестве количества меток времени для контуров объектов.

capsuleList = dynamicCapsuleList;
numSteps = capsuleList.MaxNumSteps;

Добавьте препятствия

Задайте состояния для этих двух препятствий как линейный контур от x = 0 м к x = 100 м. Эти два препятствия разделяются на 10 м в противоположных направлениях на оси Y.

obsState = linspace(0,1,numSteps)'.*[100 0 0];
obsState1 = obsState+[0 10 0];
obsState2 = obsState+[0 -10 0];

Сгенерируйте положения по умолчанию и геометрические структуры для этих двух препятствий с помощью идентификаторов препятствия.

[obsIDs,obsPoseStruct] = obstaclePose(capsuleList,[1 2]);
[obsIDs,obsGeomStruct] = obstacleGeometry(capsuleList,obsIDs);

Обновите препятствия

Присвойте состояния препятствиям.

obsPoseStruct(1).States = obsState1;
obsPoseStruct(2).States = obsState2;

Увеличьте радиус первого препятствия 2 м.

obsGeomStruct(1).Geometry.Radius = 2;

обновите препятствия с помощью updateObstaclePose и updateObstacleGeometry функции объекта.

updateObstaclePose(capsuleList,obsIDs,obsPoseStruct);
updateObstacleGeometry(capsuleList,obsIDs,obsGeomStruct);

Визуализируйте препятствия.

show(capsuleList,'TimeStep',1:numSteps);
axis equal

Figure contains an axes object. The axes object contains 2 objects of type patch.

Удалите препятствия

Удалите первое препятствие из списка капсул путем определения его ID.

removeObstacle(capsuleList,1);

Визуализируйте препятствия снова.

show(capsuleList,'TimeStep',1:numSteps);
axis equal

Figure contains an axes object. The axes object contains an object of type patch.

Входные параметры

свернуть все

Динамический список капсул в виде dynamicCapsuleList или dynamicCapsuleList3D объект.

Идентификаторы препятствия в виде вектора из положительных целых чисел. Функция возвращает идентификаторы препятствия и состояния только для препятствий, заданных в этом векторе.

Выходные аргументы

свернуть все

Идентификаторы препятствий в виде вектора из положительных целых чисел.

Состояния для препятствий, возвращенных как структура или массив структур. Каждая структура содержит матрицу состояний для каждого препятствия. Матричный размер состояния зависит от того, используете ли вы dynamicCapsuleList или dynamicCapsuleList3D объект.

Типы данных: struct

Индикация относительно существования препятствия, возвращенного как N - вектор-столбец элемента из единиц, нулей и отрицательных единиц. Каждое значение указывает, существует ли связанное препятствие (1), обновленный (0), или копия (-1). Если вы задаете тот же ID препятствия несколько раз в selectObstacleIDs аргумент, затем функция отмечает все экземпляры того ID после первого как копии и игнорирует их.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте