showDynamicMap

Постройте динамическую карту сетки заполнения

Описание

showDynamicMap(tracker) строит динамическую карту сетки заполнения в локальных координатах. Статические ячейки показывают с помощью полутоновых изображений, в которых серость представляет вероятность заполнения ячейки. Динамические ячейки показывают с помощью HSV (оттенок, насыщение и значение) значения на палитре RGB:

  • Оттенок — угол ориентации вектора скорости, разделенного на 360. Когда оттенок увеличивается с 0 до 1, цветные изменения в порядке красного цвета к оранжевому, желтому, зеленому, голубому цвету, синему, пурпурному цвету, и назад к красному.

  • Насыщение — расстояние Mahalanobis (d) между скоростным распределением ячейки сетки и нулевой скоростью. Ячейка с d> 4 чертится с полным насыщением.

  • Значение — вероятность заполнения ячейки.

пример

showDynamicMap(tracker,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение". Заключите каждое Имя в кавычки. Например, showDynamicMap(myTracker,"PlotVelocity",true) строит динамическую карту для myTracker со скоростным включенным графическим выводом.

Примеры

свернуть все

Создайте сценарий отслеживания.

scene = trackingScenario('UpdateRate',5,'StopTime',5);
rng(2021); % For reproducible results

Добавьте платформу со смонтированным датчиком лидара к сценарию отслеживания.

plat = platform(scene);
lidar = monostaticLidarSensor(1,'DetectionCoordinates','Body','HasOrganizedOutput',false);

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

for i = 1:2
    target = platform(scene);
    x = 50*(2*rand - 1);
    y = 50*(2*rand - 1);
    vx = 5*(2*rand - 1);
    vy = 5*(2*rand - 1);
    target.Trajectory.Position = [x y 0];
    target.Trajectory.Velocity = [vx vy 0];
    % Align the orientation of the target with the direction of motion.
    target.Trajectory.Orientation = quaternion([atan2d(vy,vx),0,0],'eulerd','ZYX','frame');
    target.Mesh = extendedObjectMesh('sphere');
    target.Dimensions = struct('Length',4,'Width',4,'Height',2,'OriginOffset',[0 0 0]);
end

Задайте настройку датчика лидара.

config = trackingSensorConfiguration(1,...
    'SensorLimits',[-180 180;0 100],...
    'SensorTransformParameters',struct,...
    'IsValidTime',true);

Создайте основанное на сетке средство отслеживания.

tracker = trackerGridRFS('SensorConfigurations',config,...
    'AssignmentThreshold',5,...
    'MinNumCellsPerCluster',4,...
    'ClusteringThreshold',3);

Усовершенствуйте сценарий и запустите средство отслеживания с данными о лидаре.

while advance(scene)
   
    time = scene.SimulationTime;
    
    % Generate point cloud.
    tgtMeshes = targetMeshes(plat);
    [ptCloud, config] = lidar(tgtMeshes, time);
    
    % Format the data for the tracker.
    sensorData = struct('Time',time,...
        'SensorIndex',1,...
        'Measurement',ptCloud',...
        'MeasurementParameters',struct...
        );    
    % Update the tracker using the sensor data.
    tracks = tracker(sensorData, time);
end

Покажите динамическую карту.

showDynamicMap(tracker)
xlabel('x (m)');
ylabel('y (m)');

Figure contains an axes. The axes contains 2 objects of type image, surface.

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

свернуть все

Основанное на сетке средство отслеживания RFS в виде trackerGridRFS объект.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: showDynamicMap (myTracker, "PlotVelocity", ложь) строит динамическую карту для myTracker со скоростным включенным графическим выводом.

Включите скоростной графический вывод в виде true или false. Когда задано как true, вектор скорости для каждой динамической ячейки построен в центре ячейки сетки. Длина нанесенного на график вектора представляет величину скорости.

Родительские оси, на которых можно построить карту в виде Axes указатель.

Позвольте обновиться из предыдущей карты в виде true или false. Когда задано как true, графики функций карта через легкое обновление предыдущей карты на рисунке. Когда задано как false, графики функций новая карта на фигуре каждый раз.

Включите инвертированные цвета на карте в виде true или false. Когда задано как false, пустое место графиков функций на белом и занятом месте черного цвета цвета. Когда задано как ture, пустое место графиков функций на черном и занятом месте в белом.

Смотрите также

Введенный в R2020b