updateTracks

Обновите мультиобъектное средство отслеживания с новыми обнаружениями

Синтаксис

confirmedTracks = updateTracks(tracker,detections,time)
[confirmedTracks,tentativeTracks] = updateTracks(tracker,detections,time)
[confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,detections,time)
[___] = updateTracks(tracker,detections,time,costMatrix)

Описание

confirmedTracks = updateTracks(tracker,detections,time) создает, обновляет и удаляет дорожки в Системе multiObjectTracker object™, tracker. Обновления основаны на заданном списке detections, и все дорожки обновляются к заданному time. Каждый элемент в возвращенном массиве структур confirmedTracks соответствует одноколейному пути.

[confirmedTracks,tentativeTracks] = updateTracks(tracker,detections,time) также возвращает массив структур, содержащий детали о предварительных дорожках.

пример

[confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,detections,time) также возвращает массив структур, содержащий детали обо всех подтвержденных и предварительных дорожках, allTracks. Дорожки возвращены в порядке, согласно которому средство отслеживания внутренне поддерживает их. Можно использовать этот вывод, чтобы помочь вам вычислить матрицу стоимости, дополнительный входной параметр.

[___] = updateTracks(tracker,detections,time,costMatrix) задает матрицу стоимости, возвращая любой из выходных параметров от предыдущих синтаксисов.

Чтобы задать матрицу стоимости, установите свойство HasCostMatrixInput tracker к true.

Примеры

свернуть все

Сгенерируйте обнаружения с помощью автомобильного радара по ходу движения, смонтированного на автомобиле, оборудованном датчиком. Примите, что существует три цели:

  • Автомобиль 1 находится в центральном маршруте, непосредственно перед автомобилем, оборудованным датчиком, и управляющий на той же скорости.

  • Автомобиль 2 находится в левом маршруте и управлении быстрее, чем автомобиль, оборудованный датчиком на 12 километров в час.

  • Автомобиль 3 находится в правильном маршруте и управлении медленнее, чем автомобиль, оборудованный датчиком на 5 километров в час.

Все положения, скорости и измерения относительно автомобиля, оборудованного датчиком. Запустите симуляцию для десяти шагов.

dt = 0.1;
pos1 = [150 0 0];
pos2 = [160 10 0];
pos3 = [130 -10 0];
vel1 = [0 0 0];
vel2 = [12*1000/3600 0 0];
vel3 = [-5*1000/3600 0 0];
car1 = struct('ActorID',1,'Position',pos1,'Velocity',vel1);
car2 = struct('ActorID',2,'Position',pos2,'Velocity',vel2);
car3 = struct('ActorID',3,'Position',pos3,'Velocity',vel3);

Создайте автомобильный радарный датчик, который смещается от автомобиля, оборудованного датчиком. По умолчанию местоположение датчика в (3.4,0) метры от центра автомобиля и 0,2 метра над землей плоскость. Выключите вычисление уровня области значений так, чтобы радарный датчик измерил положение только.

radar = radarDetectionGenerator('DetectionCoordinates','Sensor Cartesian', ...
    'MaxRange',200,'RangeResolution',10,'AzimuthResolution',10, ...
    'FieldOfView',[40 15],'UpdateInterval',dt,'HasRangeRate',false);
tracker = multiObjectTracker('FilterInitializationFcn',@initcvkf, ...
    'ConfirmationParameters',[3 4],'NumCoastingUpdates',6);

Сгенерируйте обнаружения с радаром от неавтомобилей, оборудованных датчиком. Выходные обнаружения формируют массив ячеек и могут быть переданы непосредственно в multiObjectTracker.

simTime = 0;
nsteps = 10;
for k = 1:nsteps
    dets = radar([car1 car2 car3],simTime);
    [confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,dets,simTime);

Переместите автомобили один временной шаг и обновите мультиобъектное средство отслеживания.

    simTime = simTime + dt;
    car1.Position = car1.Position + dt*car1.Velocity;
    car2.Position = car2.Position + dt*car2.Velocity;
    car3.Position = car3.Position + dt*car3.Velocity;
end

Используйте birdsEyePlot, чтобы создать вид сверху обнаружений. Постройте зону охвата датчика. Извлеките положения X и Y целей путем преобразования полей Measurement массива ячеек в массив MATLAB. Отобразите обнаружения на видимом с большого расстояния графике.

BEplot = birdsEyePlot('XLim',[0 220],'YLim',[-75 75]);
caPlotter = coverageAreaPlotter(BEplot,'DisplayName','Radar coverage area');
plotCoverageArea(caPlotter,radar.SensorLocation,radar.MaxRange, ...
    radar.Yaw,radar.FieldOfView(1))
detPlotter = detectionPlotter(BEplot,'DisplayName','Radar detections');
detPos = cellfun(@(d)d.Measurement(1:2),dets,'UniformOutput',false);
detPos = cell2mat(detPos')';
if ~isempty(detPos)
    plotDetection(detPlotter,detPos)
end

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

свернуть все

Мультиобъектное средство отслеживания, заданное как Системный объект multiObjectTracker.

Список обнаружений, заданный как массив ячеек объектов objectDetection. Значение свойства Time каждого объекта objectDetection должно быть меньше чем или равным текущему времени обновления, time, и больше, чем предыдущая временная стоимость раньше обновляла мультиобъектное средство отслеживания.

Время обновления, заданного как действительный скаляр. Мультиобъектное средство отслеживания обновляет все дорожки к этому времени. Модули находятся в секундах.

time должен быть больше, чем или равным самому большому значению свойства Time объектов objectDetection в списке входов detections. time должен увеличиться в значении с каждым обновлением мультиобъектного средства отслеживания.

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

Стойте матрицы, заданной как N с действительным знаком матрица T-by-ND, где N T является количеством существующих дорожек, и N D является количеством текущих обнаружений. Строки матрицы стоимости соответствуют существующим дорожкам. Столбцы соответствуют обнаружениям. Дорожки упорядочены, когда они появляются в списке дорожек в выходном аргументе allTracks предыдущего обновления мультиобъектного средства отслеживания.

В первом обновлении мультиобъектного средства отслеживания, или когда мультиобъектное средство отслеживания не имеет никаких предыдущих дорожек, присвоение, стоимость матрицирует размер [0, N D]. Стоимость должна быть вычислена так, чтобы более низкие цены указали на более высокую вероятность, что мультиобъектное средство отслеживания присваивает обнаружение дорожке. Чтобы препятствовать тому, чтобы определенные обнаружения были присвоены определенным дорожкам, используйте Inf.

Зависимости

Чтобы включить спецификацию матрицы стоимости при обновлении дорожек, установите свойство HasCostMatrixInput мультиобъектного средства отслеживания к true

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

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

свернуть все

Подтвержденные дорожки, возвращенные как массив структур с этими полями.

Поле Определение
TrackIDУникальный идентификатор дорожки.
TimeВремя, в которое обновляется дорожка. Модули находятся в секундах.
AgeКоличество обновлений начиная с инициализации дорожки.
StateОбновленный вектор состояния. Вектор состояния характерен для каждого типа Фильтра Калмана.
StateCovarianceОбновленная ковариационная матрица состояния. Ковариационная матрица характерна для каждого типа Фильтра Калмана.
IsConfirmedСостояние Confirmation. Этим полем является true, если дорожка подтверждена, чтобы быть действительной целью.
IsCoastedСостояние Coasting. Этим полем является true, если дорожка обновляется без нового обнаружения.
ObjectClassIDЦелочисленное значение, представляющее предметную классификацию. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным дорожкам.
ObjectAttributesМассив ячеек атрибутов объектов, о которых сообщает датчик, делающий обнаружение.

Дорожка подтверждена если:

  • По крайней мере, обнаружения M присвоены дорожке во время первых обновлений N после инициализации дорожки. Чтобы задать значения [M N], используйте свойство ConfirmationParameters мультиобъектного средства отслеживания.

  • Объект objectDetection, инициирующий дорожку, имеет ObjectClassID, больше, чем нуль.

Предварительные дорожки, возвращенные как массив структур с этими полями.

Поле Определение
TrackIDУникальный идентификатор дорожки.
TimeВремя, в которое обновляется дорожка. Модули находятся в секундах.
AgeКоличество обновлений начиная с инициализации дорожки.
StateОбновленный вектор состояния. Вектор состояния характерен для каждого типа Фильтра Калмана.
StateCovarianceОбновленная ковариационная матрица состояния. Ковариационная матрица характерна для каждого типа Фильтра Калмана.
IsConfirmedСостояние Confirmation. Этим полем является true, если дорожка подтверждена, чтобы быть действительной целью.
IsCoastedСостояние Coasting. Этим полем является true, если дорожка обновляется без нового обнаружения.
ObjectClassIDЦелочисленное значение, представляющее предметную классификацию. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным дорожкам.
ObjectAttributesМассив ячеек атрибутов объектов, о которых сообщает датчик, делающий обнаружение.

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

Все подтвержденные и предварительные дорожки, возвращенные как массив структур с этими полями.

Поле Определение
TrackIDУникальный идентификатор дорожки.
TimeВремя, в которое обновляется дорожка. Модули находятся в секундах.
AgeКоличество обновлений начиная с инициализации дорожки.
StateОбновленный вектор состояния. Вектор состояния характерен для каждого типа Фильтра Калмана.
StateCovarianceОбновленная ковариационная матрица состояния. Ковариационная матрица характерна для каждого типа Фильтра Калмана.
IsConfirmedСостояние Confirmation. Этим полем является true, если дорожка подтверждена, чтобы быть действительной целью.
IsCoastedСостояние Coasting. Этим полем является true, если дорожка обновляется без нового обнаружения.
ObjectClassIDЦелочисленное значение, представляющее предметную классификацию. Значение 0 представляет неизвестную классификацию. Ненулевые классификации применяются только к подтвержденным дорожкам.
ObjectAttributesМассив ячеек атрибутов объектов, о которых сообщает датчик, делающий обнаружение.

Алгоритмы

Когда вы передаете обнаружения в updateTracks, функцию:

  • Попытки присвоить входные обнаружения существующим дорожкам, с помощью функции assignDetectionsToTracks.

  • Создает новые треки из неприсвоенных обнаружений.

  • Обновления уже присвоили дорожки и возможно подтверждают их, на основе свойства ConfirmationParameters мультиобъектного средства отслеживания.

  • Удаляет дорожки, которые не имеют никаких присвоенных обнаружений в рамках последних обновлений NumCoastingUpdates.

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

Классы

Объекты

Функции

Введенный в R2017a