Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных из моделей электронной концентрации и радионавигационных измерений
Бесплатный доступ
В статье рассматривается методика предсказания и уточнения ионосферных поправок в радионавигации с использованием машинного обучения и фильтра Калмана. В качестве первого источника данных применяются предсказанные значения вертикальной электронной концентрации ионосферы, полученные с помощью методов машинного обучения, что позволяет повысить точность оценки ионосферных поправок. Второй источник – значения, вычисляемые через накопление радионавигационных измерений в реальном времени, что обеспечивает актуальность и оперативность данных. Предложенная методика позволяет объединить преимущества моделирования и реальных измерений для повышения точности коррекции ионосферных эффектов. Результаты экспериментов демонстрируют эффективность подхода и его потенциал для применения в современных системах спутниковой навигации.
Радионавигация, ионосферные поправки, машинное обучение, фильтр Калмана, электронная концентрация, моделирование ионосферы, радионавигационные измерения, навигационные системы
Короткий адрес: https://sciup.org/148331939
IDR: 148331939 | УДК: 621.396:004.738.5 | DOI: 10.18137/RNU.V9187.25.03.P.15
Prediction and refinement of ionospheric corrections in radionavigation based on machine learning and Kalman filter using data from electron concentration models and radionavigation measurements
The article discusses a methodology for predicting and refining ionospheric corrections in radio navigation using machine learning and the Kalman filter. The first source of data is the predicted values of the vertical electron density of the ionosphere obtained using machine learning methods, which allows for increasing the accuracy of ionospheric corrections. The second source is the values calculated through the accumulation of radio navigation measurements in real time, which ensures the relevance and efficiency of the data. The proposed methodology allows combining the advantages of modeling and real measurements to improve the accuracy of ionospheric effects correction. The experimental results demonstrate the effectiveness of the approach and its potential for application in modern satellite navigation systems.
Текст научной статьи Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных из моделей электронной концентрации и радионавигационных измерений
Современные системы спутниковой навигации, такие как GPS и ГЛОНАСС, широко используются в различных сферах деятельности – от транспорта и геодезии до навигации – в условиях сложной среды. Одним из ключевых факторов, влияющих на точность и надежность навигационных решений, является ионосфера, которая вызывает задержки радиосигналов и приводит к ошибкам в определении положения. Точные оценки ионосферных поправок являются необходимым условием повышения точности навигационных систем, особенно в условиях динамично меняющейся ионосферной среды [1].
На сегодняшний день существует множество методов моделирования и измерения электронной концентрации в ионосфере [2–4], однако их интеграция и использование для повышения точности коррекций остаются актуальными задачами. В последние годы особое внимание уделяется применению методов машинного обучения [5; 6] для предсказания ионосферных параметров, что позволяет получать более точные и своевременные оценки.
Целью данной работы является разработка и внедрение метода, объединяющего предсказания вертикальной электронной концентрации VTEC (Vertical Total Electron Concentration). VTEC показывает количество электронов в вертикальной колонне ионосферы над определенной точкой. Измеряется в единицах TECU (Total Electron Content Units), где 1 TECU = 1016 электронов на квадратный метр. Высокие уровни VTEC могут вызывать значительные задержки и искажения радиосигналов, особенно в системах GPS и других спутниковых навигационных систем. Это происходит из-за преломления и рассеяния электромагнитных волн в ионосфере. Также они влияют на фазу и группу скорости радиоволн, что может приводить к ошибкам в позиционировании и навигации.
Метод машинного обучения очень востребован, поскольку совмещает в себе два подхода – прогнозирование на уровне машинного обучения и вычисление в реальном времени на основе текущих радионавигационных измерений [7]. Метод на основе машинного обучения имеет такие преимущества, как большой объем накопленных данных, вычисление правильных закономерностей и построение точных моделей предсказания [8]. Метод на основе текущих радионавигационных измерений позволяет гибко реагировать на изменения окружающий среды, которые приводят к отхождению от ранее рассчитанной модели, поскольку реальное радионавигационное измерение и накопление данных в реальном времени позволяют оперативно корректировать модели и повышать их точность.
Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных...
Использование фильтра Калмана в качестве инструмента интеграции этих источников данных позволяет повысить точность и надежность оценки ионосферных задержек [9], что особенно важно для повышения эффективности и безопасности навигационных систем в условиях изменяющейся ионосферной среды, поэтому в данном исследовании совмещены оба подхода.
Применение машинного обучения для прогнозирования VTEC
Обозначим основные шаги в фильтрации Калмана. Мы хотим учесть дополнительно предсказанное алгоритмом машинного обучения значение VTEC. Для этого в фильтр Калмана нужно включить его как часть состояния системы и использовать в моделировании динамики и измерений.
Включим расчетное значение VTEC как одну из переменных состояния и VTECpred (предсказанное алгоритмом машинного обучения) – как другую в векторе состояния. В качестве начального приближения для следующего шага будем использовать предсказанное значение VTEC.
Производим инициализацию матрицы измерений: x 0 =
- начальное состоя-
ние.
Перед каждым шагом прогноза необходимо обновить состояние внешним предсказа-
VTEC(pkre)d нием: xik ^ предыдущая_скорость
где i – номер столбца матрицы измерений x .
предыдущее_ускорение
Л t — Л t2
1 Л t
L J 1
Инициализация матрицы динамики: F = 0
Эта матрица моделирует эволюцию системы с учетом равномерного ускорения: первая строка – позиция обновляется с учетом скорости и ускорения, вторая – скорость обновляется с учетом ускорения, третья – ускорение предполагается постоянным. Матрица описывает, как VTEC изменяется со временем, например, с учетом предсказанного значения. Это классическая модель для системы с постоянным ускорением, где Δ t – дискретный шаг времени. В нашем случае он будет рассчитываться как разность между опорным временем (временем начала измерений) и временем текущего наблюдения.
Инициализация матрицы наблюдения: H =
Эта матрица связывает состояние системы с двумя источниками измерений – измерением VTEC и внешним предсказанием VTEC.
Далее для каждого шага времени k = 1,2, …, N .
Предсказание состояния: x k^k = Fx k _ —k - 1 + u k . На этом шаге происходит прогноз следующего состояния системы с использованием модели динамики и предыдущего состояния, а также добавляется внешнее воздействие uk .
Предсказание ковариационной матрицы ошибок: P k^ _ 1 = FP k _ —k _ 1 F T + Q .
Вестник Российского нового университета
Серия «Сложные системы: модели, анализ и управление». 2025. № 3
Это обновление оценки неопределенности системы после прогноза, учитывающее модельный шум Q .
VTECmeas , k
VTECext _ pred , k
Получение измерений: z k =
.
На этом шаге получаем два источника данных: реальное измерение VTEC и внешнее предсказание VTEC, которые будут использованы для обновления.
Предсказание измерений: z kk _ 1 = HX kk _ 1 .
На этом шаге происходит расчет ожидаемых измерений на основе прогнозируемого состояния с использованием матрицы наблюдения H – это функция измерения, связывающая состояние с наблюдаемыми данными.
Вычисление инновационной ковариационной матрицы: S k = HP k । k _ 1 H T + R .
Обновление: после получения новых измерений необходимо скорректировать предсказанное значение VTEC с помощью фильтра Калмана, чтобы получить более точную оценку.
Расчет коэффициента Калмана: K k = P k।k _ 1 H T S _ .
Этот коэффициент определяет, насколько сильно обновлять состояние, учитывая ошибку измерений и неопределенность модели.
Обновление оценки состояния: x k । k = x k । k _ i + Kk ( z k _ z k । k _ i ) .
Это шаг, в котором прогнозируемое состояние корректируется на основе разницы между фактическими измерениями и их предсказаниями, умноженной на коэффициент Калмана. Этот шаг позволяет системе учитывать новые данные и уменьшать неопределенность оценки.
Обновление ковариационной матрицы ошибок: P kik = ( I _ K k H ) P k\k _ 1 .
Проведем моделирование алгоритма. Оно нам позволит получить численный и графический результат. Получившуюся характеристику представим на Рисунке 1. На рисунке видно, каким образом в результирующем графике учитывается последовательность значений внешнего предсказания.
Для формирования локальной модели была разработана подпрограмма расчета, основанная на алгоритме, описанном в п. 1. Она написана на языке программирования С++, так как алгоритм накопления измерений работает в микроконтроллерном навигационном устройстве. Все основные математические функции для расчета ионосферных моделей сведены в класс ION. Опишем структуру программы, используя язык программирования.
При старте программы осуществляется вызов функции ION::InitIonoMode (intperiod) , которая применяется для старта. В качестве параметра ей передается период, в течение которого будет происходить наблюдение и запись результатов навигационных измерений. Данный параметр задается в настройках навигационного приемника.
Дальнейшая работа программы проходит внутри функции voidION::IonoProc() . Сначала происходит считывание значения времени из структуры, заполняемой при приеме данных от приемника, проверка его корректности. Далее при первом запуске происходит создание структуры станции мониторинга ионосферы для данного приемника:
St0 = new STATION(nChan), где STATION – дружественный ION класс , nChan – номер канала (антенны).
Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных...
Рисунок 1. Характеристика фильтрации Калмана с двумя источниками VTEC Источник: здесь и далее рисунки выполнены автором.
Осуществляется вызов функции StartNavDataPeriod(tep) для текущего момента времени tep , в которой фиксируется текущее время как время начала наблюдений, обнуляются маски наличия спутников по всем системам. Дальнейшие вызовы функций происходят уже в постоянном режиме. Происходит инициализация координат приемника для станции мониторинга:
St0->InitPecef();
Вызов функции измерений:
St0->MeasChan(tep);
В ней происходит запись измеренных значений L (фаза несущей частоты), C (измеренная псевдодальность), D (измеренный доплер) в структуру OBSDATA , созданную для каждого спутника. Данные значения получаются посредством функции GetIonoLCD() , которая обеспечивает их получение из данных, полученных из приемника при его периодическом опросе. Далее в процедуре обработки новой обсервации void STATION::Meas Processing(constOBSDATA&Obs) происходит запись данной обсервации в список сеансов измерений для данного спутника. Для этого используется OBSDATA – это структура данных по одному спутнику за одну эпоху (но по обеим частотам). Из набора этих структур по всем спутникам создается массив Iep[nsys][NSat] . Элемент массива – список сеансов измерений для одного спутника:
ISEANSseans(Obs,Interval);
std::list
где
ISEANS – класс, который определяет интервал, на котором производится непрерывная оценка параметров ионосферы;
Interval – дискретность измерений в сек.
Далее обрабатываются последующие измерения при помощи добавления их функцией AddObservation(Obs) , где nsys – номер навигационной системы; nSat – номер спутника.
В функции обработки обсервации boolISEANS::AddObservation(const OBSDATA& Obs) проверяются выполнения условий допустимости значений измерений C, D, L и происхо-
Вестник Российского нового университета
Серия «Сложные системы: модели, анализ и управление». 2025. № 3
дит их интегрирование по одной или двум частотам в структуре накопления АСС . Если условие не выполнено, то измерение идентифицируется как сбойное и происходит сброс интегратора. Вычисляется линейная комбинация одночастотных измерений:
Z = (ACC.C1 - ACC.L1* C/FreqL1 )/(2.0*dTacc), а если измерения двухчастотные, составляем двухчастотную комбинацию:
Z = - C*(ACC.L1/FreqL1 - ACC.L2/FreqL2)/((1-sqr_freq12)*dTacc), где dTacc – время накопления измерений;
FreqL1, FreqL2 – первая и вторая несущая частота измерений;
sqr_freq12 – квадрат отношения F1/F2 .
Это Z и будет являться оценкой TEC. TEC – это наклонная электронная концентрация, которая определяется вдоль направления на спутник, измерения которого используются. VTEC определяется через нее так: VTEC = TEC/FZ, где FZ – функция наклона, пропорциональная высоте спутника [1]. Вычисление TEC далее описано через коэффициенты разложения локальной модели ионосферы.
Далее производится проверка на возможный срыв слежения или выброс, и если был срыв слежения, то происходит реинициализация фильтра Калмана, и измерения обрабатываются в алгоритме фильтрации Калмана, в которой участвуют следующие параметры:
Const double **F – матрица прогноза.
Матрица наблюдений определяется как
Const double H[Nsrc][SIZE_VIP] = {{1,0,0}{1,0,0}}; // матрица наблюдений (частных производных), где
Nsrc = 2 – это число источников данных. У нас их два (от радионавигационных измерений и предсказанное алгоритмом машинного обучения);
SIZE_VIP = 3 – размерность матрицы процесса (оценка TEC, скорость TEC и скорость изменения TEC);
R – дисперсия оценки.
Для инициализации точек прокола организован цикл по списку NavDataList , в котором в функции boolSTATION::NewIPoint(const NAVDATA *SV) в каждую точку прокола из списка всех точек прокола ионосферы заносятся следующие вычисленные значения из NavDataList , где параметр SV – вектор состояния спутника:
Ipp.push_back(IPPIERCE(SV->Id,Isf,Vsf,FZ,TEC,RMS));
Vsf – скорость перемещения подыоносферной точки;
Igg – географические координаты подыоносферной точки;
Isf – координаты подыоносферной точки в фиксированной относительно Солнца системе координат;
Angle – трехмерный угол направления на спутник;
FZ – фактор угла наклона;
RMS – среднеквадратическое отклонение.
Первоначальное приближение TEC в параметрах функции вычисляется как прогноз значения на момент Т через начальные значения коэффициентов фильтра Калмана как TEC = Xkalm[0] + dt*Xkalm[1] , где dt – промежуток времени с момента последней обсервации. Далее вызывается процедура создания новой точки прокола, где создаем узлы
Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных...
в списке точек прокола ионосферы ListNode . При этом идет цикл от минимальной долготы FirstLon до максимальной LastLon с шагом 5º. FirstLon и LastLon определяются через FirstObs и LastObs соответственно при подстановке их в функцию SunFixCoorIp() . В функции SunFixCoorIp() к значению долготы в градусах прибавляется текущее время, переведенное в градусы.
FirstLon = SunFixCoorIp(St0->Pgeog,St0->FirstObs).lon;
LastLon = SunFixCoorIp(St0->Pgeog,St0->LastObs).lon;
где St0->Pgeog – географические координаты приемника.
После выполнения этих расчетов происходит вызов функции BuildLIM() для построения локальной модели ионосферы. Внутри этой функции строятся две модели разного порядка: lim1 (первого порядка) и lim2 (второго порядка). Проверяется условие того, что число принятых спутников не меньше достаточного количества для применения модели второго порядка. Если число спутников меньше 8, то понижаем порядок модели. Далее в цикле по всем подыоносферным точкам for(ipp = St0->Ipp.begin(); ipp != St0->Ipp.end(); ++ipp) {….} определяются квазиэкваториальные координаты и скорость точки прокола:
Здесь param3 – структура вида {X,Y,Z};
Далее для этих величин производится вычисление коэффициентов разложения локальной модели ионосферы в ряд Тейлора H[0]- H[5] по методу наименьших квадратов. Эта последовательность коэффициентов H идет в функцию фильтрации Калмана как строка частных производных параметра Z по оцениваемым параметрам.
Оценка TEC рассчитывается, таким образом, в соответствии с разложением Тейлора. Для порядка модели, равного 1:
if (Order == 1) {
F[] = {1,d.X,d.Y};
tec = Xkalm[0]+Xkalm[1]*F[1]+Xkalm[2]*F[2];
}
Для порядка модели, равного 2:
if (Order == 2) {
F[] = {1,d.X,d.Y,d.X*d.X,d.Y*d.Y,d.X*d.Y};
Tec= Xkalm[0] +Xkalm[1]*F[1]+ Xkalm[2]*F[2]+ Xkalm[3]*F[3]+ Xkalm[4] *F[4]+ Xkalm[5]*F[5];
}
Затем для заключительных этапов алгоритма TEC преобразуем в VTEC, как описано выше.
Далее считываем значение предсказанной алгоритмом машинного обучения оценки VTEC:
z_pred = GetTEC_FromBase(lon,lat, year, day, hour);
Здесь функция GetTEC_FromBase() считывает по заданным координатам широты, долготы, даты и времени значение VTEC из сформированного предварительно табличного файла на нужный промежуток времени и участок местности по работе алгоритма предсказания и машинного обучения [2].
Вестник Российского нового университета
Серия «Сложные системы: модели, анализ и управление». 2025. № 3
В вектор измерений z записываем реальное + внешнее предсказание:
Z[]={Zm, z_pred};
Берем эти измерения Z и делаем фильтрацию по Калману:
Далее находим R (оценка дисперсии):
if (fSingleFreq) { // признак одночастотных измерений (по частоте L1)
interval = (Interval > 1)?Interval:1;
R = (rms_code)*(rms_code)/(4.0*(dTacc/(interval)));
}else {
R = 4/((1-sqr_freq12)*(1.-sqr_freq12))*(rms_phase)*(rms_phase)/(dTacc/(Interval));
}
Далее осуществляется фильтрация Калмана:
Forecast(F).Filtr(Z,H,R);
Результатом будет Xkalm[0],Xkalm[1].
Xkalm[0] перед следующим шагом присваиваем значение Z[0] , то есть это и есть искомая оценка VTEC. Для вычисления более точного значения можно применять формулы разложения локальной ионосферной модели в ряд Тейлора, используя модель первого или второго порядка [1]. Там будут использоваться приращения dX и dY по сетке квазиэквато-риальных координат и, соответственно, значения Xkalm[0],Xkalm[1] и Xkalm[2] .
Результаты работы
В результате мы получим распределение VTEC в виде географической карты по широте и долготе. Мы ее можем получить при помощи составления глобальной модели ионосферы (GIM) и передать из навигационного контроллера через интерфейс связи с внешним компьютером, используя специально разработанный протокол и информационные пакеты данных, так как мы это делали в работе [1], а на компьютере уже построить карты распределения VTEC.
Рисунок 2. Карта распределения ионосферной электронной концентрации VTEC земной поверхности
Теперь мы можем скачать с сайта glonass-iac карту VTEC на выбранную дату и время и принять ее как эталонную для сравнения [2]. Далее вырезаем из этих обеих глобальных
Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных...
карт наш локальный участок местности, на котором проводилась обработка спутниковых измерений. Этот участок будет ограничен линиями по широте FirstLat , LastLat и долготе FirstLon , LastLon . Затем вычисляется корреляцию между этими двумя изображениями с использованием функции библиотеки numpy и ssim. Скачаем карты распределения VTEC для дат 15-03-2023 и 15-08-2023. Проведем расчеты для сравнения для пяти разных географических районов:
-
# grid_lat, grid_lon – двумерные массивы координат
-
# VTEC_origin_1, VTEC_res_1 – эталонная и сформированная по измерениям карты для первой даты
-
# VTEC_origin_2, VTEC_res_2 – эталонная и сформированная по измерениям карты для второй даты
-
# Создаем координатные сетки
latitudes = np.linspace(-90, 90, 180)
longitudes = np.linspace(-180, 180, 360)
grid_lat, grid_lon = np.meshgrid(latitudes, longitudes, indexing=’ij’)
-
# районы для анализа
districts = [
{‘FirstLat’: -30.0, ‘LastLat’: 0.0, ‘FirstLon’: -60.0, ‘LastLon’: 0.0},
{‘FirstLat’: 30.0, ‘LastLat’: 60.0, ‘FirstLon’: 60.0, ‘LastLon’: 120.0},
{‘FirstLat’: -60.0, ‘LastLat’: -30.0, ‘FirstLon’: 120.0, ‘LastLon’: 180.0},
{‘FirstLat’: 40.0, ‘LastLat’: 45.0, ‘FirstLon’: -10.0, ‘LastLon’: 10.0},
{‘FirstLat’: -45.0, ‘LastLat’: -40.0, ‘FirstLon’: -120.0, ‘LastLon’: -115.0},
]
correlation_results = []
for idx, district in enumerate(districts):
FirstLat = district[‘FirstLat’]
LastLat = district[‘LastLat’]
FirstLon = district[‘FirstLon
LastLon = district[‘LastLon’]
-
# Создаем маски по координатам
-
# Вырезаем области
VTEC_origin_crop_1 = VTEC_origin_1[region_mask]
VTEC_res_crop_1 = VTEC_res_1[region_mask]
VTEC_origin_crop_2 = VTEC_origin_2[region_mask]
VTEC_res_crop_2 = VTEC_res_2[region_mask]
Вестник Российского нового университета
Серия «Сложные системы: модели, анализ и управление». 2025. № 3
-
# вычисляем корреляцию методом SSIM
ssim_score_1 = ssim(VTEC_res_crop_1, VTEC_origin_crop_1)
ssim_score_2 = ssim(VTEC_res_crop_2, VTEC_origin_crop_2)
Результаты корреляции всех вариантов сравнения карт мы получили в диапазоне 0,78…0,9. Это достаточно хороший результат, который показывает точность прогнозирования VTEC при помощи нашего метода.
Заключение
В данной статье предложен комплексный подход к предсказанию и уточнению ионосферных поправок в радионавигации, основанный на использовании методов машинного обучения и фильтра Калмана. Объединение предсказанных значений электронной концентрации, полученных с помощью моделей и алгоритмов машинного обучения, с реальными радионавигационными измерениями позволяет значительно повысить точность и оперативность оценки ионосферных эффектов. Проведенные эксперименты подтвердили эффективность предложенного метода, что делает его перспективным для внедрения в современные навигационные системы, обеспечивая более надежную и точную работу в условиях изменяющейся ионосферной среды.