exponenta event banner

dynamicEvidentialGridMap

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

Описание

dynamicEvidentialGridMap объект представляет оценку динамической карты, полученную из трекера на основе сетки, trackerGridRFS. Можно визуализировать динамическую карту и получить оценочные значения с помощью функций объекта dynamicEvidentialGridMap. 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 кадра слежения (м)

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

  • 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