Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных из моделей электронной концентрации и радионавигационных измерений

Бесплатный доступ

В статье рассматривается методика предсказания и уточнения ионосферных поправок в радионавигации с использованием машинного обучения и фильтра Калмана. В качестве первого источника данных применяются предсказанные значения вертикальной электронной концентрации ионосферы, полученные с помощью методов машинного обучения, что позволяет повысить точность оценки ионосферных поправок. Второй источник – значения, вычисляемые через накопление радионавигационных измерений в реальном времени, что обеспечивает актуальность и оперативность данных. Предложенная методика позволяет объединить преимущества моделирования и реальных измерений для повышения точности коррекции ионосферных эффектов. Результаты экспериментов демонстрируют эффективность подхода и его потенциал для применения в современных системах спутниковой навигации.

Еще

Радионавигация, ионосферные поправки, машинное обучение, фильтр Калмана, электронная концентрация, моделирование ионосферы, радионавигационные измерения, навигационные системы

Короткий адрес: https://sciup.org/148331939

IDR: 148331939   |   УДК: 621.396:004.738.5   |   DOI: 10.18137/RNU.V9187.25.03.P.15

Текст научной статьи Предсказание и уточнение ионосферных поправок в радионавигации на основе машинного обучения и фильтра Калмана с использованием данных из моделей электронной концентрации и радионавигационных измерений

Современные системы спутниковой навигации, такие как 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 kk _ 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&iepList = Iep[nsys][NSat];

где

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 при помощи нашего метода.

Заключение

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