Учет теории относительности в системе GPS
Слева локация по данным gps‑sdr‑sim, справа — по данным «нерелятивистского» симулятора.
В данном материале мы подробно рассмотрим, каким образом релятивистские эффекты сказываются на точности позиционирования по сигналам GPS-спутников. Для проведения экспериментов задействуем генератор радиосигналов gps‑sdr‑sim в паре с программным приемником gnss‑sdr.
Инсталлируем пакет gnss‑sdr:
sudo apt install gnss-sdr
Загружаем репозиторий и компилируем gps‑sdr‑sim:
git clone https://github.com/osqzss/gps-sdr-sim.git
cd gps-sdr-sim
gcc gpssim.c -lm -O3 -o gps-sdr-sim
Изначально в заголовке gpssim.h учет релятивизма не предусмотрен. Открыв модуль gpssim.c, обнаруживаем искомую поправку на 434-й строке:
relativistic = -4.442807633E-10*eph.ecc*eph.sqrta*sek;
далее это значение суммируется с бортовыми часами космического аппарата:
clk[0] = eph.af0 + tk*(eph.af1 + tk*eph.af2) + relativistic - eph.tgd;
Чтобы подготовить модифицированный симулятор без учета теории относительности, обнуляем эту переменную и выполняем пересборку:
sed-i "434s|.*|\trelativistic =0;// -4.442807633E-10*eph.ecc*eph.sqrta*sek;|"
gcc gpssim.c -lm -O3 -o gps-sdr-sim-no-rel
Теперь сформируем файлы с синтезированными радиосигналами, имитирующими работу навигационного приемника. Географические координаты задаются ключом ‑l. Для генерации необходим файл эфемерид, содержащий актуальные орбитальные параметры и поправки системного времени. Его можно загрузить с портала НАСА либо использовать встроенный образец brdc0010.22n из комплекта gps‑sdr‑sim:
./gps-sdr-sim -e brdc2580.26n -l 56.46958800001232,84.94677100122212 -o gpssim_true.iq -s 2500000 -d 1800 -b 8
./gps-sdr-sim-no-rel -e brdc2580.26n -l 56.46958800001232,84.94677100122212 -o gpssim_norel.iq -s 2500000 -d 1800 -b 8
Для обработки данных в gnss‑sdr задействуем конфигурационные файлы. Сконструируем документ «gps_analyze_true.conf» со следующими параметрами:
[GNSS-SDR]
;######### GLOBAL OPTIONS ##################
GNSS-SDR.internal_fs_sps=2500000
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=File_Signal_Source
Укажите путь к вашему .bin файлу
SignalSource.filename=gpssim_true.iq
Тип данных ishort означает знаковые 8-битные целые (int8)
SignalSource.item_type=ibyte
Укажите реальную частоту дискретизации вашего файла
SignalSource.sampling_frequency=2500000
SignalSource.samples=0
;######### SIGNAL_CONDITIONER CONFIG ############
SignalConditioner.implementation=Signal_Conditioner
Преобразование чередующихся int8 (I и Q) в комплексный формат float
DataTypeAdapter.implementation=Ibyte_To_Complex
InputFilter.implementation=Pass_Through
InputFilter.item_type=gr_complex
;######### CHANNELS GLOBAL CONFIG ############
Channels_1C.count=8
Channels.in_acquisition=8
Channel.signal=1C
;######### ACQUISITION GLOBAL CONFIG ############
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
Acquisition_1C.item_type=gr_complex
Acquisition_1C.pfa=0.01
Диапазон поиска Доплера увеличен до +-10000 Гц на случай сильного сдвига частоты
Acquisition_1C.doppler_max=10000
Acquisition_1C.doppler_step=250
Acquisition_1C.blocking=true
;######### TRACKING GLOBAL CONFIG ############
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
Tracking_1C.item_type=gr_complex
Полоса PLL (фаза) — 40 Гц, полоса DLL (код) — 4 Гц для стабильного удержания
Tracking_1C.pll_bw_hz=40.0
Tracking_1C.dll_bw_hz=4.0
Tracking_1C.dump=false
Путь, куда будут сохраняться файлы (папка должна существовать)
;######### TELEMETRY DECODER GPS CONFIG ############
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
;######### OBSERVABLES CONFIG ############
Observables.implementation=Hybrid_Observables
;######### PVT CONFIG ############
PVT.enable_monitor=true
PVT.monitor_client_addresses=127.0.0.1
PVT.monitor_udp_port=1111
PVT.implementation=RTKLIB_PVT
PVT.positioning_mode=Single
PVT.output_rate_ms=100
PVT.display_rate_ms=500
PVT.iono_model=Broadcast
PVT.trop_model=Saastamoinen
PVT.flag_rtcm_server=true
PVT.flag_rtcm_tty_port=false
PVT.rtcm_dump_devname=/dev/pts/1
PVT.rtcm_tcp_port=2101
PVT.rtcm_MT1019_rate_ms=5000
PVT.rtcm_MT1077_rate_ms=1000
Monitor.enable_monitor=true
Monitor.decimation_factor=1
Monitor.client_addresses=127.0.0.1
Monitor.udp_port=1112
GNSS-SDR.telecommand_enabled=true
GNSS-SDR.telecommand_tcp_port=3333
Дублируем конфиг в новый файл «gps_analyze_norel.conf», прописав в строке 10 имя источника как gpssim_norel.iq.
Запускаем обработку в gnss‑sdr:
gnss-sdr --config_file="gps_analyze_true.conf"
gnss-sdr --config_file="gps_analyze_norel.conf"
Географические координаты экспортируются в форматах .kml, .gpx и .geojson с периодичностью 10 Гц (каждые 0,1 секунды). Графическая иллюстрация демонстрирует сопоставление результатов обоих прогонов за полчаса.
Как следует из сравнения, пренебрежение релятивистскими поправками влечет за собой погрешность позиционирования: облако вычисленных точек ощутимо смещается относительно эталонных координат.
Попробуем вникнуть в физическую природу рассматриваемой поправки. В фундаментальном труде Нила Ашби «Relativity in the Global Positioning System» (2003) приведена полная формула относительного изменения частоты:
-
— орбитальная скорость спутника в инерциальной системе (ECI), м/с;
-
— геоцентрическое расстояние до спутника, м;
-
м
/с
— стандартный гравитационный параметр Земли;
-
Дж/кг — гравитационный потенциал на уровне геоида;
-
м/с — скорость света в вакууме.
Исключив радиус через интеграл энергии
(где a — большая полуось), запишем выражение в следующем виде:
Инвариантная составляющая сдвига:
Вариативная составляющая:
— циркулярная скорость на круговой орбите.
Таким образом, величину правомерно интерпретировать как доплеровский сдвиг второго порядка
Получить искомый член relativistic =, где:
-
— эксцентриситет эллиптической орбиты;
-
— эксцентрическая аномалия, задающая текущее угловое положение спутника.
можно посредством интегрирования начиная с момента
, когда аппарат проходит перигей. Очевидно, что данная поправка носит циклический характер с периодом, равным времени обращения спутника, и обладает нулевым математическим ожиданием.
Стабильный член сдвига частоты в программе gps‑sdr‑sim не рассчитывается в явном виде, так как подразумевается, что оно изначально нивелировано при настройке бортового генератора. Именно эту постоянную составляющую
обычно принято считать виновницей накопления колоссальной погрешности в 10 километров за сутки.
Литература
-
Ashby, N. (2003). Relativity in the Global Positioning System. Living Reviews in Relativity, 6(1), 1. https://doi.org/10.12942/lrr-2003-1
Интервью с Роджером Пенроузом: о Вселенной, сознании и пространстве-времени
Первая часть 16-й проблемы Гильберта: перебор схем 8-й степени с ограничениями
У астероида неожиданно нашли кольца: ученые в недоумении
Кого ждет рынок труда России в 2032 и 2040 годах: демографический анализ Росстата
Первопроходцы открывают морские пути
Новое редкое доказательство найдено для теоремы о четырёх красках
Сколько близких звезд мы упустили из виду?
18 снимков наглядно покажут колоссальные масштабы нашей вселенной