класс trackingKF
Описание
Класс trackingKF
создает дискретное время линейный Фильтр Калмана, используемый для отслеживания положений и скоростей объектов, с которыми можно столкнуться в автоматизированном ведущем сценарии, таком как автомобили, пешеходы, велосипеды, и стационарные структуры или препятствия. Фильтр Калмана является рекурсивным алгоритмом для оценки развивающегося состояния процесса, когда измерения сделаны на процессе. Фильтр линеен, когда эволюция состояния следует линейной модели движения, и измерения являются линейными функциями состояния. И процесс и измерения могут иметь аддитивный шум. Фильтр также позволяет, чтобы дополнительные средства управления или силы действовали на автомобиль. Когда шум процесса и шум измерения являются Гауссовыми, Фильтр Калмана является оптимальным средством оценки состояния минимальной среднеквадратической ошибки (MMSE) для линейных процессов.
Можно использовать этот объект двумя способами:
Первый путь состоит в том, чтобы задать явным образом модель движения. Установите свойство модели движения, MotionModel
, к Custom
и затем используйте свойство StateTransitionModel
установить матрицу Грина.
Второй путь состоит в том, чтобы установить свойство MotionModel
на предопределенную модель изменения состояния:
Модель движения |
---|
'1D Constant Velocity' |
'1D Constant Acceleration' |
'2D Constant Velocity' |
'2D Constant Acceleration' |
'3D Constant Velocity' |
'3D Constant Acceleration' |
Конструкция
filter = trackingKF
возвращает линейный объект Фильтра Калмана в течение дискретного времени, 2D объект перемещения постоянной скорости. Фильтр Калмана использует значения по умолчанию для StateTransitionModel
, MeasurementModel
и свойств ControlModel
. Свойство MotionModel
установлено в '2D Constant Velocity'
.
filter
= trackingKF(F
,H
)
задает модель изменения состояния, F
, и модель измерения, H
. Свойство MotionModel
установлено в 'Custom'
.
filter
= trackingKF(F
,H
,G
)
также задает модель управления, G
. Свойство MotionModel
установлено в 'Custom'
.
filter
= trackingKF('MotionModel'
,model
)
устанавливает свойство модели движения, MotionModel
, к model
.
filter
= trackingKF(___,Name
,Value
)
конфигурирует свойства Фильтра Калмана с помощью одного или нескольких Name
, аргументы пары Value
. Любые незаданные свойства берут значения по умолчанию.
Свойства
развернуть все
State
— Состояние фильтра Калмана
0
(значение по умолчанию) | скаляр с действительным знаком | M с действительным знаком - вектор элемента
Состояние фильтра Калмана, заданное как M с действительным знаком - вектор элемента. M является размером вектора состояния. Типичные размеры вектора состояния описаны в свойстве MotionModel
. Когда начальное состояние задано как скаляр, состояние расширено в M - вектор элемента.
Можно установить состояние на скаляр в этих случаях:
Когда свойство MotionModel
установлено в 'Custom'
, M определяется размером модели изменения состояния.
Когда свойство MotionModel
установлено в '2D Constant Velocity'
, '3D Constant Velocity'
, '2D Constant Acceleration'
или '3D Constant Acceleration'
, необходимо сначала задать состояние как M - вектор элемента. Можно использовать скаляр для всех последующих спецификаций вектора состояния.
Пример: [200;0.2;-40;-0.01]
Типы данных: double
StateCovariance
— Ошибочная ковариация оценки состояния
1 (значение по умолчанию) | положительная скалярная величина | положительно-определенный M с действительным знаком-by-M матрица
Ошибочная ковариация состояния, заданная как положительная скалярная величина или положительно-определенный M с действительным знаком-by-M матрица, где M является размером состояния. При определении значения, когда скаляр создает кратное M-by-M единичная матрица. Эта матрица представляет неуверенность в состоянии.
Пример: [20 0.1; 0.1 1]
Типы данных: double
MotionModel
— Модель движения фильтра Калмана
'Custom'
(значение по умолчанию) | '1D Constant Velocity'
| '2D Constant Velocity'
| '3D Constant Velocity'
| '1D Constant Acceleration'
| '2D Constant Acceleration'
| '3D Constant Acceleration'
Модель движения фильтра Калмана, заданная как 'Custom'
или одна из этих предопределенных моделей. В этом случае вектор состояния и матрица Грина принимают форму, заданную в таблице.
MotionModel | Форма вектора состояния | Форма модели изменения состояния |
---|
'1D Constant Velocity' | [x;vx]
| [1 dt; 0 1]
|
'2D Constant Velocity' | [x;vx;y;vy]
| Блокируйте диагональную матрицу с блоком [1 dt; 0 1] , повторенным для x и y пространственные размерности |
'3D Constant Velocity' | [x;vx;y;vy;z;vz]
| Блокируйте диагональную матрицу с блоком [1 dt; 0 1] , повторенным для x, y и z пространственные размерности. |
'1D Constant Acceleration' | [x;vx;ax]
| [1 dt 0.5*dt^2; 0 1 dt; 0 0 1]
|
'2D Constant Acceleration' | [x;vx;ax;y;vy;ay]
| Блокируйте диагональную матрицу с блоками [1 dt 0.5*dt^2; 0 1 dt; 0 0 1] , повторенными для x и y пространственные размерности |
'3D Constant Acceleration' | [x;vx,ax;y;vy;ay;z;vz;az]
| Блокируйте диагональную матрицу с блоком [1 dt 0.5*dt^2; 0 1 dt; 0 0 1] , повторенным для x, y и z пространственные размерности |
Когда свойство ControlModel
задано, каждый ненулевой элемент модели изменения состояния заменяется dt
.
Когда MotionModel
является 'Custom'
, необходимо задать матрицу модели изменения состояния, матрицу модели измерения, и опционально, матрица модели управления как входные параметры к Фильтру Калмана.
Типы данных: char
StateTransitionModel
— Модель изменения состояния между временными шагами
[1 1 0 0; 0 1 0 0; 0 0 1 1; 0 0 0 1]
(значение по умолчанию) | M с действительным знаком-by-M матрица
Модель изменения состояния между временными шагами, заданными как M с действительным знаком-by-M матрица. M является размером вектора состояния. В отсутствие средств управления и шума, имеет отношение модель изменения состояния, состояние в любое время продвигаются в состояние на предыдущем шаге. Модель изменения состояния является функцией размера временного шага фильтра.
Пример: [1 0; 1 2]
Зависимости
Чтобы включить это свойство, установите MotionModel
на 'Custom'
.
Типы данных: double
ControlModel
— Модель управления
[]
(значение по умолчанию) | M-by-L матрица с действительным знаком
Модель управления, заданная как M-by-L матрица. M является размерностью вектора состояния, и L является количеством средств управления или сил. Модель управления добавляет эффект средств управления на эволюции состояния.
Пример: [.01 0.2]
Типы данных: double
ProcessNoise
— Ковариация шума процесса
1 (значение по умолчанию) | положительная скалярная величина | положительно-определенный M с действительным знаком-by-M матрица
Ковариация шума процесса, заданного как положительная скалярная величина или M-by-M матрица, где M является размерностью состояния. Если вы задаете это свойство как скаляр, фильтр использует значение в качестве множителя M-by-M единичная матрица. шум Process выражает неуверенность в динамической модели и принят, чтобы быть нулевым средним Гауссовым белым шумом.
Пример: [1.0 0.05; 0.05 2
]
Типы данных: double
Модель MeasurementModel
— Measurements от вектора состояния
[1 0 0 0; 0 0 1 0]
(значение по умолчанию) | N с действительным знаком-by-M матрица
Модель Measurement, заданная как N с действительным знаком-by-M матрица, где N является размером вектора измерения и M, является размером вектора состояния. measurement model является линейной матрицей, которая определяет предсказанные измерения от предсказанного состояния.
Пример: [1 0.5 0.01; 1.0 1 0]
Типы данных: double
MeasurementNoise
— Ковариация шума измерения
1 (значение по умолчанию) | положительная скалярная величина | положительно-определенный N с действительным знаком-by-N матрица
Ковариация шума измерения, заданного как положительная скалярная величина или положительно-определенный, N с действительным знаком-by-N матрица, где N является размером вектора измерения. Если вы задаете это свойство как скаляр, фильтр использует значение в качестве множителя N-by-N единичная матрица. Шум измерения представляет неуверенность в измерении и принят, чтобы быть нулевым средним Гауссовым белым шумом.
Пример: 0.2
Типы данных: double
Методы
клон | Создайте Линейный объект Фильтра Калмана с идентичными значениями свойств |
правильный | Исправьте вектор состояния Кальмана и утвердите ковариационную матрицу |
correctjpda | Правильная ошибочная ковариация оценки состояния и оценки состояния с помощью JPDA |
расстояние | Расстояние от измерений до предсказанного измерения |
инициализировать | Инициализируйте Фильтр Калмана |
вероятность | Вероятность измерения |
предсказать | Предскажите линейное состояние Фильтра Калмана |
невязка | Невязка измерения и остаточная ковариация |
Примеры
свернуть все
Постоянная скорость линейный фильтр Калмана
Создайте линейный Фильтр Калмана, который использует модель движения 2D Constant Velocity
. Примите, что измерение состоит из x-y местоположения объекта.
Задайте оценку начального состояния, чтобы иметь нулевую скорость.
Создайте измеренные положения из траектории постоянной скорости.
Предскажите и исправьте состояние объекта.
Постройте дорожки.
Больше о
развернуть все
Отфильтруйте параметры
Эта таблица связывает параметры модели фильтра со свойствами объектов. M является размером вектора состояния, и N является размером вектора измерения. L является размером модели управления.
Параметр модели | Значение | Заданный в свойстве | Размер |
---|
Fk | Модель изменения состояния, которая задает линейную модель уравнений без силы движения объекта. Эта модель, вместе с моделью управления, определяет состояние во время k+1 как функция состояния во время k. Модель изменения состояния зависит от временного шага фильтра. | StateTransitionModel | M-by-M |
Hk | Модель Measurement, которая задает, как измерения являются линейными функциями состояния. | MeasurementModel | N-by-M |
Gk | Модель управления, описывающая средства управления или силы, действующие на объект. | ControlModel | M-by-L |
xk | Оценка состояния объекта. | State | M- |
Pk | Предполагаемая ковариационная матрица состояния. Ковариация представляет неуверенность в значениях состояния. | StateCovariance | M-by-M |
Qk | Оценка ковариационной матрицы шума процесса на шаге k. Process noise является мерой неуверенности в вашей динамической модели и принят, чтобы быть нулевым средним белым Гауссовым шумом. | ProcessNoise | M-by-M |
Rk | Оценка ковариации шума измерения на шаге k. Measurement noise представляет неуверенность в измерении и принят, чтобы быть нулевым средним белым Гауссовым шумом. | MeasurementNoise | N-by-N |
Алгоритмы
Фильтр Калмана описывает движение объекта путем оценки его состояния. Состояние обычно состоит из положения объекта и скорости и возможно ее ускорения. Состояние может охватить один, два, или три пространственных размерности. Наиболее часто вы используете Фильтр Калмана для постоянной скорости модели или движения постоянного ускорения. Линейный Фильтр Калмана принимает, что процесс повинуется следующему линейному стохастическому разностному уравнению:
xk является состоянием на шаге k. Fk является матрицей модели изменения состояния. Gk является матрицей модели управления. uk представляет известные обобщенные средства управления, действующие на объект. В дополнение к заданным уравнениям движения движение может быть затронуто случайными шумовыми возмущениями, vk. Состояние, матрица Грина и средства управления вместе предоставляют достаточно информации, чтобы определить будущее движение объекта в отсутствие шума.
В Фильтре Калмана измерения являются также линейными функциями состояния,
где Hk является матрицей модели измерения. Эта модель выражает измерения как функции состояния. Измерение может состоять из положения объекта, положения и скорости, или ее положения, скорости, и ускорения или некоторой функции этих количеств. Измерения могут также включать шумовые возмущения, wk.
Эти уравнения, в отсутствие шума, моделируют фактическое движение объекта и фактические измерения. Шумовые вклады на каждом шаге неизвестны и не могут быть смоделированы. Только шумовые ковариационные матрицы известны. Ковариационная матрица состояния обновляется со знанием шумовой ковариации только.
Можно считать краткое описание линейного алгоритма Фильтра Калмана в Линейных Фильтрах Калмана.
Ссылки
[1] Браун, Р.Г. и П.И.К. Ван. Введение в случайный анализ сигнала и прикладного Кальмана, фильтрующего. 3-й выпуск. Нью-Йорк: John Wiley & Sons, 1997.
[2] Кальман, R. E. "Новый Подход к Линейным проблемам Фильтрации и Прогноза". Транзакция Журнала ASME Базового проектирования, Издания 82, Серии D, март 1960, стр 35–45.
[3] Блэкмен, Сэмюэль. Несколько - целевое отслеживание с радарными приложениями, домом Artech. 1986.
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Указания и ограничения по применению:
Когда вы создаете объект trackingKF
, и вы задаете значение кроме Custom
для значения MotionModel
, необходимо задать вектор состояния явным образом во время создания с помощью свойства State
. Выбор модели движения определяет размер вектора состояния, но не задает тип данных, например, двойная точность или одинарная точность. И размер и тип данных требуются для генерации кода.
Смотрите также
Функции
Классы
Системные объекты
Введенный в R2017a