<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://acik.srns.ru/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://acik.srns.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2020</id>
		<title>Курсовой проект АП СРНС 2020 - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://acik.srns.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2020"/>
		<link rel="alternate" type="text/html" href="https://acik.srns.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2020&amp;action=history"/>
		<updated>2026-04-05T19:38:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>https://acik.srns.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2020&amp;diff=24128&amp;oldid=prev</id>
		<title>Korogodin: Новая страница: «== Курсовой проект 2020 ==  Название: Разработка модуля расчёта координат спутника ГЛОНАСС…»</title>
		<link rel="alternate" type="text/html" href="https://acik.srns.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2020&amp;diff=24128&amp;oldid=prev"/>
				<updated>2021-02-19T16:51:04Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «== Курсовой проект 2020 ==  Название: Разработка модуля расчёта координат спутника ГЛОНАСС…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Курсовой проект 2020 ==&lt;br /&gt;
&lt;br /&gt;
Название: Разработка модуля расчёта координат спутника ГЛОНАСС&lt;br /&gt;
&lt;br /&gt;
Курсовая работа по данной дисциплине выполняется во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке АП СРНС, что является главной учебной целью проекта. &lt;br /&gt;
&lt;br /&gt;
Техническая цель - добавление в программное обеспечение приемника функции расчета положения спутника ГЛОНАСС на заданное время по данным его эфемерид.&lt;br /&gt;
&lt;br /&gt;
Для достижения цели выполняется ряд задач:&lt;br /&gt;
* обработка данных от приемника ГНСС в RTKLIB для проверки входных данных и формирования проверочных значений;&lt;br /&gt;
* обработка данных и моделирование в Matlab/Python для эскизного проектирования модуля;&lt;br /&gt;
* реализация программного модуля на С/С++, включая юнит-тестирование в Check.&lt;br /&gt;
&lt;br /&gt;
Требования:&lt;br /&gt;
* отсутствие утечек памяти;&lt;br /&gt;
* малое время выполнения;&lt;br /&gt;
* низкий расход памяти;&lt;br /&gt;
* корректное выполнение при аномальных входных данных. &lt;br /&gt;
&lt;br /&gt;
Курсовая работа разбита на три этапа, отличающиеся осваиваемыми инструментами.&lt;br /&gt;
&lt;br /&gt;
Главные правила игры:&lt;br /&gt;
* Взаимодействие осуществляется через github (пул реквесты, комментарии)&lt;br /&gt;
* '''Этап сдан тогда, когда принят пул реквест'''&lt;br /&gt;
&lt;br /&gt;
[[media:АПСРНС_КП2020_Списки.ods|Журнал с номерами спутников]]&lt;br /&gt;
&lt;br /&gt;
=== Этап 1. Использование сторонних средств ===&lt;br /&gt;
&lt;br /&gt;
'''Дедлайн''': 27.02.20 (устранение замечаний и итоговый мёрдж до 05.03.20, когда выставляется оценка за КМ-1)&lt;br /&gt;
&lt;br /&gt;
На крыше корпуса Е МЭИ установлена трехдиапазонная антенна [https://en.harxon.com/u_file/product/18_08_08/Harxon%20HX-CSX601A%20Brochure.pdf Harxon HX-CSX601A]. &lt;br /&gt;
Она через 50-метровый кабель, [[Blog:Mikhaylova/25.06.2018_Антенный_пост_на_8_приемников|сплиттер, bias-tee и усилитель]] подключена к трем навигационным приемникам: &lt;br /&gt;
* Javad Lexon LGDD,&lt;br /&gt;
* SwiftNavigation Piksi Multi,&lt;br /&gt;
* Clonicus разработки ЛНС МЭИ. &lt;br /&gt;
&lt;br /&gt;
Приемники осуществляют первичную обработку сигналов, выдавая по интерфейсам соответствующие потоки данных - наблюдения псевдодальностей и эфемериды спутников. &lt;br /&gt;
В этом году вы будете обрабатывать данные от приемника Clonicus, представленные в бинарном виде в формате NVS BINR. &lt;br /&gt;
&lt;br /&gt;
Конечная цель проекта - получить библиотечные функции на Си++, позволяющие рассчитывать положение спутника ГЛОНАСС по эфемеридам. &lt;br /&gt;
На этом этапе мы получаем входные данные для этой функции - сами эфемериды. &lt;br /&gt;
&lt;br /&gt;
Для этого воспользуемся пакетом [https://github.com/Korogodin/RTKLIB_bin RTKLIB], в состав которого входит парсер формата NVS BINR и удобные средства отображения данных. &lt;br /&gt;
&lt;br /&gt;
Программа RTKNAVI позволяет вывести таблицу текущих и предыдущих эфемерид (маленькая, очень маленькая кнопка слева снизу главного окна):&lt;br /&gt;
[[file:20200210_rtknavi.png|center]]&lt;br /&gt;
&lt;br /&gt;
Программа RTKCONV позволяет конвертировать бинарный файл в текстовый формат RINEX, в частности получить текстовый gnav-файл с эфемеридами ГЛОНАСС:&lt;br /&gt;
[[file:20200210_rtkconv.png|center]]&lt;br /&gt;
&lt;br /&gt;
Оформить отчёт по результатам этапа:&lt;br /&gt;
# Описание процесса использования RTKLIB&lt;br /&gt;
# Эфемериды собственного спутника по данным RTKNAVI из состава RTKLIB (номер спутника ГЛОНАСС см. в журнале выше)&lt;br /&gt;
# Эфемериды собственного спутника в gnav-файле RINEX&lt;br /&gt;
# График угла места собственного спутника от времени по данным Trimble GNSS Planning Online на заданный интервал времени (см. задание второго этапа)&lt;br /&gt;
# SkyView по данным Trimble GNSS Planning Online на заданный интервал времени (см. задание второго этапа)&lt;br /&gt;
&lt;br /&gt;
Работа осуществляется в репозитории на github на базе [https://github.com/Korogodin/glnephexercise glnephexercise]. Для этого:&lt;br /&gt;
# Завести, если до сих пор нет, аккаунт на github&lt;br /&gt;
# Сделать форк проекта [https://github.com/Korogodin/glnephexercise glnephexercise] (маленькая кнопка сверху справа в вэб-интерфейсе)&lt;br /&gt;
# Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)&lt;br /&gt;
# Клонировать свой форк на рабочий компьютер (&amp;lt;code&amp;gt;git clone https://github.com/MySuperAccount/glnephexercise.git&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Промежуточные и итоговые результаты по первому этапу хранить в каталоге processing (&amp;lt;code&amp;gt;git pull; git add &amp;lt;files&amp;gt;; git commit -m &amp;quot;Сделал то-то то-то&amp;quot;; git push&amp;lt;/code&amp;gt;)&lt;br /&gt;
# По результатам первого этапа завести Pull Request в исходный проект '''в ветку, название которой совпадает с вашей фамилией''' (кнопка наверху в вэб-интерфейсе)&lt;br /&gt;
# Устранить все замечания, добиться принятия Pull Request'а. &lt;br /&gt;
&lt;br /&gt;
Этап сдан тогда, когда ваш ПР принят.&lt;br /&gt;
&lt;br /&gt;
Запись бинарного потока от приемника расположена в каталоге logs репозитория. Там файл BINR.bin, записанный днем 10.02.2020.&lt;br /&gt;
&lt;br /&gt;
=== Этап 2. Моделирование ===&lt;br /&gt;
&lt;br /&gt;
'''Дедлайн''': 02.04.20 (исправления до 09.04.20, в этот день выставляется КМ-2)&lt;br /&gt;
&lt;br /&gt;
На предыдущем этапе получено решение навигационной задачи с помощью программы вторичной обработки измерений, например, RTKLIB. &lt;br /&gt;
В процессе работы она рассчитывает положение спутников на соответствующий момент сигнального времени. &lt;br /&gt;
При этом используются эфемериды - параметры некоторой модели движения спутника. &lt;br /&gt;
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.&lt;br /&gt;
&lt;br /&gt;
Для расчета положения спутника ГЛОНАСС по эфемеридным данным системы проводят численное интегрирование дифференциального уравнения.&lt;br /&gt;
&lt;br /&gt;
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника ГЛОНАСС на заданный момент по шкале времени UTC.&lt;br /&gt;
В качестве эфемерид использовать данные, полученные на предыдущем этапе. &lt;br /&gt;
&lt;br /&gt;
Построить трехмерные графики множества положений спутника ГЛОНАСС с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF ПЗ-90.11 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 12:00 10.02.20 до 00:00 10.02.19. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал. &lt;br /&gt;
&lt;br /&gt;
Построить SkyView за указанный временной интервал (напоминаю, антенна на крыше корпуса Е) и сравнить результат с [http://www.trimble.com/gnssplanningonline/ Trimble GNSS Planning Online], полученный на прошлом этапе.&lt;br /&gt;
&lt;br /&gt;
Оформить отчет по результатам этапа:&lt;br /&gt;
# Реализация в Matlab или Python&lt;br /&gt;
# Таблица использованных эфемерид&lt;br /&gt;
# Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)&lt;br /&gt;
# Расчётный и полученный в GNSS Planing Online SkyView&lt;br /&gt;
# Выводы&lt;br /&gt;
&lt;br /&gt;
Работы по данному этапу осуществляются в каталоге simulation.&lt;br /&gt;
Правила приемки этапа те же.&lt;br /&gt;
&lt;br /&gt;
=== Этап 3. Реализация === &lt;br /&gt;
&lt;br /&gt;
'''Дедлайн''': 07.05.20 (исправления до 14.05.20, выставление КМ-3)&lt;br /&gt;
&lt;br /&gt;
Требуется разработать на языке С/С++ функцию расчета положения спутника ГЛОНАСС на заданное время по шкале UTC, минимизируя время её исполнения и количество затрачиваемой оперативной памяти. &lt;br /&gt;
Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.&lt;br /&gt;
&lt;br /&gt;
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений. &lt;br /&gt;
Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти. &lt;br /&gt;
Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения дифура методом Рунге-Кутты. &lt;br /&gt;
&lt;br /&gt;
Программный модуль должен сопровождаться unit-тестами под check:&lt;br /&gt;
* Тесты функции реализации метода Рунге-Кутты&lt;br /&gt;
* Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды. &lt;br /&gt;
&lt;br /&gt;
Во время второго теста должно вычисляться и выводиться средняя длительность исполнения функции. &lt;br /&gt;
Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (как на предыдущем этапе). &lt;br /&gt;
&lt;br /&gt;
Требуется провести проверку на утечки памяти с помощью утилиты valgrind.&lt;br /&gt;
&lt;br /&gt;
Оформить отчет по результатам курсового проекта. &lt;br /&gt;
В качестве первых двух глав использовать отчёты с предыдущих этапов, в третьей главе отразить результаты этого этапа:&lt;br /&gt;
# Код реализации&lt;br /&gt;
# Вывод тестов, включая анализ времени исполнения&lt;br /&gt;
# Вывод valgrind&lt;br /&gt;
# Вывод по этапу &lt;br /&gt;
# Заключение по проекту&lt;br /&gt;
&lt;br /&gt;
В репозитории расположен каркас программного модуля libglnsvpos, представленного в виде подключаемой библиотеки на базе системы сборки CMake.&lt;br /&gt;
Настроена компиляция статической/динамической библиотек компилятором/кросскомпилятором и выполнение юнит-тестов (проверено в GNU/Linux системах). &lt;br /&gt;
Для примера в библиотеке реализованы две функции: умножения и сложения. &lt;br /&gt;
&lt;br /&gt;
В функцию сложения add внесена ошибка, на которую указывает результат соответствующего юнит-теста:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
korogodin@KorPC:~/glnephexercise/libglnsvpos$ mkdir build&lt;br /&gt;
korogodin@KorPC:~/glnephexercise/libglnsvpos$ cd build&lt;br /&gt;
korogodin@KorPC:~/glnephexercise/libglnsvpos/build$ cmake ..&lt;br /&gt;
-- The C compiler identification is GNU 5.4.0&lt;br /&gt;
-- The CXX compiler identification is GNU 5.4.0&lt;br /&gt;
-- Check for working C compiler: /usr/bin/cc&lt;br /&gt;
-- Check for working C compiler: /usr/bin/cc -- works&lt;br /&gt;
-- Detecting C compiler ABI info&lt;br /&gt;
-- Detecting C compiler ABI info - done&lt;br /&gt;
-- Detecting C compile features&lt;br /&gt;
-- Detecting C compile features - done&lt;br /&gt;
-- Check for working CXX compiler: /usr/bin/c++&lt;br /&gt;
-- Check for working CXX compiler: /usr/bin/c++ -- works&lt;br /&gt;
-- Detecting CXX compiler ABI info&lt;br /&gt;
-- Detecting CXX compiler ABI info - done&lt;br /&gt;
-- Detecting CXX compile features&lt;br /&gt;
-- Detecting CXX compile features - done&lt;br /&gt;
-- libglnsvpos version: cd76a7e&lt;br /&gt;
-- Found PkgConfig: /usr/bin/pkg-config (found version &amp;quot;0.29.1&amp;quot;) &lt;br /&gt;
-- Checking for one of the modules 'check'&lt;br /&gt;
-- Configuring done&lt;br /&gt;
-- Generating done&lt;br /&gt;
-- Build files have been written to: /home/korogodin/glnephexercise/libglnsvpos/build&lt;br /&gt;
korogodin@KorPC:~/glnephexercise/libglnsvpos/build$ make&lt;br /&gt;
[ 33%] Built target glnsvpos-static&lt;br /&gt;
[ 66%] Built target glnsvpos&lt;br /&gt;
Scanning dependencies of target test_glnsvpos&lt;br /&gt;
[ 77%] Building CXX object test/CMakeFiles/test_glnsvpos.dir/check_position.cpp.o&lt;br /&gt;
[ 88%] Linking CXX executable test_glnsvpos&lt;br /&gt;
Running unit tests&lt;br /&gt;
Running suite(s): My test suite&lt;br /&gt;
50%: Checks: 2, Failures: 1, Errors: 0&lt;br /&gt;
/home/korogodin/glnephexercise/libglnsvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3&lt;br /&gt;
test/CMakeFiles/test_glnsvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_glnsvpos»&lt;br /&gt;
make[2]: *** [test/test_glnsvpos] Ошибка 1&lt;br /&gt;
make[2]: *** Удаляется файл «test/test_glnsvpos»&lt;br /&gt;
CMakeFiles/Makefile2:179: ошибка выполнения рецепта для цели «test/CMakeFiles/test_glnsvpos.dir/all»&lt;br /&gt;
make[1]: *** [test/CMakeFiles/test_glnsvpos.dir/all] Ошибка 2&lt;br /&gt;
Makefile:127: ошибка выполнения рецепта для цели «all»&lt;br /&gt;
make: *** [all] Ошибка 2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Работы по данному этапу осуществляются в каталоге libglnsvpos.&lt;br /&gt;
Правила приемки этапа те же.&lt;/div&gt;</summary>
		<author><name>Korogodin</name></author>	</entry>

	</feed>