plotMesh

Отобразите сетки объектов на графике птичьего глаза

Описание

plotMesh(mPlotter,vertices,faces) отображает сетки, состоящие из заданных вершин и граней на графике птичьего глаза. Чтобы получить вершины и грани сетки объекта в сценарии вождения, используйте targetMeshes функция. Сетчатый плоттер, mPlotter, связано с birdsEyePlot и конфигурирует отображение сеток.

График птичьего глаза присваивает каждому актёру другой цвет, основанный на порядке цвета по умолчанию Axes объекты. Для получения дополнительной информации смотрите ColorOrder свойство для Axes объекты.

Чтобы удалить все сетки, связанные с сетевым плоттером mPlotter, вызвать clearData и задайте mPlotter как входной параметр.

пример

plotMesh(mPlotter,vertices,faces,'Color',colors) задает цвета сетей.

Примеры

свернуть все

Отображать актёров в сценарии вождения при помощи представлений их сетки вместо кубоидных представлений.

Создайте сценарий вождения и добавьте к сценарию 25-метровую прямую дорогу.

scenario = drivingScenario;
roadcenters = [0 0 0; 25 0 0];
road(scenario,roadcenters);

Добавить пешехода и транспортное средство в сценарий. Задайте размерности сетки актёров, используя предварительно построенные сетки.

  • Укажите пешеходный mesh как driving.scenario.pedestrianMesh объект.

  • Задайте транспортное средство mesh как driving.scenario.carMesh объект.

p = actor(scenario,'ClassID',4, ...
            'Length',0.2,'Width',0.4, ...
            'Height',1.7,'Mesh',driving.scenario.pedestrianMesh);

v = vehicle(scenario,'ClassID',1, ...
            'Mesh',driving.scenario.carMesh);

Добавить траектории для пешехода и транспортного средства.

  • Указать для пешехода пересечь дорогу со скоростью 1 метр в секунду.

  • Укажите, чтобы транспортное средство следовало по дороге со скоростью 10 метров в секунду.

waypointsP = [15 -3 0; 15 3 0];
speedP = 1;
smoothTrajectory(p,waypointsP,speedP);

wayPointsV = [v.RearOverhang 0 0; (25 - v.Length + v.RearOverhang) 0 0];
speedV = 10;
smoothTrajectory(v,wayPointsV,speedV)

Добавьте эгоцентрический график для транспортного средства. Включите отображение сеток.

chasePlot(v,'Meshes','on')

Создайте график птичьего глаза, на котором можно отобразить сетки. Также создайте сетчатый плоттер и пограничный плоттер маршрута. Затем запустите цикл симуляции.

  1. Получите контуры дорог, на которых работает транспортное средство.

  2. Получите вершины, грани и цвета сетки актёра с положениями относительно транспортного средства.

  3. Графическое изображение контуров дорог и сетки актёра на графике птичьего глаза.

  4. Приостановите сценарий, чтобы дать время для обновления графиков. График погони обновляется каждый раз, когда вы продвигаете сценарий.

bep = birdsEyePlot('XLim',[-25 25],'YLim',[-10 10]);
mPlotter = meshPlotter(bep);
lbPlotter = laneBoundaryPlotter(bep);
legend('off')

while advance(scenario)

   rb = roadBoundaries(v);

   [vertices,faces,colors] = targetMeshes(v);

   plotLaneBoundary(lbPlotter,rb)
   plotMesh(mPlotter,vertices,faces,'Color',colors)

   pause(0.01)
end

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

свернуть все

Сетчатый плоттер, заданный как MeshPlotter объект. Этот объект хранится в Plotters свойство birdsEyePlot объект и конфигурирует отображение меш на графике птичьего глаза. Чтобы создать этот объект, используйте meshPlotter функция.

Сетка вершин каждого актёра, заданная как массив ячеек N-element, где N - количество актёров.

Каждый элемент в vertices должна быть V -by-3 вещественной матрицей, содержащей вершины актёра, где:

  • V - количество вершин.

  • Каждая строка определяет 3-D (x, y, z) положение вершины. Когда вы используете targetMeshes функция для получения вершин сетки, положения вершин относятся к положению актёра, который вводится в эту функцию. Модули измерения указаны в метрах.

Сетчатые грани каждого актёра, заданные как массив ячеек N-element, где N количество актёров.

Каждый элемент в faces должна быть F -by-3 целочисленной матрицей, содержащей грани актёра, где:

  • F - количество граней.

  • Каждая строка задает треугольник идентификаторов вершин, образующих грань. Идентификаторы вершин соответствуют номерам строк в vertices.

Предположим, что первая грань iпервый элемент faces имеет эти идентификаторы вершин.

faces{i}(1,:)
ans =

     1     2     3

В iпервый элемент verticesстроки 1, 2 и 3 содержат (x, y, z) положения вершин, образующих эту грань.

vertices{i}(1:3,:)
ans =

    3.7000    0.9000    0.8574
    3.7000   -0.9000    0.8574
    3.7000   -0.9000    0.3149

Цвет mesh для каждого актёра, заданный как матрица N-на-3 триплетов RGB. N - количество актёров и равно количеству элементов в vertices и faces.

The iпервая строка colors - значение цвета RGB для граней в iпервый элемент faces. Функция применяет тот же цвет ко всем граням сетки актёра.

Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0, 1]. Для примера, [0.4 0.6 0.7].

Подробнее о

свернуть все

Сетки

В сценариях вождения mesh является основанным на треугольнике 3-D представлением объекта. Представления объектов в сетке более подробны, чем кубоидные (прямоугольные) представления объектов по умолчанию. Сетки полезны для генерации синтетических данных облака точек из сценария вождения.

Эта таблица показывает различие между кубоидным представлением и сетчатым представлением транспортного средства в сценарии вождения.

CuboidMesh

A vehicle represented as a cube.

A vehicle represented as a mesh.

Введенный в R2020b