Аппаратура потребителей спутниковых радионавигационных систем (дисциплина)
Дисциплина "Аппаратура потребителей спутниковых радионавигационных систем" входит в вариативную часть общенаучного цикла занятий учебного плана подготовки специалистов по направлению 11.05.01 "Радиоэлектронные системы и комплексы".
Преподается осеннем и весеннем семестрах пятого года обучения. В осеннем семестре лекции и лабораторные занятия (итог - экзамен), в весеннем - курсовой проект.
По дисциплине подготовлен электронный учебно-методический комплекс.
Содержание |
Правила аттестации
Обязательным условием для получения допуска к экзамену является выполнение и защита 4 лабораторных работ.
Календарный план
Вопросы к экзамену
Экзамен проводится в устной форме и содержит два вопроса (экзаменационные вопросы). При подготовке рекомендуется использовать книги по тематике, конспекты лекций и презентации.
Курсовой проект
Курсовой проект по данной дисциплине проводится во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке АП СРНС:
- обработка измерений от приемника ГНСС в RTKLIB;
- обработка данных и моделирование в Matlab/Python;
- разработка программного модуля на С/С++, включая юнит-тестирование в Check.
Этап 1. Использование
Дедлайн: 06.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.
Оформить отчёт по результатам этапа:
- Особенности настройки программы вторичной обработки
- Средние расчетные положения для разных приемников и разница между ними (в градусах и мм соответственно)
- Гистограммы отклонений
Этап 2. Моделирование
Дедлайн: 10.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. Реализация
Дедлайн: 22.05.18
Требуется разработать на языке С/С++ функцию расчета положения спутника GPS на заданное время по шкале GPST, минимизируя время её исполнения и количество затрачиваемой оперативной памяти. Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений. Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти. Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения уравнения Кеплера.
Программный модуль должен сопровождаться unit-тестами под check:
- Тесты функции решения уравнения Кеплера
- Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды.
Во время второго теста должно вычисляться и выводиться средняя длительность исполнения функции. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (как на предыдущем этапе).
Требуется провести проверку на утечки памяти с помощью утилиты valgrind.
Оформить отчет по результатам курсового проекта. В качестве первых двух глав использовать отчёты с предыдущих этапов, в третьей главе отразить результаты этого этапа:
- Код реализация
- Вывод тестов
- Вывод valgrind
- Вывод по этапу
- Заключение по проекту
По ссылке доступен архив
Для примера работы check в функцию add внесена ошибка, на которую указывает результат соответствующего юнит-теста:
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»