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

Материал из SRNS
Перейти к: навигация, поиск
(Правила аттестации)
(Вопросы к экзамену)
(не показаны 27 промежуточных версий 1 участника)
Строка 10: Строка 10:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Неделя || Дата || Лекция || Лабораторная || Контрольное мероприятие
+
! Неделя || Даты || Лекция || Лабораторная || Контрольное мероприятие
  
 
|- align=center
 
|- align=center
| 1 || 04.09
+
| 2 || 07.09
 
| Основы СРНС. [[media:Receivers_Segments.pdf|Сегменты СРНС]]. [[media:Receivers_PosMethods.pdf|Методы позиционирования]].
 
| Основы СРНС. [[media:Receivers_Segments.pdf|Сегменты СРНС]]. [[media:Receivers_PosMethods.pdf|Методы позиционирования]].
|
+
| [https://goo.gl/forms/R7Vos1KsJ1taqqXo2 Ошибки позиционирования в городских условиях]
 
|
 
|
  
 
|- align=center
 
|- align=center
| 2 || 11.09
+
| 3 || 13.09.21-19.09.21
 
| Навигационные сигналы.  
 
| Навигационные сигналы.  
 
|
 
|
Строка 25: Строка 25:
  
 
|- align=center
 
|- align=center
| 3 || 18.09
+
| 4 || 20.09.21-26.09.21
 
| Антенна, МШУ
 
| Антенна, МШУ
| [https://goo.gl/forms/R7Vos1KsJ1taqqXo2 Ошибки позиционирования в городских условиях]
+
|  
 
| КМ-1: Модель сигнала ГНСС
 
| КМ-1: Модель сигнала ГНСС
  
 
|- align=center
 
|- align=center
| 4 || 25.09
+
| 5 || 27.09.21-03.10.21
 
| Радиочастотный блок <br> ([[media:20111008_АП_СРНС_Лекция_3_презентация.pdf|Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС.]] )
 
| Радиочастотный блок <br> ([[media:20111008_АП_СРНС_Лекция_3_презентация.pdf|Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС.]] )
 
|  
 
|  
|
+
|  
  
 
|- align=center
 
|- align=center
| 5 || 02.10
+
| 6 || 04.10.21-10.10.21
 
| Математическая модель коррелятора <br> ([[media:АП_СРНС_corr.pdf|Статистический эквивалент коррелятора]])
 
| Математическая модель коррелятора <br> ([[media:АП_СРНС_corr.pdf|Статистический эквивалент коррелятора]])
 
|
 
|
|  
+
| КМ-2: Ошибки позиционирования в городских условиях
  
 
|- align=center
 
|- align=center
| 6 || 09.10
+
| 7 || 11.10.21-17.10.21
 
| Аппаратная реализация коррелятора <br> ([[media:20111005_АП_СРНС_Лекция_4_презентация.pdf|Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.]])
 
| Аппаратная реализация коррелятора <br> ([[media:20111005_АП_СРНС_Лекция_4_презентация.pdf|Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.]])
 
|
 
|
Строка 49: Строка 49:
  
 
|- align=center
 
|- align=center
| 7 || 16.10  
+
| 8 || 18.10.21-24.10.21
 
| Следящие системы <br> ([[media:20111215_АП_СРНС_Лекция_8_презентация.pdf|Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_9_презентация.pdf|Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_10_презентация.pdf|Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр. <br> Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.]])  
 
| Следящие системы <br> ([[media:20111215_АП_СРНС_Лекция_8_презентация.pdf|Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_9_презентация.pdf|Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_10_презентация.pdf|Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр. <br> Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.]])  
| [[Исследование_коррелятора_АП_СРНС_ГЛОНАСС_с_помощью_имитационной_модели_(лабораторная_работа)|Исследование коррелятора АП СРНС с помощью имитационной модели]]
+
| [https://goo.gl/XruJBM GNSS Planning]  
| КМ-2: Статистический эквивалент коррелятора  
+
| КМ-3: Статистический эквивалент коррелятора
  
 
|- align=center
 
|- align=center
| 8 || 23.10
+
| 9 || 25.10.21-31.10.21
 
| Оценка SNR, детекторы захвата, детекторы CC
 
| Оценка SNR, детекторы захвата, детекторы CC
 
|  
 
|  
|
+
|  
  
 
|- align=center
 
|- align=center
| 9 || 29.10
+
| 10 || 01.11.21-07.11.21
 
| Обнаружение сигнала.  <br> ([[media:20111005_АП_СРНС_Лекция_5_презентация.pdf|Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.]])  
 
| Обнаружение сигнала.  <br> ([[media:20111005_АП_СРНС_Лекция_5_презентация.pdf|Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.]])  
 
|
 
|
Строка 67: Строка 67:
  
 
|- align=center
 
|- align=center
| 10 || 30.10
+
| 11 || 08.11.21-14.11.21
 
| Поиск сигнала <br> ([[media:20111008_АП_СРНС_Лекция_6_презентация.pdf|Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.]] <br> [[media:20111017_АП_СРНС_Лекция_7_презентация.pdf|Блок быстрого поиска]])
 
| Поиск сигнала <br> ([[media:20111008_АП_СРНС_Лекция_6_презентация.pdf|Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.]] <br> [[media:20111017_АП_СРНС_Лекция_7_презентация.pdf|Блок быстрого поиска]])
 
|
 
|
Строка 73: Строка 73:
  
 
|- align=center
 
|- align=center
| 11 || 13.11
+
| 12 || 15.11.21-21.11.21
 
| Символьная и оверлейная синхронизация <br>  
 
| Символьная и оверлейная синхронизация <br>  
| [https://goo.gl/XruJBM GNSS Planning]  
+
| [[Исследование_коррелятора_АП_СРНС_ГЛОНАСС_с_помощью_имитационной_модели_(лабораторная_работа)|Исследование коррелятора АП СРНС с помощью имитационной модели]]
| КМ-3: защита ЛР1
+
| КМ-4: Исследование коррелятора АП СРНС ГЛОНАСС с помощью имитационной модели
  
 
|- align=center
 
|- align=center
| 12 || 20.11
+
| 13 || 22.11.21-28.11.21
 
| [[media:20111215_АП_СРНС_Лекция_11_презентация.pdf|Демодуляция навигационных данных]]
 
| [[media:20111215_АП_СРНС_Лекция_11_презентация.pdf|Демодуляция навигационных данных]]
 
|  
 
|  
|
+
|  
  
 
|- align=center
 
|- align=center
| 13 || 27.11
+
| 14 || 29.11.21-05.12.21
 
| Кадровая синхронизация, [[media:20111215_АП_СРНС_Лекция_12_презентация.pdf|декодирование]], парсинг
 
| Кадровая синхронизация, [[media:20111215_АП_СРНС_Лекция_12_презентация.pdf|декодирование]], парсинг
 
|
 
|
|  
+
| КМ-5: Прогнозирование спутникового созвездия
  
 
|- align=center
 
|- align=center
| 14 || 04.12
+
| 15 || 08.12.21-12.12.21
 
| Формирование измерений, расчет положения спутника
 
| Формирование измерений, расчет положения спутника
 
|
 
|
| КМ-4: защита ЛР2
+
|  
  
 
|- align=center
 
|- align=center
| 15 || 11.12
+
| 16 || 13.12.21-19.12.21
 
| Модель наблюдений псевдодальности. <br> [[media:20111128_АП_СРНС_Лекция_14_презентация.pdf|Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.]] <br> [[media:20111215_АП_СРНС_Лекция_16_презентация.pdf|Контроль целостности]]
 
| Модель наблюдений псевдодальности. <br> [[media:20111128_АП_СРНС_Лекция_14_презентация.pdf|Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.]] <br> [[media:20111215_АП_СРНС_Лекция_16_презентация.pdf|Контроль целостности]]
 
| Решение навигационной задачи по псевдодальномерным измерениям
 
| Решение навигационной задачи по псевдодальномерным измерениям
| КМ-5: защита ЛР3, ЛР4
+
| КМ-6: Решение навигационной задачи по псевдодальномерным измерениям
  
 
|- align=center
 
|- align=center
| 16 || 18.12
+
| 17 || 20.12.21-26.12.21
 
| Помехоустойчивость АП СРНС
 
| Помехоустойчивость АП СРНС
 
|  
 
|  
|
+
|  
  
 
|- align=center
 
|- align=center
| 17 || 25.12
+
| 18 || 27.12.21-02.01.21
 
| Зачет
 
| Зачет
 
|
 
|
Строка 116: Строка 116:
 
|}
 
|}
  
[[media:АПСРНС_2020_Списки.ods|Журнал успеваемости]].
+
[[media:АПСРНС_2021_Списки.ods|Журнал успеваемости]].
  
 
== Правила аттестации ==
 
== Правила аттестации ==
Строка 122: Строка 122:
 
Обязательным условием для получения допуска к экзамену является выполнение всех контрольных мероприятий: сдача двух контрольных и защита 4 лабораторных работ.  
 
Обязательным условием для получения допуска к экзамену является выполнение всех контрольных мероприятий: сдача двух контрольных и защита 4 лабораторных работ.  
  
Приемка осуществляется через репозиторий на github на базе проекта [https://github.com/Korogodin/gnssrecbasics2020 gnssrecbasics2020].
+
При написании отчетов следует опираться на правила оформления [https://mpei.ru/Science/ScienceDocuments/Documents/Polojenie_2018/0_GOST_7.32-2017.pdf ГОСТ 7.32] (в части форматирования, оформления рисунков, таблиц, списков и т.д.).
 +
 
 +
Приемка осуществляется через репозиторий на github на базе проекта [https://github.com/Korogodin/gnssrecbasics2021 gnssrecbasics2021].
  
 
== Демо модели ==
 
== Демо модели ==
Строка 329: Строка 331:
 
== Вопросы к экзамену ==
 
== Вопросы к экзамену ==
  
Экзамен проводится в устной форме и содержит два вопроса ([[media:Вопросы_экз_АП_СРНС.doc|экзаменационные вопросы]]). При подготовке рекомендуется использовать книги по тематике, [[media:2013_ЭУМК_С3.33_Лекции_АП_СРНС.pdf|конспекты лекций]] и презентации.
+
Экзамен проводится в письменной форме: тест, задача и один экзаменационный вопрос ([[media:Вопросы_экз_АП_СРНС.doc|экзаменационные вопросы]]). При подготовке рекомендуется использовать книги по тематике, [[media:2013_ЭУМК_С3.33_Лекции_АП_СРНС.pdf|конспекты лекций]] и презентации.
  
 
== Курсовая работа ==
 
== Курсовая работа ==
  
Название: Разработка модуля расчёта координат спутника ГЛОНАСС
+
Название: '''Разработка модуля расчёта координат спутника Beidou'''
  
Курсовая работа по данной дисциплине выполняется во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке АП СРНС, что является главной учебной целью проекта.  
+
Курсовая работа по АП СРНС выполняется во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке навигационных приемников.
  
Техническая цель - добавление в программное обеспечение приемника функции расчета положения спутника ГЛОНАСС на заданное время по данным его эфемерид.
+
Цель проекта - добавление в программное обеспечение приемника функции расчета положения спутника Beidou на заданное время по данным его эфемерид.
  
Для достижения цели выполняется ряд задач:
+
Требования к разрабатываемому программному модулю:
* обработка данных от приемника ГНСС в RTKLIB для проверки входных данных и формирования проверочных значений;
+
* требования назначения;
* обработка данных и моделирование в Matlab/Python для эскизного проектирования модуля;
+
* реализация программного модуля на С/С++, включая юнит-тестирование в Check.
+
 
+
Требования:
+
 
* отсутствие утечек памяти;
 
* отсутствие утечек памяти;
 
* малое время выполнения;
 
* малое время выполнения;
Строка 350: Строка 348:
 
* корректное выполнение при аномальных входных данных.  
 
* корректное выполнение при аномальных входных данных.  
  
Курсовая работа разбита на три этапа, отличающиеся осваиваемыми инструментами.
+
Для достижения цели выполняется ряд задач, соответствующих этапам проекта и контрольным мероприятиям:
 +
* обработка данных от приемника, работа со сторонними сервисами для подготовки входных и проверочных данных для разрабатываемого модуля;
 +
* моделирование модуля в Matlab/Python;
 +
* реализация программного модуля на С/С++, включая юнит-тестирование в Check.
 +
 
 +
Этапы курсовой работы отличаются осваиваемыми инструментами.
  
Главные правила игры:
+
На каждом из этапов действуют следующие правила:
 
* Взаимодействие осуществляется через github (пул реквесты, комментарии)
 
* Взаимодействие осуществляется через github (пул реквесты, комментарии)
 
* '''Этап сдан тогда, когда принят пул реквест'''
 
* '''Этап сдан тогда, когда принят пул реквест'''
  
[[media:АПСРНС_КП2020_Списки.ods|Журнал с номерами спутников]]
+
[[media:АПСРНС_КП2021_Списки.ods|Журнал с номерами спутников]]
  
 
=== Этап 1. Использование сторонних средств ===
 
=== Этап 1. Использование сторонних средств ===
  
'''Дедлайн''': 27.02.20 (устранение замечаний и итоговый мёрдж до 05.03.20, когда выставляется оценка за КМ-1)
+
'''Дедлайн''': 03.03.21 (устранение замечаний и итоговый мёрдж до 09.03.21)
 +
 
 +
Конечная цель всего курсового проекта - получить библиотеку функций на Си++, позволяющую рассчитывать положение спутника Beidou по его эфемеридам.
 +
На первом этапе подготовим вспомогательные данные для разработки: эфемериды и оценки положения спутника от сторонних сервисов (чтобы было с чем сравниваться на след. этапах)  
  
 
На крыше корпуса Е МЭИ установлена трехдиапазонная антенна [https://en.harxon.com/u_file/product/18_08_08/Harxon%20HX-CSX601A%20Brochure.pdf Harxon HX-CSX601A].  
 
На крыше корпуса Е МЭИ установлена трехдиапазонная антенна [https://en.harxon.com/u_file/product/18_08_08/Harxon%20HX-CSX601A%20Brochure.pdf Harxon HX-CSX601A].  
Строка 368: Строка 374:
 
* Clonicus разработки ЛНС МЭИ.  
 
* Clonicus разработки ЛНС МЭИ.  
  
Приемники осуществляют первичную обработку сигналов, выдавая по интерфейсам соответствующие потоки данных - наблюдения псевдодальностей и эфемериды спутников.  
+
Эти приемники осуществляют первичную обработку сигналов Beidou B1I, выдавая по интерфейсам соответствующие потоки данных - наблюдения псевдодальностей и эфемериды спутников.  
В этом году вы будете обрабатывать данные от приемника Clonicus, представленные в бинарном виде в формате NVS BINR.  
+
Данные от приемника Clonicus, записанные вечером 16 февраля 2021 года, доступны в рабочем репозитории (директория logs) в нескольких форматах.  
  
Конечная цель проекта - получить библиотечные функции на Си++, позволяющие рассчитывать положение спутника ГЛОНАСС по эфемеридам.  
+
Во-первых, это дамп бинарного потока данных от приемника в формате [https://navis.ru/downloads/SOFT/NV08C_BINR_Protocol_Specification_V13_ENG_10082012.pdf NVS BINR].
На этом этапе мы получаем входные данные для этой функции - сами эфемериды.  
+
  
Для этого воспользуемся пакетом [https://github.com/Korogodin/RTKLIB_bin RTKLIB], в состав которого входит парсер формата NVS BINR и удобные средства отображения данных.  
+
Во-вторых, текстовый файл данных пакета 0xF7, полученный из данного дампа - для тех, кому лень разбираться с бинарным файлом и протоколом.
 +
Он получен подобным printf'ом для каждого спутника с периодом передачи эфемерид:
 +
<source lang=C>
 +
fprintf(fid, "%2u %9.3f %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %u %u %u %u %u %u\n",
 +
        pack->SatNum,      // 1
 +
        pack->bds[0].toe,  // 2
 +
        pack->bds[0].Crs,   // 3
 +
        pack->bds[0].Dn,    // 4
 +
        pack->bds[0].M0,    // 5
 +
        pack->bds[0].Cuc,  // 6
 +
        pack->bds[0].e,    // 7
 +
        pack->bds[0].Cus,  // 8
 +
        pack->bds[0].sqrtA, // 9
 +
        pack->bds[0].Cic,  // 10
 +
        pack->bds[0].Omega0,// 11
 +
        pack->bds[0].Cis,  // 12
 +
        pack->bds[0].i0,    // 13
 +
        pack->bds[0].Crc,  // 14
 +
        pack->bds[0].omega, // 15
 +
        pack->bds[0].OmegaDot, // 16
 +
        pack->bds[0].iDot,  // 17
 +
        pack->bds[0].Tgd,  // 18
 +
        pack->bds[0].toc,  // 19
 +
        pack->bds[0].af2,  // 20
 +
        pack->bds[0].af1,  // 21
 +
        pack->bds[0].af0,  // 22
 +
        pack->bds[0].URA,  // 23
 +
        pack->bds[0].IODE,  // 24
 +
        pack->bds[0].IODC,  // 25
 +
        pack->bds[0].codeL2,// 26
 +
        pack->bds[0].L2P,  // 27
 +
        pack->bds[0].WN    // 28
 +
        );
 +
</source>
  
Программа RTKNAVI позволяет вывести таблицу текущих и предыдущих эфемерид (маленькая, очень маленькая кнопка слева снизу главного окна):
+
Для приемки первого этапа оформляется отчет по [https://mpei.ru/Science/ScienceDocuments/Documents/Polojenie_2018/0_GOST_7.32-2017.pdf ГОСТ 7.32], содержащий результаты работ:
[[file:20200210_rtknavi.png|center]]
+
# Определение формы орбиты и положения спутника на ней на начало рассматриваемого интервала времени по данным сервиса CelesTrak: общий вид + положение спутника на 18:00 МСК 16 февраля 2021, так, чтобы было видно подспутниковую точку и время ([[media:Screenshot_20210217_095616.png|примерно так]])
 +
# Расчет графика угла места собственного спутника от времени по данным Trimble GNSS Planning Online на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.
 +
# Расчет диаграммы угла места и азимута спутника (SkyView, он же SkyPlot) по данным Trimble GNSS Planning Online на на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.
 +
# Формирование списка и описание параметров, входящих в состав эфемерид в [http://en.beidou.gov.cn/SYSTEMS/ICD/201902/P020190227702348791891.pdf сигнале B1I Beidou]
 +
# Формирование таблицы эфемерид собственного спутника (номер спутника Beidou см. в журнале выше) с подписанными размерностями ([[media:Screenshot_20190212_102726.png|как тут]], но только для одного спутника)
  
Программа RTKCONV позволяет конвертировать бинарный файл в текстовый формат RINEX, в частности получить текстовый gnav-файл с эфемеридами ГЛОНАСС:
+
Работа осуществляется в репозитории на github на базе [https://github.com/Korogodin/bdsephexercise bdsephexercise]. Для этого:
[[file:20200210_rtkconv.png|center]]
+
 
+
Оформить отчёт по результатам этапа:
+
# Описание процесса использования RTKLIB
+
# Эфемериды собственного спутника по данным RTKNAVI из состава RTKLIB (номер спутника ГЛОНАСС см. в журнале выше)
+
# Эфемериды собственного спутника в gnav-файле RINEX
+
# График угла места собственного спутника от времени по данным Trimble GNSS Planning Online на заданный интервал времени (см. задание второго этапа)
+
# SkyView по данным Trimble GNSS Planning Online на заданный интервал времени (см. задание второго этапа)
+
 
+
Работа осуществляется в репозитории на github на базе [https://github.com/Korogodin/glnephexercise glnephexercise]. Для этого:
+
 
# Завести, если до сих пор нет, аккаунт на github
 
# Завести, если до сих пор нет, аккаунт на github
# Сделать форк проекта [https://github.com/Korogodin/glnephexercise glnephexercise] (маленькая кнопка сверху справа в вэб-интерфейсе)
+
# Сделать форк проекта [https://github.com/Korogodin/bdsephexercise bdsephexercise] (маленькая кнопка сверху справа в вэб-интерфейсе)
 
# Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)
 
# Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)
# Клонировать свой форк на рабочий компьютер (<code>git clone https://github.com/MySuperAccount/glnephexercise.git</code>)
+
# Клонировать свой форк на рабочий компьютер (<code>git clone https://github.com/MySuperAccount/bdsephexercise.git</code>)
 
# Промежуточные и итоговые результаты по первому этапу хранить в каталоге processing (<code>git pull; git add <files>; git commit -m "Сделал то-то то-то"; git push</code>)
 
# Промежуточные и итоговые результаты по первому этапу хранить в каталоге processing (<code>git pull; git add <files>; git commit -m "Сделал то-то то-то"; git push</code>)
 
# По результатам первого этапа завести Pull Request в исходный проект '''в ветку, название которой совпадает с вашей фамилией''' (кнопка наверху в вэб-интерфейсе)
 
# По результатам первого этапа завести Pull Request в исходный проект '''в ветку, название которой совпадает с вашей фамилией''' (кнопка наверху в вэб-интерфейсе)
Строка 399: Строка 431:
  
 
Этап сдан тогда, когда ваш ПР принят.
 
Этап сдан тогда, когда ваш ПР принят.
 
Запись бинарного потока от приемника расположена в каталоге logs репозитория. Там файл BINR.bin, записанный днем 10.02.2020.
 
  
 
=== Этап 2. Моделирование ===
 
=== Этап 2. Моделирование ===
  
'''Дедлайн''': 02.04.20 (исправления до 09.04.20, в этот день выставляется КМ-2)
+
'''Дедлайн''': 02.04.21 (исправления замечаний до 09.04.21)
  
На предыдущем этапе получено решение навигационной задачи с помощью программы вторичной обработки измерений, например, RTKLIB.
+
Эфемериды - параметры некоторой модели движения спутника.  
В процессе работы она рассчитывает положение спутников на соответствующий момент сигнального времени.
+
При этом используются эфемериды - параметры некоторой модели движения спутника.  
+
 
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.
 
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.
  
Для расчета положения спутника ГЛОНАСС по эфемеридным данным системы проводят численное интегрирование дифференциального уравнения.
+
Одна из самых простых и удобных моделей - [http://navipedia.org/index.php/GPS_and_Galileo_Satellite_Coordinates_Computation в системе GPS]. Beidou наследует данную модель.  
  
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника ГЛОНАСС на заданный момент по шкале времени UTC.
+
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника Beidou на заданный момент по шкале времени UTC.
 
В качестве эфемерид использовать данные, полученные на предыдущем этапе.  
 
В качестве эфемерид использовать данные, полученные на предыдущем этапе.  
  
Построить трехмерные графики множества положений спутника ГЛОНАСС с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF ПЗ-90.11 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 12:00 10.02.20 до 00:00 10.02.19. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал.  
+
Построить трехмерные графики множества положений спутника Beidou с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал.  
  
 
Построить SkyView за указанный временной интервал (напоминаю, антенна на крыше корпуса Е) и сравнить результат с [http://www.trimble.com/gnssplanningonline/ Trimble GNSS Planning Online], полученный на прошлом этапе.
 
Построить SkyView за указанный временной интервал (напоминаю, антенна на крыше корпуса Е) и сравнить результат с [http://www.trimble.com/gnssplanningonline/ Trimble GNSS Planning Online], полученный на прошлом этапе.
  
 
Оформить отчет по результатам этапа:
 
Оформить отчет по результатам этапа:
# Реализация в Matlab или Python
+
# Реализация в Matlab или Python (описание модели и её листинг)
 
# Таблица использованных эфемерид
 
# Таблица использованных эфемерид
 
# Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)
 
# Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)
 
# Расчётный и полученный в GNSS Planing Online SkyView
 
# Расчётный и полученный в GNSS Planing Online SkyView
# Выводы
+
# Сравнение результатов моделирования с результатами первого этапа
  
 
Работы по данному этапу осуществляются в каталоге simulation.
 
Работы по данному этапу осуществляются в каталоге simulation.
Правила приемки этапа те же.
+
Правила приемки этапа те же, что и на первом этапе.
  
 
=== Этап 3. Реализация ===  
 
=== Этап 3. Реализация ===  
  
'''Дедлайн''': 07.05.20 (исправления до 14.05.20, выставление КМ-3)
+
'''Дедлайн''': 11.05.21 (исправления до 18.05.21)
  
Требуется разработать на языке С/С++ функцию расчета положения спутника ГЛОНАСС на заданное время по шкале UTC, минимизируя время её исполнения и количество затрачиваемой оперативной памяти.  
+
Требуется разработать на языке С/С++ функцию расчета положения спутника Beidou на заданное время по шкале UTC, минимизируя время её исполнения и количество затрачиваемой оперативной памяти.  
 
Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.
 
Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.
  
 
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений.  
 
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений.  
 
Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти.  
 
Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти.  
Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения дифура методом Рунге-Кутты.  
+
Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения трансцендентного уравнения.  
  
 
Программный модуль должен сопровождаться unit-тестами под check:
 
Программный модуль должен сопровождаться unit-тестами под check:
* Тесты функции реализации метода Рунге-Кутты
+
* Тесты функции решения уравнения Кеплера
 
* Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды.  
 
* Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды.  
  
Строка 458: Строка 486:
 
# Заключение по проекту
 
# Заключение по проекту
  
В репозитории расположен каркас программного модуля libglnsvpos, представленного в виде подключаемой библиотеки на базе системы сборки CMake.
+
В репозитории расположен каркас программного модуля libbdssvpos, представленного в виде подключаемой библиотеки на базе системы сборки CMake.
 
Настроена компиляция статической/динамической библиотек компилятором/кросскомпилятором и выполнение юнит-тестов (проверено в GNU/Linux системах).  
 
Настроена компиляция статической/динамической библиотек компилятором/кросскомпилятором и выполнение юнит-тестов (проверено в GNU/Linux системах).  
 
Для примера в библиотеке реализованы две функции: умножения и сложения.  
 
Для примера в библиотеке реализованы две функции: умножения и сложения.  
Строка 464: Строка 492:
 
В функцию сложения add внесена ошибка, на которую указывает результат соответствующего юнит-теста:
 
В функцию сложения add внесена ошибка, на которую указывает результат соответствующего юнит-теста:
 
<source lang="bash">
 
<source lang="bash">
korogodin@KorPC:~/glnephexercise/libglnsvpos$ mkdir build
+
korogodin@KorPC:~/bdsephexercise/libbdssvpos$ mkdir build
korogodin@KorPC:~/glnephexercise/libglnsvpos$ cd build
+
korogodin@KorPC:~/bdsephexercise/libbdssvpos$ cd build
korogodin@KorPC:~/glnephexercise/libglnsvpos/build$ cmake ..
+
korogodin@KorPC:~/bdsephexercise/libbdssvpos/build$ cmake ..
 
-- The C compiler identification is GNU 5.4.0
 
-- The C compiler identification is GNU 5.4.0
 
-- The CXX compiler identification is GNU 5.4.0
 
-- The CXX compiler identification is GNU 5.4.0
Строка 481: Строка 509:
 
-- Detecting CXX compile features
 
-- Detecting CXX compile features
 
-- Detecting CXX compile features - done
 
-- Detecting CXX compile features - done
-- libglnsvpos version: cd76a7e
+
-- libbdssvpos version: cd76a7e
 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")  
 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")  
 
-- Checking for one of the modules 'check'
 
-- Checking for one of the modules 'check'
 
-- Configuring done
 
-- Configuring done
 
-- Generating done
 
-- Generating done
-- Build files have been written to: /home/korogodin/glnephexercise/libglnsvpos/build
+
-- Build files have been written to: /home/korogodin/bdsephexercise/libbdssvpos/build
korogodin@KorPC:~/glnephexercise/libglnsvpos/build$ make
+
korogodin@KorPC:~/bdsephexercise/libbdssvpos/build$ make
[ 33%] Built target glnsvpos-static
+
[ 33%] Built target bdssvpos-static
[ 66%] Built target glnsvpos
+
[ 66%] Built target bdssvpos
Scanning dependencies of target test_glnsvpos
+
Scanning dependencies of target test_bdssvpos
[ 77%] Building CXX object test/CMakeFiles/test_glnsvpos.dir/check_position.cpp.o
+
[ 77%] Building CXX object test/CMakeFiles/test_bdssvpos.dir/check_position.cpp.o
[ 88%] Linking CXX executable test_glnsvpos
+
[ 88%] Linking CXX executable test_bdssvpos
 
Running unit tests
 
Running unit tests
 
Running suite(s): My test suite
 
Running suite(s): My test suite
 
50%: Checks: 2, Failures: 1, Errors: 0
 
50%: Checks: 2, Failures: 1, Errors: 0
/home/korogodin/glnephexercise/libglnsvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3
+
/home/korogodin/bdsephexercise/libbdssvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3
test/CMakeFiles/test_glnsvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_glnsvpos»
+
test/CMakeFiles/test_bdssvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_bdssvpos»
make[2]: *** [test/test_glnsvpos] Ошибка 1
+
make[2]: *** [test/test_bdssvpos] Ошибка 1
make[2]: *** Удаляется файл «test/test_glnsvpos»
+
make[2]: *** Удаляется файл «test/test_bdssvpos»
CMakeFiles/Makefile2:179: ошибка выполнения рецепта для цели «test/CMakeFiles/test_glnsvpos.dir/all»
+
CMakeFiles/Makefile2:179: ошибка выполнения рецепта для цели «test/CMakeFiles/test_bdssvpos.dir/all»
make[1]: *** [test/CMakeFiles/test_glnsvpos.dir/all] Ошибка 2
+
make[1]: *** [test/CMakeFiles/test_bdssvpos.dir/all] Ошибка 2
 
Makefile:127: ошибка выполнения рецепта для цели «all»
 
Makefile:127: ошибка выполнения рецепта для цели «all»
 
make: *** [all] Ошибка 2
 
make: *** [all] Ошибка 2
 
</source>
 
</source>
  
Работы по данному этапу осуществляются в каталоге libglnsvpos.
+
Работы по данному этапу осуществляются в каталоге libbdssvpos.
 
Правила приемки этапа те же.
 
Правила приемки этапа те же.
  

Версия 11:27, 11 января 2022

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

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

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

Содержание

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

Неделя Даты Лекция Лабораторная Контрольное мероприятие
2 07.09 Основы СРНС. Сегменты СРНС. Методы позиционирования. Ошибки позиционирования в городских условиях
3 13.09.21-19.09.21 Навигационные сигналы.
4 20.09.21-26.09.21 Антенна, МШУ КМ-1: Модель сигнала ГНСС
5 27.09.21-03.10.21 Радиочастотный блок
(Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС. )
6 04.10.21-10.10.21 Математическая модель коррелятора
(Статистический эквивалент коррелятора)
КМ-2: Ошибки позиционирования в городских условиях
7 11.10.21-17.10.21 Аппаратная реализация коррелятора
(Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.)
8 18.10.21-24.10.21 Следящие системы
(Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.
Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр.
Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр.
Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.
)
GNSS Planning КМ-3: Статистический эквивалент коррелятора
9 25.10.21-31.10.21 Оценка SNR, детекторы захвата, детекторы CC
10 01.11.21-07.11.21 Обнаружение сигнала.
(Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.)
11 08.11.21-14.11.21 Поиск сигнала
(Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.
Блок быстрого поиска)
12 15.11.21-21.11.21 Символьная и оверлейная синхронизация
Исследование коррелятора АП СРНС с помощью имитационной модели КМ-4: Исследование коррелятора АП СРНС ГЛОНАСС с помощью имитационной модели
13 22.11.21-28.11.21 Демодуляция навигационных данных
14 29.11.21-05.12.21 Кадровая синхронизация, декодирование, парсинг КМ-5: Прогнозирование спутникового созвездия
15 08.12.21-12.12.21 Формирование измерений, расчет положения спутника
16 13.12.21-19.12.21 Модель наблюдений псевдодальности.
Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.
Контроль целостности
Решение навигационной задачи по псевдодальномерным измерениям КМ-6: Решение навигационной задачи по псевдодальномерным измерениям
17 20.12.21-26.12.21 Помехоустойчивость АП СРНС
18 27.12.21-02.01.21 Зачет

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

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

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

При написании отчетов следует опираться на правила оформления ГОСТ 7.32 (в части форматирования, оформления рисунков, таблиц, списков и т.д.).

Приемка осуществляется через репозиторий на github на базе проекта gnssrecbasics2021.

Демо модели

Прогноз выходного сигнала коррелятора

Производится обработка сигнала Gps L1 C/A, сформированного лабораторным имитатором сигналов, синхронизированным с приемником. Сигнал перенесен с помощью РЧБ NT1065 на промежуточную частоту f_{if} = 8.54 МГц и преобразован многоразрядным АЦП с частотой сэмплирования F_d = 99.375 МГц. Установленная на имитаторе мощность обеспечивает уровень отношения сигнал/шум 27 + N дБГц, где N - номер вариант по журналу.

В приемнике производтся корреляционная обработка сигнала, интервал накопления составляет T = 1 мс.

Сигнал имеет сдвиг частоты несущей f_d = 100 N Гц, при этом опорный сигнал коррелятора имеет аналогичный сдвиг f_{d, rep} = f_d. Задержка огибающей известна точно и используется в опорном сигнале \tau = \tau_{rep}.

Задание: Построить на плоскости I,Q вид множества точек корреляционных сумм, полученных в ходе большого (сотни) числа экспериментов.


ЧАП и ФАП на стат эквивалентах


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

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

Курсовая работа

Название: Разработка модуля расчёта координат спутника Beidou

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

Цель проекта - добавление в программное обеспечение приемника функции расчета положения спутника Beidou на заданное время по данным его эфемерид.

Требования к разрабатываемому программному модулю:

  • требования назначения;
  • отсутствие утечек памяти;
  • малое время выполнения;
  • низкий расход памяти;
  • корректное выполнение при аномальных входных данных.

Для достижения цели выполняется ряд задач, соответствующих этапам проекта и контрольным мероприятиям:

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

Этапы курсовой работы отличаются осваиваемыми инструментами.

На каждом из этапов действуют следующие правила:

  • Взаимодействие осуществляется через github (пул реквесты, комментарии)
  • Этап сдан тогда, когда принят пул реквест

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

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

Дедлайн: 03.03.21 (устранение замечаний и итоговый мёрдж до 09.03.21)

Конечная цель всего курсового проекта - получить библиотеку функций на Си++, позволяющую рассчитывать положение спутника Beidou по его эфемеридам. На первом этапе подготовим вспомогательные данные для разработки: эфемериды и оценки положения спутника от сторонних сервисов (чтобы было с чем сравниваться на след. этапах)

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

  • Javad Lexon LGDD,
  • SwiftNavigation Piksi Multi,
  • Clonicus разработки ЛНС МЭИ.

Эти приемники осуществляют первичную обработку сигналов Beidou B1I, выдавая по интерфейсам соответствующие потоки данных - наблюдения псевдодальностей и эфемериды спутников. Данные от приемника Clonicus, записанные вечером 16 февраля 2021 года, доступны в рабочем репозитории (директория logs) в нескольких форматах.

Во-первых, это дамп бинарного потока данных от приемника в формате NVS BINR.

Во-вторых, текстовый файл данных пакета 0xF7, полученный из данного дампа - для тех, кому лень разбираться с бинарным файлом и протоколом. Он получен подобным printf'ом для каждого спутника с периодом передачи эфемерид:

fprintf(fid, "%2u %9.3f %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %22.17e %u %u %u %u %u %u\n",
        pack->SatNum,       // 1
        pack->bds[0].toe,   // 2
        pack->bds[0].Crs,   // 3
        pack->bds[0].Dn,    // 4
        pack->bds[0].M0,    // 5
        pack->bds[0].Cuc,   // 6
        pack->bds[0].e,     // 7
        pack->bds[0].Cus,   // 8
        pack->bds[0].sqrtA, // 9
        pack->bds[0].Cic,   // 10
        pack->bds[0].Omega0,// 11
        pack->bds[0].Cis,   // 12
        pack->bds[0].i0,    // 13
        pack->bds[0].Crc,   // 14
        pack->bds[0].omega, // 15
        pack->bds[0].OmegaDot, // 16
        pack->bds[0].iDot,  // 17
        pack->bds[0].Tgd,   // 18
        pack->bds[0].toc,   // 19
        pack->bds[0].af2,   // 20
        pack->bds[0].af1,   // 21
        pack->bds[0].af0,   // 22
        pack->bds[0].URA,   // 23
        pack->bds[0].IODE,  // 24
        pack->bds[0].IODC,  // 25
        pack->bds[0].codeL2,// 26
        pack->bds[0].L2P,   // 27
        pack->bds[0].WN     // 28
        );

Для приемки первого этапа оформляется отчет по ГОСТ 7.32, содержащий результаты работ:

  1. Определение формы орбиты и положения спутника на ней на начало рассматриваемого интервала времени по данным сервиса CelesTrak: общий вид + положение спутника на 18:00 МСК 16 февраля 2021, так, чтобы было видно подспутниковую точку и время (примерно так)
  2. Расчет графика угла места собственного спутника от времени по данным Trimble GNSS Planning Online на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.
  3. Расчет диаграммы угла места и азимута спутника (SkyView, он же SkyPlot) по данным Trimble GNSS Planning Online на на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.
  4. Формирование списка и описание параметров, входящих в состав эфемерид в сигнале B1I Beidou
  5. Формирование таблицы эфемерид собственного спутника (номер спутника Beidou см. в журнале выше) с подписанными размерностями (как тут, но только для одного спутника)

Работа осуществляется в репозитории на github на базе bdsephexercise. Для этого:

  1. Завести, если до сих пор нет, аккаунт на github
  2. Сделать форк проекта bdsephexercise (маленькая кнопка сверху справа в вэб-интерфейсе)
  3. Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)
  4. Клонировать свой форк на рабочий компьютер (git clone https://github.com/MySuperAccount/bdsephexercise.git)
  5. Промежуточные и итоговые результаты по первому этапу хранить в каталоге processing (git pull; git add <files>; git commit -m "Сделал то-то то-то"; git push)
  6. По результатам первого этапа завести Pull Request в исходный проект в ветку, название которой совпадает с вашей фамилией (кнопка наверху в вэб-интерфейсе)
  7. Устранить все замечания, добиться принятия Pull Request'а.

Этап сдан тогда, когда ваш ПР принят.

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

Дедлайн: 02.04.21 (исправления замечаний до 09.04.21)

Эфемериды - параметры некоторой модели движения спутника. В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.

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

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

Построить трехмерные графики множества положений спутника Beidou с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал.

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

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

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

Работы по данному этапу осуществляются в каталоге simulation. Правила приемки этапа те же, что и на первом этапе.

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

Дедлайн: 11.05.21 (исправления до 18.05.21)

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

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

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

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

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

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

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

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

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

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

korogodin@KorPC:~/bdsephexercise/libbdssvpos$ mkdir build
korogodin@KorPC:~/bdsephexercise/libbdssvpos$ cd build
korogodin@KorPC:~/bdsephexercise/libbdssvpos/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
-- libbdssvpos version: cd76a7e
-- 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/bdsephexercise/libbdssvpos/build
korogodin@KorPC:~/bdsephexercise/libbdssvpos/build$ make
[ 33%] Built target bdssvpos-static
[ 66%] Built target bdssvpos
Scanning dependencies of target test_bdssvpos
[ 77%] Building CXX object test/CMakeFiles/test_bdssvpos.dir/check_position.cpp.o
[ 88%] Linking CXX executable test_bdssvpos
Running unit tests
Running suite(s): My test suite
50%: Checks: 2, Failures: 1, Errors: 0
/home/korogodin/bdsephexercise/libbdssvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3
test/CMakeFiles/test_bdssvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_bdssvpos»
make[2]: *** [test/test_bdssvpos] Ошибка 1
make[2]: *** Удаляется файл «test/test_bdssvpos»
CMakeFiles/Makefile2:179: ошибка выполнения рецепта для цели «test/CMakeFiles/test_bdssvpos.dir/all»
make[1]: *** [test/CMakeFiles/test_bdssvpos.dir/all] Ошибка 2
Makefile:127: ошибка выполнения рецепта для цели «all»
make: *** [all] Ошибка 2

Работы по данному этапу осуществляются в каталоге libbdssvpos. Правила приемки этапа те же.

Курсовая прошлых лет

А в 2019 году задание выглядело так.

Персональные инструменты
Пространства имён

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