Отображение эго-тел и препятствий в окружении
отображает начальное состояние всех тел и препятствий в указанном списке капсул и возвращает указатель на оси графика.ax
= show(capsuleListObj
)
задает опции, используя аргументы пары "имя-значение". Для примера, ax
= show(capsuleListObj
,Name,Value
)'FastUpdate',true
позволяет быстро обновлять существующий график.
Создайте путь к эго-телу и сохраните состояния препятствий, используя dynamicCapsuleList
объект. Визуализируйте состояния всех объектов в окружении в различных временных метках. Проверьте путь тела ego путем проверки на столкновения с препятствиями в окружении.
Создайте dynamicCapsuleList
объект. Извлеките максимальное количество шагов для использования в качестве количества меток времени для путей к объекту.
obsList = dynamicCapsuleList; numSteps = obsList.MaxNumSteps;
Добавить тело Ego
Задайте тело ego путем определения идентификатора, геометрии и состояния вместе в структуре. Геометрия капсулы имеет длину 3 м и радиус 1 м. Задайте состояние как линейный путь от x = 0m до x = 100m.
egoID1 = 1; geom = struct("Length",3,"Radius",1,"FixedTransform",eye(3)); states = linspace(0,1,obsList.MaxNumSteps)'.*[100 0 0]; egoCapsule1 = struct('ID',egoID1,'States',states,'Geometry',geom); addEgo(obsList,egoCapsule1); show(obsList,"TimeStep",[1:numSteps]); ylim([-20 20])
Добавление препятствий
Задайте состояния для двух препятствий, которые отделены от тела эго на 5 м в противоположных направлениях по оси Y. Предположим, что препятствия имеют одинаковую геометрию geom
как тело эго.
obsState1 = states + [0 5 0]; obsState2 = states + [0 -5 0]; obsCapsule1 = struct('ID',1,'States',obsState1,'Geometry',geom); obsCapsule2 = struct('ID',2,'States',obsState2,'Geometry',geom); addObstacle(obsList,obsCapsule1); addObstacle(obsList,obsCapsule2); show(obsList,"TimeStep",[1:numSteps]); ylim([-20 20])
Обновляйте препятствия
Изменяйте местоположения препятствий и размерности с течением времени. Используйте ранее сгенерированную структуру, изменяйте поля и обновляйте препятствия с помощью updateObstacleGeometry
и updateObstaclePose
функции объекта. Уменьшает радиус первого препятствия до 0,5 м, и изменяет путь, чтобы переместить его в сторону тела эго.
obsCapsule1.Geometry.Radius = 0.5; obsCapsule1.States = ... [linspace(0,100,numSteps)' ... % x linspace(5,-4,numSteps)' ... % y zeros(numSteps,1)]; % theta updateObstacleGeometry(obsList,1,obsCapsule1); updateObstaclePose(obsList,1,obsCapsule1);
Проверка на наличие коллизий
Визуализируйте новые пути. Показать, где столкновения между эго-телом и препятствием, которые отображение подсвечивает красным цветом. Заметьте, что столкновения между препятствиями не проверяются.
show(obsList,"TimeStep",[1:numSteps],"ShowCollisions",1); ylim([-20 20]) xlabel("X (m)") ylabel("Y (m)")
Программно проверяйте на столкновения при помощи checkCollision
функция объекта. Функция возвращает вектор логических значений, который указывает состояние каждого временного шага. Вектор транспонируется в целях отображения.
collisions = checkCollision(obsList)'
collisions = 1x31 logical array
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
Чтобы проверить пути с большим количеством шагов, используйте any
функция на векторе значений столкновения.
if any(collisions) disp("Collision detected.") end
Collision detected.
Обновление пути Ego
Задайте новый путь для тела ego. Снова визуализируйте пути, отображая столкновения.
egoCapsule1.States = ... [linspace(0,100,numSteps)' ... % x 3*sin(linspace(0,2*pi,numSteps))' ... % y zeros(numSteps,1)]; % theta updateEgoPose(obsList,1,egoCapsule1); show(obsList,"TimeStep",[1:numSteps],"ShowCollisions",1); ylim([-20 20])
capsuleListObj
- Список динамических капсулdynamicCapsuleList
| объекта dynamicCapsuleList3D
объектСписок динамических капсул, заданный как dynamicCapsuleList
или dynamicCapsuleList3D
объект.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'FastUpdate',true
включает опцию быстрого обновления существующего графика.'Parent'
- Родительские оси для построения графиковgca
(по умолчанию) | Axes
указательРодительские оси для построения графика, заданные как разделенная разделенными запятой парами, состоящая из 'Parent'
и указатель на свойства осей графика.
'FastUpdate'
- Выполните быстрое обновление существующего графикаfalse
или 0
(по умолчанию) | true
или 1
Выполните быстрое обновление существующего графика, заданное как разделенная разделенными запятой парами, состоящая из 'FastUpdate'
и логический 0 (
false
) или 1
(true
). Вы должны использовать show
функция объекта, чтобы первоначально отобразить список капсул, прежде чем вы сможете задать его с помощью этого аргумента.
Типы данных: logical
'TimeStep'
- Временные шаги для отображения1
(по умолчанию) | числовой вектор Временные шаги для отображения, заданные как разделенная разделенными запятой парами, состоящая из 'TimeStep'
и числовой вектор значений в области значений [1, N], где N - значение MaxNumSteps
свойство объекта, заданное в capsuleListObj
аргумент. Каждый временной шаг соответствует строке матрицы состояний для каждого тела ego и препятствия.
'ShowCollisions'
- Проверяйте и подсвечивайте столкновения на отображенииfalse
или 0
(по умолчанию) | true
или 1
Проверяйте и подсвечивайте столкновения на отображении, заданные как разделенная разделенными запятой парами, состоящая из 'ShowCollisions'
и логический 0
(false
) или 1
(true
).
Типы данных: logical
'EgoIDs'
- отображаемые идентификаторы EgoИдентификаторы Ego, которые будут отображаться, заданные как разделенная разделенными запятой парами, состоящая из 'EgoIDs'
и вектор положительных целых чисел. По умолчанию функция объекта отображает все тела ego.
'ObstacleIDs'
- Идентификаторы препятствий для отображенияИдентификаторы препятствий для отображения, заданные как разделенная разделенными запятой парами, состоящая из 'ObstacleIDs'
и вектор положительных целых чисел. По умолчанию функция отображает все препятствия.
ax
- Родительские оси графика списка динамических капсулAxes
указательРодительские оси списка динамических капсул графика, возвращенные как указатель на свойства anAxes.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.