Цифровые раскопки: gps-sdr

Случайно наткнулся на программный приёмник, который пытался изучить/освоить больше 10 лет назад. Исходники его до сих пор доступны на github: gps-sdr.

Немного поглядел исходники и захотелось его запустить. Ну а чтобы упростить себе жизнь было принято решение использовать этот программный приёмник не с реальным сигналом, а с сигналом, сформированным имитатром gps-sdr-sim с github.

Пришлось немного поразбираться. Во-первых, версия gps-sdr с git-hub не позволяет работать с записями, хранящимися в файлах. Во-вторых, не заработали функции, написанные вручную и использующие SIMD-команды процессора (к счастью, в проекте есть альтернативные функции, не использующие SIMD-команды). В-третьих, пришлось поправить промежуточную частоту (на нулевую), потому что не нашлось соответствующей настройки в gps-sdr-sim. В-четвёртых, выход gps-sdr-sim пришлось дополнительно масштабировать, иначе происходили какие-то переполнения и выдавалась ошибка seg fault. Также небольшие изменение внесены в gps-gse (но сама программа gps-gse при этом работает крайне нестабильно и часто неожиданно заканчивает работу с ошибкой), чтобы она скомпилировалась с текущей версией wxWidgets.

Файл с отсчётами сигнала формировался командой: «./gps-sdr-sim -e ./brdc3540.14n -l 2.1747199999999998,97.43472,100 -d 220 -o Palambak.bin -s 2048000 -b 16 -v» gps-sdr запускалась командой: «./gps-sdr -v -p /path-to/Palambak.bin»

Изменённые версии, выложены по ссылкам: gps-sdr, gps-sdr-sim.

Навигационное решение из gps-sdr