Аппаратура потребителей спутниковых радионавигационных систем (дисциплина)

Материал из SRNS
Перейти к: навигация, поиск

Дисциплина "Аппаратура потребителей спутниковых радионавигационных систем" входит в вариативную часть общенаучного цикла занятий учебного плана подготовки специалистов по направлению 11.05.01 "Радиоэлектронные системы и комплексы".

Преподается осеннем и весеннем семестрах пятого года обучения. В осеннем семестре лекции и лабораторные занятия (итог - экзамен), в весеннем - курсовой проект.

По дисциплине подготовлен электронный учебно-методический комплекс.

Содержание

Правила аттестации

Обязательным условием для получения допуска к экзамену является выполнение и защита 4 лабораторных работ.

Календарный план

Неделя Дата Лекция Лабораторная
2 04.09-10.09 Сегменты СРНС. Методы позиционирования. Назначение АП СРНС. Обобщённая функциональная схема. Принцип работы АП СРНС. Первичная и вторичная обработка
3 11.09-17.09 Антенна АП. Предварительный МШУ. Коэффициент шума. Радиочастотный план.
4 18.09-24.09 Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС.
5 25.09-01.10 Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.
Статистический эквивалент коррелятора
Ошибки позиционирования в городских условиях
Исследование характеристик МШУ АП СРНС
6 02.10-08.10 Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.
7 09.10-15.10 Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.
Блок быстрого поиска


8 16.10-22.10 Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.
9 23.10-29.10 Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр. Исследование коррелятора АП СРНС с помощью имитационной модели
10 30.10-05.11 Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр.
11 06.11-12.11 Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.
12 13.11-19.11 Демодуляция навигационных данных. Алгоритм демодуляции, статистические характеристики демодуляции.
13 20.11-26.11 Декодирование навигационных данных. Алгоритм декодирования, статистические характеристики декодирования. GNSS Planning
Чувствительность навигационных модулей


14 27.11-03.12 Погрешности измерения псевдодальности, псевдоскорости и координат АП СРНС.
15 04.12-10.12 Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.
16 11.12-17.12 Контроль целостности
17 18.12-24.12 Итоговое занятие Помехоустойчивость навигационных модулей
18 25.12-31.12 Итоговое занятие

Журнал успеваемости.

Вопросы к экзамену

Экзамен проводится в устной форме и содержит два вопроса (экзаменационные вопросы). При подготовке рекомендуется использовать книги по тематике, конспекты лекций и презентации.

Курсовой проект

Курсовой проект по данной дисциплине выполняется во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке АП СРНС:

  • обработка измерений от приемника ГНСС в RTKLIB;
  • обработка данных и моделирование в Matlab/Python;
  • разработка программного модуля на С/С++, включая юнит-тестирование в Check.

Консультации по этапу производятся до наступления соответствующего дедлайна.

Этап 1. Использование

Дедлайн: 05.03.18

На крыше корпуса А МЭИ установлена трехдиапазонная антенна Harxon HX-CSX601A. Она через 20-метровый кабель, сплиттер, bias-tee и усилитель подключена к трем навигационным приемникам:

  • Javad Lexon LGDD,
  • SwiftNavigation Piksi Multi,
  • FPGA-based приемник на основе нашего ядра CoreZh.

Приемники формируют первичные измерения, которые логируются в файлах формата RINEX 2.11. Javad и Piksi - только файлы наблюдений (javad.obs и piksi.obs), CoreZh - и наблюдения (corezh.obs), и файл эфемерид (corezh.nav для GPS и corezh.gnav для ГЛОНАСС). Архив с файлами за 03.02.18 доступен для скачивания по ссылке.

Требуется произвести вторичную обработку измерений, например, с помощью программы RTKLIB. В Matlab или Python построить гистограммы отклонения навигационного решения от эталонного решения (в метрах). В качестве эталона взять средний результат для Javad.

Оформить отчёт по результатам этапа:

  1. Особенности настройки программы вторичной обработки
  2. Средние расчетные положения для разных приемников и разница между ними (в градусах и мм соответственно)
  3. Гистограммы отклонений

Этап 2. Моделирование

Дедлайн: 09.04.18

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

Одна из самых простых и удобных моделей - в системе GPS.

Требуется реализовать на языке Matlab или Python функцию расчета положения спутника GPS на заданный момент по шкале GPST. В качестве источника эфемерид использовать предоставленный на предыдущем этапе файл с логами за 03.02.18.

Построить трехмерные графики множества положений спутника GPS с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 00:00 03.02.18 до 12:00 03.02.18. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (взять с середины).

Построить SkyView за указанный временной интервал (напоминаю, антенна на крыше корпуса А) и сравнить результат с Trimble GNSS Planning Online.

Оформить отчет по результатам этапа:

  1. Реализация в Matlab или Python
  2. Таблица использованных эфемерид
  3. Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)
  4. Расчётный и полученный в GNSS Planing Online SkyView
  5. Выводы

Этап 3. Реализация

Дедлайн: 21.05.18

Требуется разработать на языке С/С++ функцию расчета положения спутника GPS на заданное время по шкале GPST, минимизируя время её исполнения и количество затрачиваемой оперативной памяти. Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.

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

Программный модуль должен сопровождаться unit-тестами под check:

  • Тесты функции решения уравнения Кеплера
  • Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды.

Во время второго теста должно вычисляться и выводиться средняя длительность исполнения функции. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (как на предыдущем этапе).

Требуется провести проверку на утечки памяти с помощью утилиты valgrind.

Оформить отчет по результатам курсового проекта. В качестве первых двух глав использовать отчёты с предыдущих этапов, в третьей главе отразить результаты этого этапа:

  1. Код реализации
  2. Вывод тестов, включая анализ времени исполнения
  3. Вывод valgrind
  4. Вывод по этапу
  5. Заключение по проекту

По ссылке доступен архив каркаса программного модуля, представленного в виде подключаемой библиотеки на базе системы сборки CMake. Настроена компиляция статической/динамической библиотек компилятором/кросскомпилятором и выполнение юнит-тестов (проверено в GNU/Linux системах). Для примера в библиотеке реализованы две функции: умножения и сложения.

В функцию сложения add внесена ошибка, на которую указывает результат соответствующего юнит-теста:

korogodin@KorPC:~/Receivers/RecCourse/project/libgpssvpos$ mkdir build
korogodin@KorPC:~/Receivers/RecCourse/project/libgpssvpos$ cd build/
korogodin@KorPC:~/Receivers/RecCourse/project/libgpssvpos/build$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- libgpssvpos version: f143b84
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for one of the modules 'check'
-- Configuring done
-- Generating done
-- Build files have been written to: /home/korogodin/Receivers/RecCourse/project/libgpssvpos/build
korogodin@KorPC:~/Receivers/RecCourse/project/libgpssvpos/build$ make
Scanning dependencies of target gpssvpos-static
[ 11%] Building CXX object src/CMakeFiles/gpssvpos-static.dir/gpssvpos.cpp.o
[ 22%] Building CXX object src/CMakeFiles/gpssvpos-static.dir/kepler.cpp.o
[ 33%] Linking CXX static library libgpssvpos-static.a
[ 33%] Built target gpssvpos-static
Scanning dependencies of target gpssvpos
[ 44%] Building CXX object src/CMakeFiles/gpssvpos.dir/gpssvpos.cpp.o
[ 55%] Building CXX object src/CMakeFiles/gpssvpos.dir/kepler.cpp.o
[ 66%] Linking CXX shared library libgpssvpos.so
[ 66%] Built target gpssvpos
Scanning dependencies of target test_gpssvpos
[ 77%] Building CXX object test/CMakeFiles/test_gpssvpos.dir/check_main.cpp.o
[ 88%] Building CXX object test/CMakeFiles/test_gpssvpos.dir/check_position.cpp.o
[100%] Linking CXX executable test_gpssvpos
Running unit tests
Running suite(s): My test suite
50%: Checks: 2, Failures: 1, Errors: 0
/home/korogodin/Receivers/RecCourse/project/libgpssvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3
test/CMakeFiles/test_gpssvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_gpssvpos»
make[2]: *** [test/test_gpssvpos] Ошибка 1
Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты