![](https://habrastorage.org/getpro/habr/upload_files/255/79f/41a/25579f41ae6548b8e36b90cdcb8f8158.png)
В наши дни в навигации доминируют глобальные навигационные спутниковые системы (ГНСС) второго поколения: GPS, ГЛОНАСС, Galileo и Beidou. Они развиваются и управляются разными странами, но очень похожи по своей структуре, техническим решениям и возможностям.
Каждая из систем содержит несколько десятков спутников, которые движутся по круговым орбитам на высоте около 20 000 км и содержат на своем борту высокостабильные часы. Спутники наблюдаются станциями наземного комплекса управления, что позволяет предсказывать положение спутников и уход их часов с точностью в метры и наносекунды.
![Фронт сигнала, соответствующий одному и тому же времени излучения, в моменты A, B и C Фронт сигнала, соответствующий одному и тому же времени излучения, в моменты A, B и C](https://habrastorage.org/getpro/habr/upload_files/c83/dbd/f66/c83dbdf667d122bb6aa7ebd47f736fad.png)
Каждый из спутников излучает навигационный радиосигнал, формируя его в собственной шкале времени:
Сигнал выступает оберткой, физическим носителем показаний часов спутника. Это способ обеспечить "видимость" этих часов за тысячи километров, несмотря на облака, листву и прочие препятствия.
Структура функции S(t) известна и описана в контрольных документах системы. Имея математическую модель сигнала, приемник определяет заложенное в сигнал время и сравнивает его с собственными часами. Разница сигнального времени и часов приемника связана с расстоянием до спутника, а расстояние до спутника - с местоположением приемника. Собрав наблюдения от нескольких спутников, приемник составляет несложную систему уравнений и определяет где он находится.
Навигационный сигнал принимается на фоне шумов, помех и других сигналов. Мощность этих мешающих воздействий в сотни и более раз превышает мощность самого навигационного сигнала. По этой причине обработка сигнала не сводится к взятию обратной функции. Вместо этого приемник создает локальную копию сигнала на основе его математической модели, а затем подстраивает параметры этой копии до максимального совпадения (корреляции).
![Формирование группового навигационного сигнала на борту спутника Формирование группового навигационного сигнала на борту спутника](https://habrastorage.org/getpro/habr/upload_files/9e0/80c/6fc/9e080c6fc9144332634deca34ae5e086.png)
Алгоритмы обработки навигационных сигналов определяются математической моделью навигационного сигнала. И на этом шаге современные ГНСС преподносят нам сюрприз. Оказывается, что разные системы используют разные сигналы. Более того, каждый спутник не ограничивается одним типом сигнала, а излучает целый набор. Так на новых спутниках ГЛОНАСС можно выделить до 14 разных навигационных сигналов! А в совокупности по всем системам типов сигналов больше 50.
![Распределение сигналов различных типов по нижнему L-диапазону частот Распределение сигналов различных типов по нижнему L-диапазону частот](https://habrastorage.org/getpro/habr/upload_files/787/d7b/f18/787d7bf18e01753fb1a806bb147833d9.png)
Если попытаться к радионавигации применить модель OSI, то разные системы и сигналы задают разные протоколы физического уровня. Информативный процесс отражается на физический по немного разным правилам. И если мы хотим построить мультисистемный навигационный приемник, мы должны добавить поддержку всех этих протоколов.
Но не спешите расчехлять ваши IDE. У разных сигналов слишком много общего, поэтому писать независимый код под каждый тип сигнала - плохая идея:
Поддерживать и тестировать множество реализаций однотипных функций тяжело и дорого, к тому же распухает объем прошивки.
При сигнальной обработке часть функций реализуется аппаратно (в ПЛИС или модулях СБИС), а значит мы займем кристалл множеством специализированных каналов, потеряем в гибкости настроек.
Что если попробовать другую крайность: обобщить разные сигналы до одной математической модели, а нюансы разных сигналов описывать параметрами этой модели? К такому подходу моя команда пришла после разработки нескольких навигационных приемников. Сейчас мы используем унифицированные каналы, инициализируя их нужными параметрами при старте слежения за тем или иным сигналом.
![Функциональная схема навигационного приемника Функциональная схема навигационного приемника](https://habrastorage.org/getpro/habr/upload_files/9dd/a21/7a4/9dda217a4fefc084539d8f63ec1e5824.png)
Модель традиционных сигналов
Положение потребителя оценивается по задержкам сигналов, поэтому навигационные сигналы специально спроектированы так, чтобы упростить оценку этих задержек на фоне шумов и мешающих факторов.
Согласно формуле Вудворда, чем большую полосу занимает сигнал, и чем больше его спектр сосредоточен на краях выделенного диапазона, тем меньше шумовая ошибка оценки задержки его огибающей. Спутник передает навигационные данные (информацию о своем положении и т.п.) с низкой скоростью, что не приводит к существенному расширению спектра сигнала. Поэтому для увеличения точности оценки задержки сигнала его дополнительно модулируют спектрорасширяющей последовательностью.
Пожалуй самые популярные сигналы, которые можно встретить в каждом смартфоне, - это сигналы GPS L1C/A и ГЛОНАСС L1OF. В этих сигналах в качестве спектрорасширяющей последовательности используются дальномерные коды с периодом в 1 мс и длиной 1023 и 511 символов соответственно. Эти последовательности являются псевдослучайными, формируются с помощью линейных генераторов на сдвиговых регистрах. Модель таких традиционных сигналов, как C/A и OF, проста:
где
A = A(t) - амплитуда сигнала, пропорциональная корню из его мощности,
C = C(t) - модуляция дальномерным кодом, принимает значения +1 и -1, смена значений происходит часто (2 мкс или менее),
D = D(t) - модуляция символами навигационного сообщения, смена значений происходит редко (2 мс или более), а сами значения заранее не известны приемнику,
- несущая частота, например, 1575.42 МГц для GPS L1C/A,
- начальная фаза.
Сигнал ГНСС с модуляцией дальномерным кодом и навигационным сообщением
Обобщаем на новые сигналы
После нескольких десятков лет эксплуатации GPS и ГЛОНАСС с традиционными сигналами встал вопрос о модернизации систем, включая добавление новых сигналов. Задача разработки сигналов возникла и в Galileo с Beidou, создаваемых с нуля. Разработчики стали упражняться в попытках угодить всем потребителям одновременно, героически борясь с конфликтующими требованиями:
высокая потенциальная точность и низкая ошибка многолучевости;
простота приемной аппаратуры и низкое энергопотребление;
минимизация влияния от/на другие радиосистемы;
постоянство огибающей (высокий КПД усилителя на спутнике) и уплотнение со старыми сигналами;
использование ранее распределенных под спутниковую навигацию частот;
чувствительность и помехоустойчивость при большей скорости передачи данных.
Схемы модуляции усложнились. Например, в GPS L2C применили посимвольное уплотнение двух сигнальных компонент, когда они передаются по-очереди: символ от одного, символ от другого. Эта же схема используется в сигналах ГЛОНАСС с кодовым разделением.
В некоторых сигналах применили оверлейные (они же вторичные) коды. С их помощью улучшаются корреляционные свойства сигналов, один сигнал меньше мешает приему другого.
Отдельная хитрость - использование цифровой поднесущей, т.е. умножение сигнала на меандр. Это приводит к расщеплению спектра сигнала, на нем появляются два лепестка. Если использовать новый сигнал на одной несущей со старым, это разнесет их по спектру, и они меньше будут влиять друг на друга. В зависимости от особенностей реализации этот прием называют BOC (binary offset carrier), AltBOC, TMBOC, CBOC, QMBOC и т.д.
![Сигнал ГНСС с модуляцией дальномерным кодом, цифровой поднесущей, оверлейным кодом и навигационным сообщением Сигнал ГНСС с модуляцией дальномерным кодом, цифровой поднесущей, оверлейным кодом и навигационным сообщением](https://habrastorage.org/getpro/habr/upload_files/d13/52a/225/d1352a22560df34353c38601a3e73e11.png)
Если всё объединить, получаем обобщенную модель навигационного сигнала:
где в дополнение к введенным ранее функциям
B = B(t) - модуляция цифровой поднесущей, принимает значения +1 и -1, смена значений происходит часто (половина мкс или менее),
M = M(t) - П-функция размещения во временном слоте, принимает значения +1 и 0 внутри и вне временного слота соответственно, смена значений происходит часто (половина мкс или менее),
O = O(t) - модуляция оверлейным кодом, принимает значения +1 и -1, смена значений происходит редко (1 мс или более).
Модели сигналов более простой структуры могут быть получены из общей модели путем исключения лишних множителей или приемом их равными единице.
Сигналы системы GPS
Система GPS сменила уже несколько поколений спутников, сейчас продолжают функционировать аппараты от Block IIA до Block III.
![](https://habrastorage.org/getpro/habr/upload_files/52d/5f2/e7e/52d5f2e7e7eff7565487c66e87461c62.png)
![Связь излучаемых сигналов с типом навигационного спутника GPS Связь излучаемых сигналов с типом навигационного спутника GPS](https://habrastorage.org/getpro/habr/upload_files/143/b59/7e1/143b597e1c284ec4dac88c56b7d594f4.png)
В процессе модернизаций были добавлены гражданские сигналы L2C на второй несущей частоте, военные криптозащищенные M сигналы. С Block IIF начали вводиться сигналы L5 на третьей несущей частоте с полосой 20 МГц, а Block III подарил нам сигналы L1C. Последние со временем могут заменить C/A в наших смартфонах и сделать доступной для гражданских пользователей функцию цифровой подписи для защиты от спуфинговых атак.
Параметры обобщенной модели для сигналов GPS собраны в таблице (кликните для увеличения):
![](https://habrastorage.org/getpro/habr/upload_files/bf9/158/7e8/bf91587e85eaf3b146fab35441c31bfd.png)
Сигналы системы ГЛОНАСС
Количество модификаций спутников ГЛОНАСС меньше, чем в GPS. Но по разнообразию заявленных сигналов они не отстают. Основными сигналами остаются традиционные сигналы с частотным разделением, но с выводом новых спутников ГЛОНАСС-К2 мы увидим и новые сигналы с кодовым разделением. А там и BOC модуляция, и временное уплотнение, и прочие изыски.
![](https://habrastorage.org/getpro/habr/upload_files/317/e75/835/317e75835546f2b6a4f6d2eaa38c54a5.png)
![](https://habrastorage.org/getpro/habr/upload_files/29f/43d/549/29f43d549bb719cd12620ada6f64746b.png)
Параметры обобщенной модели для сигналов ГЛОНАСС собраны в таблице (кликните для увеличения):
![](https://habrastorage.org/getpro/habr/upload_files/141/d0f/4d8/141d0f4d8cba16f3d4ba25d481914ea2.png)
Сигналы системы Galileo
Галилео изящно вписался в частотный план навигационных систем. Его сигнал E1 по назначению и параметрам близок к L1C GPS и B1C BDS. В тестовом режиме он уже сейчас включает цифровую подпись для защиты от спуфинга. Сигнал E5 использует модуляцию AltBOC и образует самый широкополосный совокупный сигнал из всех существующих, целых 50 МГц. При разработке системы сигнал E6 предполагался коммерческим, по отдельной подписке. Но несколько лет назад его дальномерные коды были открыты, а на днях опубликована и спецификация сообщения C/NAV.
![](https://habrastorage.org/getpro/habr/upload_files/111/151/9ef/1111519ef6828d507ab588504971def2.png)
![](https://habrastorage.org/getpro/habr/upload_files/a14/f8e/c6c/a14f8ec6c40b94a301817f1dcbfe63e7.png)
Параметры обобщенной модели для сигналов Galileo собраны в таблице (кликните для увеличения):
![](https://habrastorage.org/getpro/habr/upload_files/4f1/cc7/078/4f1cc7078c1d8b393c4704664a9e4aa0.png)
Сигналы системы Beidou
Темпы обновления и развития системы Beidou поражают. Сейчас система находится в третьей фазе, за прошлые 2-3 года спутниковая группировка почти полностью обновлена. Сигналы третьей фазы напоминают сигналы Galileo и хорошо дополняют американскую и европейскую системы.
![](https://habrastorage.org/getpro/habr/upload_files/5ae/241/40c/5ae24140c1129524cb31dee7a80d755d.png)
![](https://habrastorage.org/getpro/habr/upload_files/e53/9fe/0ec/e539fe0ecc2f6178cbdbf023d71480a9.png)
Параметры обобщенной модели для сигналов Beidou собраны в таблице (кликните для увеличения):
![](https://habrastorage.org/getpro/habr/upload_files/f70/d68/852/f70d688527679d24a7847a3dd7fd44f8.png)
Заключение
При всем разнообразии навигационные сигналы современных ГНСС могут быть приведены к общему описанию, что позволяет унифицировать программные и аппаратные блоки, их обрабатывающие. Эта унификация упрощает разработку и тестирование приемника, подсказывает как выстраивать архитектуру программного обеспечения и какие интерфейсы использовать. Упрощаются аналитические расчеты, их достаточно провести для обобщенной модели, а затем редуцировать до требуемого сигнала.
Приведенное в статье описание является высокоуровневым и не затрагивает реализацию блоков обработки таких сигналов. Кроме того, за бортом остался канальный уровень передачи данных (data link layer) с вопросами синхронизации, декодирования и хранения сообщений. Он тоже требует обобщения, но об этом как-нибудь в другой раз.