exponenta event banner

showDynamicMap

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

Описание

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

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

  • Насыщение - расстояние Махаланобиса (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);

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

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",false) отображает динамическую карту для myTracker с включенной построением графика скорости.

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

Родительские оси для печати карты, указанные как Axes рукоятка.

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

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

См. также

Представлен в R2020b