dynamicEvidentialGridMap

Выход динамической сетки из trackerGridRFS

Описание

The dynamicEvidentialGridMap объект представляет собой динамическую оценку карты, полученную из основанного на сетке трекера, trackerGridRFS. Можно визуализировать динамическую карту и получить предполагаемые значения с помощью функций объекта dynamicEvidentialGridMap. The dynamicEvidentialGridMap объект является указателем объектом.

Создание

Можно сгенерировать dynamicEvidentialGridMap объект с использованием trackerGridRFS объект. Смотрите синтаксис использования trackerGridRFS и Получение предполагаемых значений на уровень сети с помощью dynamicEvidentialGridMap пример для получения дополнительной информации.

Свойства

расширить все

Это свойство доступно только для чтения.

Модель движения для отслеживания, заданная как 'constant-velocity', 'constant-acceleration', или 'constant-turn-rate'. Состояние частицы и состояние объекта для каждой модели движения:

MotionModelСостояние частицСостояние объекта
'constant-velocity'[x; vx; y; vy] [x; vx; y; vy; yaw; L; W]
'constant-acceleration'[x; vx; ax; y; vy; ay][x; vx; ax; y; vy; ay; yaw; L; W]
'constant-turn-rate'[x; vx; y; vy; w][x; vx; y; vy; w; yaw; L; W]

где:

  • x - Положение объекта в направлении x системы координат (m)

  • y - Положение объекта в направлении y системы отслеживания (m)

  • vx - Скорость объекта в направлении x системы координат (м/с)

  • vy - Скорость объекта в направлении y системы отслеживания (м/с)

  • ax - Ускорение объекта в направлении x системы отслеживания (м/с2)

  • ay - Ускорение объекта в направлении y системы отслеживания (м/с2)

  • w - Скорость рыскания объекта в системе координат отслеживания (градус/с)

  • yaw - Угол рыскания объекта в системе координат слежения (град)

  • L - Длина объекта (м)

  • W - Ширина объекта (м)

Это свойство доступно только для чтения.

Количество переменных состояния, соответствующих модели движения, заданное в MotionModel свойство, заданное как положительное целое число.

Пример: 6

Это свойство доступно только для чтения.

x - размер сетки в локальных координатах, заданный как положительный скаляр в метрах.

Это свойство доступно только для чтения.

y - размер сетки в локальных координатах, заданный как положительный скаляр в метрах.

Это свойство доступно только для чтения.

Разрешение сетки, заданное как положительная скалярная величина. GridResolution представляет количество камер на метр сетки для x - и y - направления сетки.

Это свойство доступно только для чтения.

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

Функции объекта

getEvidencesПолучите предполагаемую заполненность и бесплатные доказательства
getOccupancyПолучите оцененные вероятности заполнения
getStateПолучите полное расчетное состояние и связанную с ним неопределенность
getVelocityПолучите расчетную скорость и связанную с ней неопределенность
showВизуализация динамической доказательственной сетки

Примеры

свернуть все

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

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

Добавьте платформу. Установите датчик лидара на платформе.

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

Добавьте две цели и задайте их положение, скорость, ориентацию, размерность и сетки.

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];
    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)
    % Current time
    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 ...
        );

    % Call tracker using sensorData to obtain the map in addition
    % to tracks
    [tracks, ~, ~, map] = tracker(sensorData,time);

    % Obtain the estimated occupancy probability of each cell
    P_occ = getOccupancy(map);

    % Obtain the estimated evidences for each cell
    [m_occ, m_free] = getEvidences(map);

    % Obtain the estimated velocity for each cell
    [v, Pv] = getVelocity(map);

    % Obtain the estimated state for each cell
    [x, P] = getState(map);
    
    % Show the map
    show(map,'InvertColors',true)
end

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

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

.
Введенный в R2021a