Comments 21
Ничего не понял, но зато нашел интересное слово эфемериды(погуглил и правда тоже ничего не понял)
Да, надо признать, душновато получилось. Исправлюсь :)
В космосе рельсов нету,зато есть орбиты. Которые немного меняютяс со временем. Мы можем задать орбиту с точностью в сотни метров, зато пару месяцев эта точность не будет ухудшаться. Это называеть альманах. А можем задать с точность порядка метра, но действительны эхти параметры будут недолго (эфемерно). Это называется эфемериды. По сути эфемериды - это альманахи с большей точностью параметров, расширенные разными коррекциями.
Ну хоть бы ссылку на описание wipe-off дали бы. Или сами описали бы, что это за зверь.
А пересчет из LNAV в CNAV не получится - у CNAV точность выше. Сравните Table 20-III. Ephemeris Parameters с Table 30-I. Message Types 10 and 11 Parameters (2 of 2).
Тот же Crs у CNAV длиной 24 бита (scale 2**-8), а у LNAV - 16 бит (2**-5). Ну то есть на 3 бита точнее и на 3 бита расширили диапазон. Аналогично af0 - 26 битов у CNAV и 22 бита у LNAV.
Пересчитать из CNAV в LNAV можно, но при условии, что точность, с какой спутник ведет эфемеридные рассчеты - не выше точности CNAV. Где-то в ИКД было, что всякие вычисляются Crs побором параметров таким образом, чтобы эфемеридный расчет давал максимально близкую к реальной орбиту.
Так что CNAV - просто точнее LNAV.
А вот с GALILEO интересней, там FNAV и INAV расходятся по менее поянтным причинам. Возможно потому, что считаютяс в двух разных центрах.
Мало того, что CNAV точнее, они ещё и на практике передаются на другое базовое время. О чем и заметка.
Я пытаюсь для себя ответить на вопрос важный для архитектуры построения прошивки приемника или имитатора: требуется ли хранить несколько структур с эфемеридно-временным обеспечением или достаточно под каждый спутник заводить одну структуру эфемерид и клоков?
Если говорить про тип данных, то в целом можно обойтись одним типом для каждой системы. Набор передаваемых данных пересекается процентов на 90, отличаются какие-то второстепенные параметры и разрядность. Например, под Галилео у нас заведен тип nIFNAV::Ephemeris, куда мы кладем и FNAV, и INAV.
Но сколько объектов (инстансов, структур) заводить? Я начал с того, что выдавал каждому сигналу свою структуру. Но это явно перебор. Приходится накручивать логику как передать эти данные от одного сигнала другому, выбирать лучшие данные и т.п. Памяти много уходит.
С другого конца эта же проблема возникает при чтении RINEX файлов, если мы их хотим использовать для теплого старта или имитации сигналов. Я, внезапно для себя, наткнулся на тот факт, что не любую запись в rinex файле я могу отразить в эфемериды для формирования CNAV. Опять же из-за базового времени toe/toc, которое не попадает в 300-секундный шаг CNAV.
С INAV и FNAV я с вами полностью согласен. У меня тоже рвет шаблон, когда один спутник передает два разных набора af0, af1, af2 в двух соседних сигналах.
требуется ли хранить несколько структур с эфемеридно-временным обеспечением или достаточно под каждый спутник заводить одну структуру эфемерид и клоков?
Смотря для чего. Скажем для PPP нужны те эфемериды, от которых считаются принимаемые поправки. То есть самые обычные, те, что по L1 - LNAV, CT, INAV, D1/D2.
А если вы сами считаете навигационное решение без внешних поправок - берите самые точные, то есть CNAV, ВТ, IMAV, CNAV1/2/3.
отличаются какие-то второстепенные параметры и разрядность.
Они не второстепенные, там прежде всего изменение большой полуоси со временем. Эти параметры дают большую точность эфемерид + возможность дольше использовать эфемериды без сильной потери точности.
не любую запись в rinex файле я могу отразить в эфемериды для формирования CNAV.
Я бы сказал - никакую, в RINEX нету Adot (Change rate in semi-major axis). То есть сразу теряете качество до уровня LNAV. А пересчитать на другое время - вообще-то можно.
Ну вот просто из головы. Берёте LNAV на одно время. Считаете 48 координат и скоростей - на 2 часа раз в 5 минут. Потом перечситываете его на другое время, опять считаете 48 точек. Разницу приводите раскладывается на radial, along-track и cross-track комоненты. После чего вам надо подобрать 6 параметров (по два на каждой комоненте) для уменьшения отличий.
То есть просто погуглить, как осуществляется пересчет эфемерид на спутнике. Закладка идет в лучшем случаей 1 раз на виток (12 часов). А пересчитывать эфемериды до двух месяцев вперед умели начиная с II. Это "6.3.2 Extended Navigation Mode (Block II/IIA)."
У меня тоже рвет шаблон, когда один спутник передает два разных набора af0, af1, af2 в двух соседних сигналах.
У меня не рвёт. Два сигнала, излучаемые с двух разных антенн, не строго синхронны. Разница двух af0 означает сдвиг E5a относительно E5b, и обычно он равен половине длины волны, то есть они развернуты на 180 градусов.
Разница в af1 и af2 может означать не только пересчет разными группами, а апроксимацию кривой на разные интервалы. Мне что-то помнится, что FNAV меняет toc раз в 30 минут, а INAV - раз в 10 минут. Но могу и ошибаться.
Шаблоны мне (и не только мне) порвал СДКМ, когда разработчики приёменика объяснили, что у него доплер по частоте и коду может иметь разные знаки. То есть, похоже, что у Лучей разные генераторы на несущую и питы кода. @uncleYury - можете пояснить ситуацию, я верно догадался?
P.S. Тема сисек wipe-off не раскрыта. Я реально не в курсе, что это за зверь.
P.P.S. Пришла в голову мысль, что PLL для E5a (FNAV) и E5b (INAV) могут быть реально разными. Тогда разница в af1 и af2 отражает работу двух разных PLL.
А пересчитать на другое время - вообще-то можно.
Да, так и поступаю. Но это прокатывает для имитации сигнала, но не для создания bit-accurate копии сигнала, приходящего со спутника.
Тема
сисекwipe-off не раскрыта. Я реально не в курсе, что это за зверь.
А, ну это изи, я там на картинке попытался изобразить (красные стрелки). Это когда вы предсказываете поток символов навигационного сообщения и снимаете модуляцию с квадратур до подачи на дискриминаторы. Получается по-сути пилот-компонента со всеми её преимуществами в части повышения чувствительности.
Можно предсказывать на базе структуры с эфемеридами, откуда вся эта заметка, а можно хранить неразобранные сабфреймы/сообщения и подменять в них только время и контрольные суммы.
снимаете модуляцию с квадратур до подачи на дискриминаторы
Как в анекдоте - "папа, а ты с кем сейчас разговаривал"? Но мысль понятна.
А машину времени (ультразвуковую линию задержки) не применить? Задерживаем сигнал на 20 мс и имеем достоверную информацию о том, какой бит мы сейчас примем. То есть приёмник до задержк и для приёма ЭФИ, а после линии задержки - для точности.
Беда в том, что это нужно на таких SNR, на которых биты уже не выделяются.
Где-то я видел статью, что можно принимать эфемериды не входя в когерент, примерно на 25 SNR,
Тут скорее про диапазон 8-15 дБГц
Неужели что-то реально принимается?
Два сигнала, излучаемые с двух разных антенн, не строго синхронны.
Вы в этом случае начинаете рассматривать af0 как коррекцию к сигнальному времени, но по ИКД это же коррекция часов спутника:

А мы со спутника только сигналы и принимаем. Это "5.1.4. Satellite Time Correction Algorithm".
The predicted offset of the physical satellite signal TOT relative to the satellite signal TOT in GST can be computed for the dual frequency signal combination using the following formula:
То есть это смещение физическиого сигнала относительно GST.
P.S. TOT - Time Of Transmission
P.P.S. Пришла в голову мысль, что PLL для E5a (FNAV) и E5b (INAV) могут быть реально разными. Тогда разница в af1 и af2 отражает работу двух разных PLL.
У них один модулятор и общая несущая 1191.795, общий усилитель и фильтр в OMUX'е.
По ГОСТ Р 54119-2010 у них несущие 1176,450 и 1207,140. По ICD (2.1.2. Carrier Frequencies) - тоже. А вот как из E5a и E5b получается E5 - я не в курсе. Подозреваю, что E5 просто суперпозиция E5а и E5b, а её несущая вообще лишь обозначает середину полосы.
Но я тут могу, конечно, очень сильно лажануться.
Передает ли GPS разные данные в LNAV и CNAV сообщениях?