— технология, позволяющая определять местоположение самолётов или иных воздушных судов (ВС) без использования дополнительного к имеющемуся оборудованию на ВС.
Для С++ присутствует единственная зависимость GTest - фрэймворк для юнит-тестов. В случае отсутствия данной зависимости библиотеки и тестовое приложение соберется, а unit-тесты будут пропущены. Для Python, который используется для визуализации данных требуется matplotlib.
sudo apt-get install libgmock-dev
sudo apt-get install libgtest-dev
pip3 install matplotlib
mkdir build
cd build
> conan_paths.cmake
cmake ..
При сборке под windows, необходимо установить менеджер зависимостей conan версии 1.56.0
pip3 install matplotlib
mkdir build && cd build
conan install ..
cmake ..
Для запуска необходимо запустить исполняемый файл simulator и выполнить run-plotter.sh, которому при необходимости выдать права на исполнение с помощью команды
chmod +x run-plotter.sh
При запуске под windows необходимо запустить simulator.exe и выполнить run-plotter.cmd
Пусть самолет имеет координаты (x, y, z), а i-aя вышка имеет координаты (xi, yi, zi). Всего пусть задано n > 3 вышек, тогда есть
способов выбрать две из них. Обозначим, расстояние от самолета до i-ой вышки как di. Расстояние от судна до j-ой вышки, соответственно, как dj. Соответсвующие расстояния выражаются по формулам
Зададим функцию dij(x, y, z), как расстояние между вышками i и j, тогда
С другой стороны, нетрудно получить, что
где ti является временем, за которое сигнал доходит от самолета, до вышки, тогда обозначим
где c - скорость распространения сигнала, в нашем случае это скорость света, а разница времен есть ни что иное, как Time Difference of Arrival (TDOA), эта информация является известной нам, так как её мы получаем с вышек.
Реализовать описанную модель с переопределённой системой, решаемой с помощью нелинейного МНК с встроенным фильтром Калмана, определяющего параметры модели равноускоренного движения точки. Наблюдаемыми величинами в фильтре Калмана должны являться TDOA, а не положения точки.
Первоочередно перейдем от TOA, к TDOA. Далее, ясно, что
перебрав все возможные комбинации i и j, получим систему функций f(x, y, z) = (f11, ..., fn(n-1)). Нетрудно догадаться, что задача состоит в поиске таких параметров (x, y, z), что f(x, y, z) = 0. Построенная система уравнений является переопределенной. Она содержит всего 3 неизвестных, а вышек, как минимум 4, то есть минимум 6 уравнений.
Передадим фильтру Калмана TDOA. Там сначала применим метод наименьших квадратов (МНК):
$$ S(x,y,z) = \left | f(x,y,z) \right | 2^2 = \sum{i,j} f_{ij}^2(x,y,z). $$
Будем искать такие решения, которые будут минимизировать написанную сумму, для этого применим алгоритм Гаусса-Ньютона, обозначив за x вектор решения, получим:
где Jf - матрица Якоби для системы f. А произведение матриц в вычитаемом есть псевдообратная матрица к матрице Якоби, которую можно вычислить с помощью QR разложения.
Далее начинается работа фильтра Калмана, в которой два этапа: предсказание и корректировка.
- Предсказания нового состояния системы $$ x_k = Fx_{k-1} $$
- Предсказания ошибки ковариации
$$
P_k = FP_{k-1}F^T
$$
где
$x_k$ - вектор состояния,$F$ - матрица эволюции(динамическая модель системы),$P_k$ - ковариационная матрица состояния.
- Вычисление Kalman Gain $$ S = HP_kH^T + R $$ $$ K_k = P_k * H^T * S^{-1} $$
- Корректировки вектора состояния с учетом пересчета ошибки с только что поданным TDOA $$ x_k = x_k + K_k z_k $$
- Обновление ошибки ковариации
$$
P_k = (I - K_kH)P_k
$$
где
$K_k$ - Kalman Gain,$H$ - матрица, отображающая отношение измерений и состояний,$R$ - ковариационная матрица шума,$z_k$ - пересчитанная ошибка с учетом только что поданных TDOA,$I$ - единичная матрица
Здесь отображены 3D модель движения самолета, проекции движения со скоростью и ускорением и модуль разности реальных значений и полученных после оценки фильтром Калмана
- Вычисление сингулярного разложения матриц. Афанасьева А. А.
- Gauss–Newton algorithm, wikipedia.
- Moore–Penrose inverse, wikipedia, chapter Construction.
- SVD, wikipedia.
- A New Approach to Linear Filtering and Prediction Problems
- Построение параметров траектории с использованием фильтра Калмана с шагом коррекции по всем измерениям в РЛС дальнего обнаружения. Бородавкин Л. В.