obstacleGeometry

Геометрические свойства препятствий

Описание

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

пример

[obstacleIDs,geomStruct] = obstacleGeometry(capsuleListObj,selectObstacleIDs) задает который препятствие возвратить ID и параметры геометрии для.

[obstacleIDs,geomStruct,status] = obstacleGeometry(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 объект.

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

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

свернуть все

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

Параметры геометрии для препятствий, возвращенных как структура или массив структур, где каждая структура содержит поля от структуры в Geometry поле связанного препятствия. Поля этой структуры зависят от того, используете ли вы dynamicCapsuleList или dynamicCapsuleList3D объект.

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

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

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

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