exponenta event banner

predictMapToTime

Прогнозирование динамической карты на метку времени

Описание

пример

map = predictMapToTime(tracker,time) возвращает карту tracker спрогнозировано до указанного time.

Примечание

Эта функция выводит только предсказанную карту и изменяет результаты при вызове метода step tracker. Используйте эти три настраиваемых свойства (FreeSpaceDiscountFactor, DeathRate, и ProcessNoise) tracker для контроля того, как неопределенности влияют на прогнозирование карты.

пример

___ = predictMapToTime(___,'WithStateAndCovariance',tf) дополнительно указывает, предсказывает ли функция состояние и ковариацию состояния карты. Если tf указывается как false, предсказываются только свидетельства и заполненность карты. Состояние, ковариация состояния и классификация ячейки как статической или динамической не прогнозируются. Определение tf как false позволяет быстрее прогнозировать заполняемость среды.

Примеры

свернуть все

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

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

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

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

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

for i = 1:2
    target = platform(scene);
    xStart = 50*(2*rand-1);
    xFinal = 50*(2*rand-1);
    yStart = 50*(2*rand-1);
    yFinal = 50*(2*rand-1);
    target.Trajectory = waypointTrajectory([xStart yStart 0;xFinal yFinal 0],[0 15]);
    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 ...
        );

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

Показать окончательную карту.

figure
show(map)

Сделайте несколько предположений, прежде чем предсказывать карту.

% Assume free space remains free during prediction
f = tracker.FreeSpaceDiscountFactor;
tracker.FreeSpaceDiscountFactor = 1;

% Assume no targets die during prediction
d = tracker.DeathRate;
tracker.DeathRate = 0;

% Assume no process noise during prediction
q = tracker.ProcessNoise;
tracker.ProcessNoise = zeros(size(q));

Спрогнозировать карту на 1 секунду вперед и показать предсказанную карту.

figure
predictedMap = predictMapToTime(tracker,16)
predictedMap = 
  dynamicEvidentialGridMap with properties:

    NumStateVariables: 4
          MotionModel: 'constant-velocity'
           GridLength: 100
            GridWidth: 100
       GridResolution: 1
    GridOriginInLocal: [-50 -50]

show(predictedMap)

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

tracker.FreeSpaceDiscountFactor = f;
tracker.DeathRate = d;
tracker.ProcessNoise = q;

Входные аргументы

свернуть все

Сетевой RFS-трекер, указанный как trackerGridRFS объект.

Время прогнозирования, указанное как положительный скаляр. Динамическая карта трекера прогнозируется до этого времени. Время должно быть больше времени, введенного в трекер при предыдущем обновлении дорожки. Единицы измерения в секундах.

Пример: 1.0

Типы данных: single | double

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

Типы данных: logical

Выходные аргументы

свернуть все

Карта после прогнозирования, возвращенная как dynamicEvidentialGridMap объект.

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