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

	<entry>
		<id>https://wiki.srns.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2021&amp;diff=32362&amp;oldid=prev</id>
		<title>Korogodin: Новая страница: «== Курсовая работа 2021 ==  Название: '''Разработка модуля расчёта координат спутника Beidou'''  К…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.srns.ru/index.php?title=%D0%9A%D1%83%D1%80%D1%81%D0%BE%D0%B2%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D0%90%D0%9F_%D0%A1%D0%A0%D0%9D%D0%A1_2021&amp;diff=32362&amp;oldid=prev"/>
				<updated>2022-02-15T16:03:16Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «== Курсовая работа 2021 ==  Название: &amp;#039;&amp;#039;&amp;#039;Разработка модуля расчёта координат спутника Beidou&amp;#039;&amp;#039;&amp;#039;  К…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Курсовая работа 2021 ==&lt;br /&gt;
&lt;br /&gt;
Название: '''Разработка модуля расчёта координат спутника Beidou'''&lt;br /&gt;
&lt;br /&gt;
Курсовая работа по АП СРНС выполняется во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке навигационных приемников.&lt;br /&gt;
&lt;br /&gt;
Цель проекта - добавление в программное обеспечение приемника функции расчета положения спутника Beidou на заданное время по данным его эфемерид.&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;
* моделирование модуля в Matlab/Python;&lt;br /&gt;
* реализация программного модуля на С/С++, включая юнит-тестирование в Check.&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:АПСРНС_КП2021_Списки.ods|Журнал с номерами спутников]]&lt;br /&gt;
&lt;br /&gt;
=== Этап 1. Использование сторонних средств ===&lt;br /&gt;
&lt;br /&gt;
'''Дедлайн''': 03.03.21 (устранение замечаний и итоговый мёрдж до 09.03.21)&lt;br /&gt;
&lt;br /&gt;
Конечная цель всего курсового проекта - получить библиотеку функций на Си++, позволяющую рассчитывать положение спутника Beidou по его эфемеридам. &lt;br /&gt;
На первом этапе подготовим вспомогательные данные для разработки: эфемериды и оценки положения спутника от сторонних сервисов (чтобы было с чем сравниваться на след. этапах) &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;
Эти приемники осуществляют первичную обработку сигналов Beidou B1I, выдавая по интерфейсам соответствующие потоки данных - наблюдения псевдодальностей и эфемериды спутников. &lt;br /&gt;
Данные от приемника Clonicus, записанные вечером 16 февраля 2021 года, доступны в рабочем репозитории (директория logs) в нескольких форматах. &lt;br /&gt;
&lt;br /&gt;
Во-первых, это дамп бинарного потока данных от приемника в формате [https://navis.ru/downloads/SOFT/NV08C_BINR_Protocol_Specification_V13_ENG_10082012.pdf NVS BINR].&lt;br /&gt;
&lt;br /&gt;
Во-вторых, текстовый файл данных пакета 0xF7, полученный из данного дампа - для тех, кому лень разбираться с бинарным файлом и протоколом. &lt;br /&gt;
Он получен подобным printf'ом для каждого спутника с периодом передачи эфемерид:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
fprintf(fid, &amp;quot;%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&amp;quot;,&lt;br /&gt;
        pack-&amp;gt;SatNum,       // 1&lt;br /&gt;
        pack-&amp;gt;bds[0].toe,   // 2&lt;br /&gt;
        pack-&amp;gt;bds[0].Crs,   // 3&lt;br /&gt;
        pack-&amp;gt;bds[0].Dn,    // 4&lt;br /&gt;
        pack-&amp;gt;bds[0].M0,    // 5&lt;br /&gt;
        pack-&amp;gt;bds[0].Cuc,   // 6&lt;br /&gt;
        pack-&amp;gt;bds[0].e,     // 7&lt;br /&gt;
        pack-&amp;gt;bds[0].Cus,   // 8&lt;br /&gt;
        pack-&amp;gt;bds[0].sqrtA, // 9&lt;br /&gt;
        pack-&amp;gt;bds[0].Cic,   // 10&lt;br /&gt;
        pack-&amp;gt;bds[0].Omega0,// 11&lt;br /&gt;
        pack-&amp;gt;bds[0].Cis,   // 12&lt;br /&gt;
        pack-&amp;gt;bds[0].i0,    // 13&lt;br /&gt;
        pack-&amp;gt;bds[0].Crc,   // 14&lt;br /&gt;
        pack-&amp;gt;bds[0].omega, // 15&lt;br /&gt;
        pack-&amp;gt;bds[0].OmegaDot, // 16&lt;br /&gt;
        pack-&amp;gt;bds[0].iDot,  // 17&lt;br /&gt;
        pack-&amp;gt;bds[0].Tgd,   // 18&lt;br /&gt;
        pack-&amp;gt;bds[0].toc,   // 19&lt;br /&gt;
        pack-&amp;gt;bds[0].af2,   // 20&lt;br /&gt;
        pack-&amp;gt;bds[0].af1,   // 21&lt;br /&gt;
        pack-&amp;gt;bds[0].af0,   // 22&lt;br /&gt;
        pack-&amp;gt;bds[0].URA,   // 23&lt;br /&gt;
        pack-&amp;gt;bds[0].IODE,  // 24&lt;br /&gt;
        pack-&amp;gt;bds[0].IODC,  // 25&lt;br /&gt;
        pack-&amp;gt;bds[0].codeL2,// 26&lt;br /&gt;
        pack-&amp;gt;bds[0].L2P,   // 27&lt;br /&gt;
        pack-&amp;gt;bds[0].WN     // 28&lt;br /&gt;
        );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для приемки первого этапа оформляется отчет по [https://mpei.ru/Science/ScienceDocuments/Documents/Polojenie_2018/0_GOST_7.32-2017.pdf ГОСТ 7.32], содержащий результаты работ:&lt;br /&gt;
# Определение формы орбиты и положения спутника на ней на начало рассматриваемого интервала времени по данным сервиса CelesTrak: общий вид + положение спутника на 18:00 МСК 16 февраля 2021, так, чтобы было видно подспутниковую точку и время ([[media:Screenshot_20210217_095616.png|примерно так]])&lt;br /&gt;
# Расчет графика угла места собственного спутника от времени по данным Trimble GNSS Planning Online на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.&lt;br /&gt;
# Расчет диаграммы угла места и азимута спутника (SkyView, он же SkyPlot) по данным Trimble GNSS Planning Online на на интервал времени с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года.&lt;br /&gt;
# Формирование списка и описание параметров, входящих в состав эфемерид в [http://en.beidou.gov.cn/SYSTEMS/ICD/201902/P020190227702348791891.pdf сигнале B1I Beidou]&lt;br /&gt;
# Формирование таблицы эфемерид собственного спутника (номер спутника Beidou см. в журнале выше) с подписанными размерностями ([[media:Screenshot_20190212_102726.png|как тут]], но только для одного спутника)&lt;br /&gt;
&lt;br /&gt;
Работа осуществляется в репозитории на github на базе [https://github.com/Korogodin/bdsephexercise bdsephexercise]. Для этого:&lt;br /&gt;
# Завести, если до сих пор нет, аккаунт на github&lt;br /&gt;
# Сделать форк проекта [https://github.com/Korogodin/bdsephexercise bdsephexercise] (маленькая кнопка сверху справа в вэб-интерфейсе)&lt;br /&gt;
# Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)&lt;br /&gt;
# Клонировать свой форк на рабочий компьютер (&amp;lt;code&amp;gt;git clone https://github.com/MySuperAccount/bdsephexercise.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;
=== Этап 2. Моделирование ===&lt;br /&gt;
&lt;br /&gt;
'''Дедлайн''': 02.04.21 (исправления замечаний до 09.04.21)&lt;br /&gt;
&lt;br /&gt;
Эфемериды - параметры некоторой модели движения спутника. &lt;br /&gt;
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.&lt;br /&gt;
&lt;br /&gt;
Одна из самых простых и удобных моделей - [http://navipedia.org/index.php/GPS_and_Galileo_Satellite_Coordinates_Computation в системе GPS]. Beidou наследует данную модель. &lt;br /&gt;
&lt;br /&gt;
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника Beidou на заданный момент по шкале времени UTC.&lt;br /&gt;
В качестве эфемерид использовать данные, полученные на предыдущем этапе. &lt;br /&gt;
&lt;br /&gt;
Построить трехмерные графики множества положений спутника Beidou с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 18:00 МСК 16 февраля до 06:00 МСК 17 февраля 2021 года. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал. &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;
'''Дедлайн''': 11.05.21 (исправления до 18.05.21)&lt;br /&gt;
&lt;br /&gt;
Требуется разработать на языке С/С++ функцию расчета положения спутника Beidou на заданное время по шкале 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;
В репозитории расположен каркас программного модуля libbdssvpos, представленного в виде подключаемой библиотеки на базе системы сборки 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:~/bdsephexercise/libbdssvpos$ mkdir build&lt;br /&gt;
korogodin@KorPC:~/bdsephexercise/libbdssvpos$ cd build&lt;br /&gt;
korogodin@KorPC:~/bdsephexercise/libbdssvpos/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;
-- libbdssvpos 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/bdsephexercise/libbdssvpos/build&lt;br /&gt;
korogodin@KorPC:~/bdsephexercise/libbdssvpos/build$ make&lt;br /&gt;
[ 33%] Built target bdssvpos-static&lt;br /&gt;
[ 66%] Built target bdssvpos&lt;br /&gt;
Scanning dependencies of target test_bdssvpos&lt;br /&gt;
[ 77%] Building CXX object test/CMakeFiles/test_bdssvpos.dir/check_position.cpp.o&lt;br /&gt;
[ 88%] Linking CXX executable test_bdssvpos&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/bdsephexercise/libbdssvpos/test/check_position.cpp:11:F:Main tests:test_add:0: 1+2 should be 3&lt;br /&gt;
test/CMakeFiles/test_bdssvpos.dir/build.make:121: ошибка выполнения рецепта для цели «test/test_bdssvpos»&lt;br /&gt;
make[2]: *** [test/test_bdssvpos] Ошибка 1&lt;br /&gt;
make[2]: *** Удаляется файл «test/test_bdssvpos»&lt;br /&gt;
CMakeFiles/Makefile2:179: ошибка выполнения рецепта для цели «test/CMakeFiles/test_bdssvpos.dir/all»&lt;br /&gt;
make[1]: *** [test/CMakeFiles/test_bdssvpos.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;
Работы по данному этапу осуществляются в каталоге libbdssvpos.&lt;br /&gt;
Правила приемки этапа те же.&lt;/div&gt;</summary>
		<author><name>Korogodin</name></author>	</entry>

	</feed>