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

Материал из SRNS
Перейти к: навигация, поиск
(Этап 3. Реализация)
 
(не показаны 126 промежуточных версий 1 участника)
Строка 5: Строка 5:
 
По дисциплине подготовлен [[ЭУМК АП СРНС|электронный учебно-методический комплекс]].
 
По дисциплине подготовлен [[ЭУМК АП СРНС|электронный учебно-методический комплекс]].
  
== Правила аттестации ==
+
Черновик '''учебного пособия по курсу''' [https://github.com/Korogodin/gnssrec доступен по ссылке].
 
+
Обязательным условием для получения допуска к экзамену является выполнение и защита 4 лабораторных работ.  
+
  
 
== Календарный план ==
 
== Календарный план ==
Строка 14: Строка 12:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Неделя || Дата || Лекция || Лабораторная  
+
! Неделя || Даты || Лекция || Лабораторная || Контрольное мероприятие
  
 
|- align=center
 
|- align=center
| 2 || 04.09-10.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
| 3 || 11.09-17.09  
+
| 3 || 13.09.21-19.09.21
| Антенна АП. Предварительный МШУ. Коэффициент шума. Радиочастотный план.
+
| Навигационные сигналы.  
 
|
 
|
 +
|
  
 
|- align=center
 
|- align=center
| 4 || 18.09-24.09  
+
| 4 || 20.09.21-26.09.21
| [[media:20111008_АП_СРНС_Лекция_3_презентация.pdf|Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС.]]
+
| Антенна, МШУ
|
+
|  
 +
| КМ-1: Модель сигнала ГНСС
  
 
|- align=center
 
|- align=center
| 5 || 25.09-01.10  
+
| 5 || 27.09.21-03.10.21
| [[media:20111005_АП_СРНС_Лекция_4_презентация.pdf|Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.]] <br> [[media:АП_СРНС_corr.pdf|Статистический эквивалент коррелятора]]
+
| Радиочастотный блок <br> ([[media:20111008_АП_СРНС_Лекция_3_презентация.pdf|Аналогово-цифровое преобразование. Синтезатор частот. План частот АП СРНС.]] )
| [https://goo.gl/forms/R7Vos1KsJ1taqqXo2 Ошибки позиционирования в городских условиях] <br> <s>Исследование характеристик МШУ АП СРНС</s>
+
|
 +
|  
  
 
|- align=center
 
|- align=center
| 6 || 02.10-08.10  
+
| 6 || 04.10.21-10.10.21
| [[media:20111005_АП_СРНС_Лекция_5_презентация.pdf|Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.]]
+
| Математическая модель коррелятора <br> ([[media:АП_СРНС_corr.pdf|Статистический эквивалент коррелятора]])
 
|
 
|
 +
| КМ-2: Ошибки позиционирования в городских условиях
  
 
|- align=center
 
|- align=center
| 7 || 09.10-15.10  
+
| 7 || 11.10.21-17.10.21
| [[media:20111008_АП_СРНС_Лекция_6_презентация.pdf|Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.]] <br> [[media:20111017_АП_СРНС_Лекция_7_презентация.pdf|Блок быстрого поиска]]
+
| Аппаратная реализация коррелятора <br> ([[media:20111005_АП_СРНС_Лекция_4_презентация.pdf|Принципы построения и структура коррелятора. Цифровой генератор гармонического сигнала и дальномерного кода.]])
 
|
 
|
 
+
|
  
 
|- align=center
 
|- align=center
| 8 || 16.10-22.10
+
| 8 || 18.10.21-24.10.21
| [[media:20111215_АП_СРНС_Лекция_8_презентация.pdf|Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.]]
+
| Следящие системы <br> ([[media:20111215_АП_СРНС_Лекция_8_презентация.pdf|Система слежения за фазой сигнала. Структурная схема ССФ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_9_презентация.pdf|Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр.]] <br> [[media:20111215_АП_СРНС_Лекция_10_презентация.pdf|Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр. <br> Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.]])
|
+
| [https://goo.gl/XruJBM GNSS Planning]
 +
| КМ-3: Статистический эквивалент коррелятора
  
 
|- align=center
 
|- align=center
| 9 || 23.10-29.10
+
| 9 || 25.10.21-31.10.21
| [[media:20111215_АП_СРНС_Лекция_9_презентация.pdf|Система слежения за частотой. Структурная схема ССЧ, дискриминаторы, следящий фильтр.]]
+
| Оценка SNR, детекторы захвата, детекторы CC
| [[Исследование_коррелятора_АП_СРНС_ГЛОНАСС_с_помощью_имитационной_модели_(лабораторная_работа)|Исследование коррелятора АП СРНС с помощью имитационной модели]]
+
|  
 +
|  
  
 
|- align=center
 
|- align=center
| 10 || 30.10-05.11
+
| 10 || 01.11.21-07.11.21
| [[media:20111215_АП_СРНС_Лекция_10_презентация.pdf|Система слежения за задержкой. Структурная схема ССЗ, дискриминаторы, следящий фильтр.]]
+
| Обнаружение сигнала.  <br> ([[media:20111005_АП_СРНС_Лекция_5_презентация.pdf|Обнаружение сигнала. Алгоритмы, статистические характеристики обнаружения.]])
 
|
 
|
 +
|
  
 
|- align=center
 
|- align=center
| 11 || 06.11-12.11
+
| 11 || 08.11.21-14.11.21
| [[media:20111215_АП_СРНС_Лекция_10_презентация.pdf|Система слежения за задержкой с поддержкой от ФАП. Комплексный фильтр.]]
+
| Поиск сигнала <br> ([[media:20111008_АП_СРНС_Лекция_6_презентация.pdf|Поиск сигнала по частоте и задержке. Алгоритмы поиска, быстрый поиск сигнала.]] <br> [[media:20111017_АП_СРНС_Лекция_7_презентация.pdf|Блок быстрого поиска]])
 
|
 
|
 +
|
  
 
|- align=center
 
|- align=center
| 12 || 13.11-19.11
+
| 12 || 15.11.21-21.11.21
| [[media:20111215_АП_СРНС_Лекция_11_презентация.pdf|Демодуляция навигационных данных. Алгоритм демодуляции, статистические характеристики демодуляции.]]
+
| Символьная и оверлейная синхронизация <br>
|
+
| [[Исследование_коррелятора_АП_СРНС_ГЛОНАСС_с_помощью_имитационной_модели_(лабораторная_работа)|Исследование коррелятора АП СРНС с помощью имитационной модели]]
 +
| КМ-4: Исследование коррелятора АП СРНС ГЛОНАСС с помощью имитационной модели
  
 
|- align=center
 
|- align=center
| 13 || 20.11-26.11
+
| 13 || 22.11.21-28.11.21
| [[media:20111215_АП_СРНС_Лекция_12_презентация.pdf|Декодирование навигационных данных. Алгоритм декодирования, статистические характеристики декодирования.]]
+
| [[media:20111215_АП_СРНС_Лекция_11_презентация.pdf|Демодуляция навигационных данных]]
| [https://goo.gl/XruJBM GNSS Planning] <br> <s>Чувствительность навигационных модулей</s>
+
|  
+
|
  
 
|- align=center
 
|- align=center
| 14 || 27.11-03.12
+
| 14 || 29.11.21-05.12.21
| Погрешности измерения псевдодальности, псевдоскорости и координат АП СРНС.
+
| Кадровая синхронизация, [[media:20111215_АП_СРНС_Лекция_12_презентация.pdf|декодирование]], парсинг
 
|
 
|
 +
| КМ-5: Прогнозирование спутникового созвездия
  
 
|- align=center
 
|- align=center
| 15 || 04.12-10.12
+
| 15 || 08.12.21-12.12.21
| [[media:20111128_АП_СРНС_Лекция_14_презентация.pdf|Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.]]
+
| Формирование измерений, расчет положения спутника
 
|
 
|
 +
|
  
 
|- align=center
 
|- align=center
| 16 || 11.12-17.12
+
| 16 || 13.12.21-19.12.21
| [[media:20111215_АП_СРНС_Лекция_16_презентация.pdf|Контроль целостности]]
+
| Модель наблюдений псевдодальности. <br> [[media:20111128_АП_СРНС_Лекция_14_презентация.pdf|Вторичная обработка измерений. Одношаговый алгоритм решения навигационной задачи.]] <br> [[media:20111215_АП_СРНС_Лекция_16_презентация.pdf|Контроль целостности]]
|
+
| Решение навигационной задачи по псевдодальномерным измерениям
 +
| КМ-6: Решение навигационной задачи по псевдодальномерным измерениям
  
 
|- align=center
 
|- align=center
| 17 || 18.12-24.12
+
| 17 || 20.12.21-26.12.21
| Итоговое занятие
+
| Помехоустойчивость АП СРНС
| Помехоустойчивость навигационных модулей
+
|  
 +
|  
  
 
|- align=center
 
|- align=center
| 18 || 25.12-31.12
+
| 18 || 27.12.21-02.01.21
| Итоговое занятие
+
| Зачет
 +
|
 
|
 
|
  
 
|}
 
|}
  
[[media:АПСРНС_2017_Списки.ods|Журнал успеваемости]].
+
[[media:АПСРНС_2021_Списки.ods|Журнал успеваемости]].
 +
 
 +
== Правила аттестации ==
 +
 
 +
Обязательным условием для получения допуска к экзамену является выполнение всех контрольных мероприятий: сдача двух контрольных и защита 4 лабораторных работ.
 +
 
 +
При написании отчетов следует опираться на правила оформления [https://mpei.ru/Science/ScienceDocuments/Documents/Polojenie_2018/0_GOST_7.32-2017.pdf ГОСТ 7.32] (в части форматирования, оформления рисунков, таблиц, списков и т.д.).
 +
 
 +
Приемка осуществляется через репозиторий на github на базе проекта [https://github.com/Korogodin/gnssrecbasics2021 gnssrecbasics2021].
 +
 
 +
== Демо модели ==
 +
 
 +
=== Прогноз выходного сигнала коррелятора ===
 +
 
 +
Производится обработка сигнала Gps L1 C/A, сформированного лабораторным имитатором сигналов, синхронизированным с приемником. Сигнал перенесен с помощью РЧБ NT1065 на промежуточную частоту <math>f_{if} = 8.54</math> МГц и преобразован многоразрядным АЦП с частотой сэмплирования <math>F_d = 99.375</math> МГц. Установленная на имитаторе мощность обеспечивает уровень отношения сигнал/шум <math>27 + N</math> дБГц, где <math>N</math> - номер вариант по журналу.
 +
 
 +
В приемнике производтся корреляционная обработка сигнала, интервал накопления составляет <math>T = 1</math> мс.
 +
 
 +
Сигнал имеет сдвиг частоты несущей <math>f_d = 100 N</math> Гц, при этом опорный сигнал коррелятора имеет аналогичный сдвиг <math>f_{d, rep} = f_d</math>. Задержка огибающей известна точно и используется в опорном сигнале <math>\tau = \tau_{rep}</math>.
 +
 
 +
Задание: Построить на плоскости I,Q вид множества точек корреляционных сумм, полученных в ходе большого (сотни) числа экспериментов.
 +
 
 +
{{Hider|title = Расчет выходного сигнала коррелятора
 +
|content = <source lang="matlab">
 +
clear all; clc; close all;
 +
 
 +
N = 30;
 +
 
 +
Fd = 99.375e6;
 +
Td = 1/Fd;
 +
T = 0.001;
 +
fif = 8.34e6;
 +
 
 +
fd    = 100 * N;
 +
fd_rep = fd;
 +
 
 +
phi    = 10 * N;
 +
phi_rep = 20 * N;
 +
 
 +
qcno_dB = 27 + N;
 +
qcno    = 10^(qcno_dB/10);
 +
 
 +
stdn = 50/3;
 +
A    = sqrt(qcno * Td) * 2 * stdn; % qcno = A^2 / (4 stdn^2 Td)
 +
 
 +
fprintf('A = %f, stdn = %f\n', A, stdn);
 +
 
 +
L = fix(T * Fd);
 +
t = (0:(L-1)) * Td;
 +
 
 +
PRN_Length = 1023;
 +
PRN = (-1).^(rand(1, PRN_Length) > 0.5);
 +
 
 +
tau = 100500e-6;
 +
tau_rep = tau;
 +
 
 +
nchip    = mod(fix(PRN_Length*(t - tau    )/T), PRN_Length) + 1;
 +
nchip_rep = mod(fix(PRN_Length*(t - tau_rep)/T), PRN_Length) + 1;
 +
 
 +
Gc    = PRN(nchip    );
 +
Gc_rep = PRN(nchip_rep);
 +
 
 +
So        = A * Gc    .* cos(2*pi*fif*t + 2*pi*fd    *t + deg2rad(phi)    );
 +
S_rep_cos =    Gc_rep .* cos(2*pi*fif*t + 2*pi*fd_rep*t + deg2rad(phi_rep));
 +
S_rep_sin =    Gc_rep .* sin(2*pi*fif*t + 2*pi*fd_rep*t + deg2rad(phi_rep));
 +
 
 +
K = 1000; I = nan(1, K); Q = nan(1,K);
 +
for k = 1:K
 +
    n = randn(1,L)*stdn;
 +
 
 +
    Gd    = (-1).^(rand(1,1) > 0.5);
 +
    S = Gd * So;
 +
   
 +
    y = S + n;
 +
   
 +
    I(k) = y * S_rep_cos';
 +
    Q(k) = y * S_rep_sin';
 +
end
 +
 
 +
maxIQ = 1.1*max(abs(I + 1i*Q));
 +
 
 +
figure(1);
 +
plot(t*1e3, [y; S; A*Gc]);
 +
xlabel('t, ms')
 +
ylabel('y, S');
 +
grid on
 +
 
 +
figure(2);
 +
plot(I, Q, '*')
 +
hold on
 +
plot([-maxIQ maxIQ], [0 0], 'k');
 +
plot([0 0], [-maxIQ maxIQ], 'k');
 +
quiver(-maxIQ, 0, 2*maxIQ, 0, 1, 'k');
 +
quiver(0, -maxIQ, 0, 2*maxIQ, 1, 'k');
 +
hold off
 +
xlabel('I')
 +
ylabel('Q');
 +
axis equal
 +
grid on
 +
 
 +
</source>
 +
|hidden = 1
 +
}}
 +
 
 +
 
 +
=== ЧАП и ФАП на стат эквивалентах ===
 +
 
 +
{{Hider|title = Слежение за фазой и частотой
 +
|content = <source lang="matlab">
 +
clear all; clc; close all;
 +
 
 +
T = 0.010;
 +
 
 +
Xist = [10;
 +
        1];
 +
   
 +
Xfilt = [0;
 +
        0];
 +
 
 +
Xfilt_FLL = [0;
 +
            0];
 +
   
 +
F = [1 T;
 +
    0 1];
 +
 
 +
Tmod = 10;
 +
K = fix(Tmod / T);
 +
 +
G = [0;
 +
    1];
 +
 
 +
std_ksi = 1.3 * T;
 +
ksi = std_ksi * randn(1, K);
 +
 
 +
qcno_dB = 45;
 +
qcno = 10^(qcno_dB/10);
 +
 
 +
stdnIQ = 7;
 +
nI = stdnIQ * randn(1, K);
 +
nQ = stdnIQ * randn(1, K);
 +
A_IQ = sqrt(2*qcno*T) * stdnIQ; 
 +
 
 +
dF_PLL = 20;
 +
Kfilt_PLL = [ 8/3 * dF_PLL  * T;
 +
              32/9 * dF_PLL^2 * T];
 +
 
 +
dF_FLL = 3;
 +
Kfilt_FLL = [ 8/3 * dF_FLL  * T;
 +
              32/9 * dF_FLL^2 * T];
 +
         
 +
t = (1:K)*T;
 +
phi_ist  = nan(1, K);
 +
  w_ist  = nan(1, K);
 +
phi_filt = nan(1, K);
 +
  w_filt = nan(1, K);
 +
phi_filt_FLL = nan(1, K);
 +
  w_filt_FLL = nan(1, K);
 +
 
 +
phi_corr = 0; Iold = 0; Qold = 0;
 +
for k = 1:K
 +
    Xist = F * Xist + G * ksi(k);
 +
   
 +
    phi_ist(k) = Xist(1);
 +
      w_ist(k) = Xist(2);
 +
   
 +
    % PLL
 +
    Xfilt_extr = F*Xfilt;
 +
    phi_extr = Xfilt_extr(1);
 +
    dPhi = phi_ist(k) - phi_extr;
 +
 
 +
    Q = - A_IQ * sin(dPhi) + nQ(k);
 +
    Ud = -Q; 
 +
    Sd = A_IQ; 
 +
   
 +
    Xfilt = Xfilt_extr + Kfilt_PLL * Ud/Sd;
 +
 
 +
    phi_filt(k) = Xfilt(1);
 +
      w_filt(k) = Xfilt(2);
 +
   
 +
    % FLL
 +
    Xfilt_extr_FLL = F*Xfilt_FLL;
 +
    w_extr = Xfilt_extr_FLL(1);
 +
    dPhi = phi_ist(k) - phi_corr;
 +
    phi_corr = phi_corr + w_extr * T;
 +
    dW = w_ist(k) - w_extr;
 +
 
 +
    I = - A_IQ * cos(dPhi) + nI(k);
 +
    Q = - A_IQ * sin(dPhi) + nQ(k);
 +
    Ud = Q*Iold - I*Qold; 
 +
    Sd = A_IQ; 
 +
    Iold = I; Qold = Q;
 +
   
 +
    Xfilt_FLL = Xfilt_extr_FLL + Kfilt_FLL * Ud/Sd;
 +
 
 +
    phi_filt_FLL(k) = phi_corr;
 +
      w_filt_FLL(k) = Xfilt_FLL(1);
 +
   
 +
   
 +
end
 +
 
 +
figure(1)
 +
subplot(2,1,1)
 +
plot(t, phi_ist/2/pi, t, phi_filt/2/pi, t, phi_filt_FLL/2/pi)
 +
ylabel('\phi, cycles')
 +
subplot(2,1,2)
 +
plot(t, rad2deg(w_ist), t, rad2deg(w_filt), t, rad2deg(w_filt_FLL))
 +
ylabel('\omega, Hz')
 +
xlabel('t, sec')
 +
 
 +
</source>
 +
|hidden = 1
 +
}}
  
 
== Вопросы к экзамену ==
 
== Вопросы к экзамену ==
  
Экзамен проводится в устной форме и содержит два вопроса ([[media:Вопросы_экз_АП_СРНС.doc|экзаменационные вопросы]]). При подготовке рекомендуется использовать книги по тематике, [[media:2013_ЭУМК_С3.33_Лекции_АП_СРНС.pdf|конспекты лекций]] и презентации.
+
Экзамен проводится в письменной форме: тест, задача и один экзаменационный вопрос ([[media:Вопросы_экз_АП_СРНС.doc|экзаменационные вопросы]]). При подготовке рекомендуется использовать книги по тематике, [[media:2013_ЭУМК_С3.33_Лекции_АП_СРНС.pdf|конспекты лекций]] и презентации.
  
== Курсовой проект ==
+
== Курсовая работа ==
  
Курсовой проект по данной дисциплине проводится во втором семестре. В рамках проекта студенты знакомятся с рядом инструментов и техник, используемых при разработке АП СРНС:
+
Название: '''Расчет траектории движения спутника GPS по данным с демодулятора его сигнала'''
* обработка измерений от приемника ГНСС в RTKLIB;
+
* обработка данных и моделирование в Matlab/Python;
+
* разработка программного модуля на С/С++, включая юнит-тестирование в Check.
+
  
=== Этап 1. Использование ===
+
Курсовая работа по АП СРНС выполняется во втором семестре. В рамках КР студенты знакомятся с рядом инструментов и техник, используемых при разработке навигационных приемников.
  
'''Дедлайн''': 06.03.18
+
Цель проекта - разработка модулей разбора навигационного сообщения GPS и расчета положения спутника, предназначенных для использования в составе навигационного приемника.
  
На крыше корпуса А МЭИ установлена трехдиапазонная антенна 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 [[media:receivers_logs_2018.rar|доступен для скачивания по ссылке]].
+
Для достижения цели выполняется ряд задач, соответствующих этапам проекта и контрольным мероприятиям:
 +
* разработка модуля разбора символов навигационного сообщения
 +
* расчет положения КА в Matlab/Python и его проверка сторонними сервисами;
 +
* реализация модуля расчета положения КА на С/С++ и его тестирование.
  
Требуется произвести вторичную обработку измерений, например, с помощью программы [http://www.rtklib.com/ RTKLIB]. В Matlab или Python построить гистограммы отклонения навигационного решения от эталонного решения (в метрах). В качестве эталона взять средний результат для Javad.
+
На каждом из этапов действуют следующие правила:
 +
* Взаимодействие осуществляется через github (пул реквесты, комментарии)
 +
* Отчет оформляется по ГОСТ 7.32
 +
* '''Этап сдан тогда, когда принят пул реквест'''
  
Оформить отчёт по результатам этапа:
 
* Особенности настройки программы вторичной обработки
 
* Средние расчетные положения для разных приемников и разница между ними (в градусах и мм соответственно)
 
* Гистограммы отклонений
 
  
=== Этап 2. Моделирование ===
 
  
'''Дедлайн''': 10.04.18
+
{| class="wikitable"
 +
|+ Варианты заданий:
 +
|-
 +
! Студент !! Номер спутника = варианта !! Логи !! Примечание
 +
|-
 +
! Антропов Евгений Александрович
 +
| 1 || [[media:2022_KR_01.tar.gz|tar.gz]] ||
 +
|-
 +
! Бахолдин Никита Владимирович
 +
| 3 || [[media:2022_KR_03.tar.gz|tar.gz]]  ||
 +
|-
 +
! Берестнев Владимир Сергеевич
 +
| 8 || [[media:2022_KR_08.tar.gz|tar.gz]] ||
 +
|-
 +
! Дубинин Леонид Андреевич
 +
| 10 || [[media:2022_KR_10.tar.gz|tar.gz]] ||
 +
|-
 +
! Еловский Никита Станиславович
 +
| 12 || [[media:2022_KR_12.tar.gz|tar.gz]] ||
 +
|-
 +
! Иванцова Дарья Николаевна
 +
| 17 || [[media:2022_KR_17.tar.gz|tar.gz]] ||
 +
|-
 +
! Капитонов Александр Ильич
 +
| 19 || [[media:2022_KR_19.tar.gz|tar.gz]] ||
 +
|-
 +
! Коробков Андрей Юрьевич
 +
| 21 || [[media:2022_KR_21.tar.gz|tar.gz]] ||
 +
|-
 +
! Куксин Владислав Александрович
 +
| 22 || [[media:2022_KR_22.tar.gz|tar.gz]] ||
 +
|-
 +
! Кусакин Павел Александрович
 +
| 31 || [[media:2022_KR_31.tar.gz|tar.gz]] ||
 +
|-
 +
! Ливенцов Василий Александрович
 +
| 14  || [[media:2022_KR_14.tar.gz|tar.gz]]  ||
 +
|-
 +
! Михайлов Иван Олегович
 +
| 24 || [[media:2022_KR_24.tar.gz|tar.gz]] ||
 +
|-
 +
! Муратов Николай Сергеевич
 +
| 4 || [[media:2022_KR_04.tar.gz|tar.gz]] ||
 +
|-
 +
! Попов Максим Геннадьевич
 +
| 6 || [[media:2022_KR_06.tar.gz|tar.gz]] ||
 +
|-
 +
! Солнцева Милана Константиновна
 +
| 7 || [[media:2022_KR_07.tar.gz|tar.gz]] ||
 +
|-
 +
! Танкина Анна Михайловна
 +
| 9 || [[media:2022_KR_09.tar.gz|tar.gz]] ||
 +
|-
 +
! Цымбал Григорий Романович
 +
| 16 || [[media:2022_KR_16.tar.gz|tar.gz]] ||
 +
|-
 +
! Чепелев Игорь Игоревич
 +
| 26 || [[media:2022_KR_26.tar.gz|tar.gz]] ||
 +
|}
 +
 
 +
 
 +
=== Этап 1. Обработка логов навигационного приемника ===
 +
 
 +
'''Дедлайн''': 04.03.22 (устранение замечаний и итоговый мёрдж до 13.03.22)
 +
 
 +
Конечная цель всего курсового проекта - получить библиотеку функций на Си++, позволяющую рассчитывать положение спутника GPS по данным с демодулятора его сигнала L1 C/A.
 +
На первом этапе реализуем модуль разбора навигационного сообщения до структуры эфемерид, сравним результаты со сторонней программой.
 +
 
 +
В неизвестной локации установлен навигационный приемник, принимающий сигналы GPS L1C/A и логирующий результаты этого приема в формате [https://navis.ru/downloads/SOFT/NV08C_BINR_Protocol_Specification_V13_ENG_10082012.pdf NVS BINR].
 +
Собранный на пятиминутном интервале файл приложен в архиве под именем BINR.bin, см. таблицу вариантов.
 +
Файл содержит наблюдения псевдодальностей и прочих радионавигационных параметров, демодулированные и разобранные данные навигационного сообщения.
 +
 
 +
Для удобства студентов  данные демодулятора продублированы в текстовый файл in.txt. Каждая строка файла содержит данные одного сабфрейма одного навигационного сигнала в формате:
 +
<source lang="bash">
 +
1 0 013 0R GpsL1CA  # 13 212130404  29 125  53 100010111010101010101010001010010111000011001010010111111000101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100
 +
</source>
 +
где ''# 13'' - номер спутника, ''212130404'' - счетчик сабфреймов в сигнале, ''53'' - ID сабфрейма в навигационном сообщении, где в первых трех битах содержится номер сабфрейма в фрейме (5 в данном примере), а далее - номер фрейма в сообщении (6 в данном примере), ''1000101110...'' символы с демодулятора в порядке возрастания времени слева направо.
 +
 
 +
Требуется:
 +
# Разработать программу, обрабатывающую файл in.txt и выводящую в файл out.txt таблицу эфемерид для спутника согласно варианту [[media:Screenshot_20220215_221319.png|в заданном формате]].
 +
# Обработать файл BINR.bin с помощью программы RTKNAVI из состава RTKLIB. Определить день и место проведения наблюдений, значения эфемерид для спутника согласно номеру варианта (меню открывается в левом нижнем углу экрана по нажатию на квадрат)
 +
# Сравнить полученные таблицы
 +
# Оформить код программы и разместить на Github
 +
# Оформить отчет по этапу и разместить на Github
 +
# Завести Pull Request
 +
 
 +
Программа должна компилироваться gcc, все входные данные брать из in.txt, весь вывод осуществлять в out.txt.
 +
 
 +
Работа осуществляется в репозитории на github на базе [https://github.com/Korogodin/gnssrecbasics2021 gnssrecbasics2021]. Для этого:
 +
# Завести, если до сих пор нет, аккаунт на github
 +
# Если ранее не сделано, сделать форк проекта [https://github.com/Korogodin/gnssrecbasics2021 gnssrecbasics2021] (маленькая кнопка сверху справа в вэб-интерфейсе)
 +
# Установить на рабочем компьютере git (для выполнения последующих этапов удобнее будет сделать это в ОС GNU/Linux, вероятно, на виртуальной машине)
 +
# Клонировать свой форк на рабочий компьютер (<code>git clone https://github.com/MySuperAccount/gnssrecbasics2021.git</code>)
 +
# Промежуточные и итоговые результаты по первому этапу хранить в каталоге processing (<code>git pull; git add <files>; git commit -m "Сделал то-то то-то"; git push</code>)
 +
# По результатам первого этапа завести Pull Request в исходный проект '''в ветку, название которой совпадает с вашей фамилией''' (кнопка наверху в вэб-интерфейсе)
 +
# Устранить все замечания, добиться принятия Pull Request'а.
 +
 
 +
Этап сдан тогда, когда ваш ПР принят.
 +
 
 +
=== Этап 2. Моделирование траектории движения ===
 +
 
 +
'''Дедлайн''': 13.04.22 (исправления замечаний до 20.04.22)
  
На предыдущем этапе получено решение навигационной задачи с помощью программы вторичной обработки измерений, например, RTKLIB.
+
Эфемериды - параметры некоторой модели движения спутника.  
В процессе работы она рассчитывает положение спутников на соответствующий момент сигнального времени.
+
При этом используются эфемериды - параметры некоторой модели движения спутника.  
+
 
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.
 
В разных ГНСС эти модели разные, а значит отличается и формат эфемерид, и алгоритмы расчета положения спутника.
  
Одна из самых простых и удобных моделей - [http://navipedia.org/index.php/GPS_and_Galileo_Satellite_Coordinates_Computation в системе GPS].  
+
Одна из самых простых и удобных моделей - [http://navipedia.org/index.php/GPS_and_Galileo_Satellite_Coordinates_Computation в системе GPS].
  
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника GPS на заданный момент по шкале GPST.
+
Требуется реализовать на языке Matlab или Python функцию расчета положения спутника GPS на заданный момент по шкале времени UTC.
В качестве источника эфемерид использовать предоставленный на предыдущем этапе файл с логами за 03.02.18.
+
В качестве эфемерид использовать данные, полученные на предыдущем этапе.  
  
Построить трехмерные графики множества положений спутника GPS с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать временному интервалу с 00:00 03.02.18 до 12:00 03.02.18. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (взять с середины).  
+
Построить трехмерные графики множества положений спутника GPS с системным номером, соответствующим номеру студента по списку. Графики в двух вариантах: в СК ECEF WGS84 и соответствующей ей инерциальной СК. Положения должны соответствовать суточному интервалу на дне формирования наблюдений, определенном на предыдущем этапе. Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал.  
  
Построить SkyView за указанный временной интервал (напоминаю, антенна на крыше корпуса А) и сравнить результат с [http://www.trimble.com/gnssplanningonline/ Trimble GNSS Planning Online].
+
Вывести значения координат спутника в файл out.txt в системе ECEF WGS 84 в виде строк: Секунда_от_начала_дня X Y Z
 +
 
 +
Используя оценку местоположения с предыдущего этапа, построить Sky Plot за указанный временной интервал и сравнить результат с [http://www.trimble.com/gnssplanningonline/ Trimble GNSS Planning Online].
  
 
Оформить отчет по результатам этапа:
 
Оформить отчет по результатам этапа:
1. Реализация в Matlab или Python
+
# Реализация в Matlab или Python (описание модели и её листинг)
2. Таблица использованных эфемерид
+
# Таблица использованных эфемерид
3. Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)
+
# Трехмерные графики положений спутника в ECEF и ECI (не забудьте подписать оси, изобразите соответствующую Земле сферу в начале СК)
4. Расчётный и полученный в GNSS Planing Online SkyView
+
# Расчётный и полученный в GNSS Planing Online SkyView
5. Выводы
+
 
 +
Работы по данному этапу осуществляются в каталоге simulation.
 +
Правила приемки этапа те же, что и на первом этапе.
  
=== Этап 3. Реализация ===  
+
=== Этап 3. Реализация модуля расчета координат ===  
  
'''Дедлайн''': 22.05.18
+
'''Дедлайн''': 11.05.22 (исправления до 18.05.22)
  
Требуется разработать на языке С/С++ функцию расчета положения спутника GPS на заданное время по шкале GPST, минимизируя время её исполнения и количество затрачиваемой оперативной памяти.  
+
Требуется разработать на языке С/С++ функцию расчета положения спутника GPS на заданное время по шкале UTC, минимизируя время её исполнения и количество затрачиваемой оперативной памяти.  
 
Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.
 
Вызов функции не должен приводить к выбросу исключений или утечкам памяти при любом наборе входных данных.
  
 
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений.  
 
Функция расчета положения спутника в Matlab/Python относительно проста, т.к. доступны библиотеки линейной алгебры и решения уравнений.  
 
Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти.  
 
Но при разработке встраиваемого ПО приходится сохранять лицензионную частоту, минимизировать вычислительную нагрузку и затраты памяти.  
Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения уравнения Кеплера.  
+
Поэтому отобразить модель из Matlab/Python в прошивку приемника дословно, как правило, не получается. В рассматриваемом примере потребуется, как минимум, выполнить свою реализацию решения трансцендентного уравнения.  
  
Программный модуль должен сопровождаться unit-тестами под check:
+
Программный модуль должен сопровождаться unit-тестами (например, используя Check):
 
* Тесты функции решения уравнения Кеплера
 
* Тесты функции решения уравнения Кеплера
* Тест расчетного положения спутника в сравнении с Matlab/Python с шагом 0.1 секунды.
+
* Тест расчетного положения спутника в сравнении с Matlab/Python
  
 
Во время второго теста должно вычисляться и выводиться средняя длительность исполнения функции.  
 
Во время второго теста должно вычисляться и выводиться средняя длительность исполнения функции.  
 
Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (как на предыдущем этапе).  
 
Допускается использовать одни и те же эфемериды на весь рассматриваемый интервал (как на предыдущем этапе).  
  
Требуется провести проверку на утечки памяти с помощью утилиты valgrind.
+
Требуется провести проверку на утечки памяти (например, с помощью утилиты valgrind).
  
 
Оформить отчет по результатам курсового проекта.  
 
Оформить отчет по результатам курсового проекта.  
 
В качестве первых двух глав использовать отчёты с предыдущих этапов, в третьей главе отразить результаты этого этапа:
 
В качестве первых двух глав использовать отчёты с предыдущих этапов, в третьей главе отразить результаты этого этапа:
* Код реализации
+
# Код реализации
* Вывод тестов
+
# Вывод тестов, включая анализ времени исполнения
* Вывод valgrind
+
# Вывод проверок на утечку памяти
* Вывод по этапу  
+
# Вывод по этапу  
* Заключение по проекту
+
# Заключение по проекту
  
По ссылке доступен [[media:libgpssvpos.rar|архив каркаса программного модуля]], представленного в виде подключаемой библиотеки на базе системы сборки CMake.
+
Программа должна компилироваться gcc и использовать в качестве входных данных in.txt с первого этапа.  
Настроена компиляция статической/динамической библиотек компилятором/кросскомпилятором и выполнению юнит-тестов (проверено в GNU/Linux системах).  
+
Результат должен записываться в out.txt в строки формата, определенного на втором этапе.
Для примера в библиотеке реализованы две функции - умножения и сложения.  
+
При тестировании должны сравниваться файлы out.txt второго и третьего этапов.
  
В функцию сложения add внесена ошибка, на которую указывает результат соответствующего юнит-теста:
+
Работы по третьему этапу следует вести в директории libgpssvpos.
<source lang="bash">
+
 
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
+
</source>
+
  
 +
Задания в [[Курсовой проект АП СРНС 2020|2020]], в [[Курсовая работа АП СРНС 2021|2021]].
  
 
[[Категория:АП СРНС (дисциплина)]]
 
[[Категория:АП СРНС (дисциплина)]]

Текущая версия на 16:13, 19 мая 2024

Дисциплина "Аппаратура потребителей спутниковых радионавигационных систем" входит в вариативную часть общенаучного цикла занятий учебного плана подготовки специалистов по направлению 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 вид множества точек корреляционных сумм, полученных в ходе большого (сотни) числа экспериментов.


[править] ЧАП и ФАП на стат эквивалентах


[править] Вопросы к экзамену

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

[править] Курсовая работа

Название: Расчет траектории движения спутника GPS по данным с демодулятора его сигнала

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

Цель проекта - разработка модулей разбора навигационного сообщения GPS и расчета положения спутника, предназначенных для использования в составе навигационного приемника.

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

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

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

  • разработка модуля разбора символов навигационного сообщения
  • расчет положения КА в Matlab/Python и его проверка сторонними сервисами;
  • реализация модуля расчета положения КА на С/С++ и его тестирование.

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

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


Варианты заданий:
Студент Номер спутника = варианта Логи Примечание
Антропов Евгений Александрович 1 tar.gz
Бахолдин Никита Владимирович 3 tar.gz
Берестнев Владимир Сергеевич 8 tar.gz
Дубинин Леонид Андреевич 10 tar.gz
Еловский Никита Станиславович 12 tar.gz
Иванцова Дарья Николаевна 17 tar.gz
Капитонов Александр Ильич 19 tar.gz
Коробков Андрей Юрьевич 21 tar.gz
Куксин Владислав Александрович 22 tar.gz
Кусакин Павел Александрович 31 tar.gz
Ливенцов Василий Александрович 14 tar.gz
Михайлов Иван Олегович 24 tar.gz
Муратов Николай Сергеевич 4 tar.gz
Попов Максим Геннадьевич 6 tar.gz
Солнцева Милана Константиновна 7 tar.gz
Танкина Анна Михайловна 9 tar.gz
Цымбал Григорий Романович 16 tar.gz
Чепелев Игорь Игоревич 26 tar.gz


[править] Этап 1. Обработка логов навигационного приемника

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

Конечная цель всего курсового проекта - получить библиотеку функций на Си++, позволяющую рассчитывать положение спутника GPS по данным с демодулятора его сигнала L1 C/A. На первом этапе реализуем модуль разбора навигационного сообщения до структуры эфемерид, сравним результаты со сторонней программой.

В неизвестной локации установлен навигационный приемник, принимающий сигналы GPS L1C/A и логирующий результаты этого приема в формате NVS BINR. Собранный на пятиминутном интервале файл приложен в архиве под именем BINR.bin, см. таблицу вариантов. Файл содержит наблюдения псевдодальностей и прочих радионавигационных параметров, демодулированные и разобранные данные навигационного сообщения.

Для удобства студентов данные демодулятора продублированы в текстовый файл in.txt. Каждая строка файла содержит данные одного сабфрейма одного навигационного сигнала в формате:

1 0 013 0R GpsL1CA  # 13         212130404  29 125  53 100010111010101010101010001010010111000011001010010111111000101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100101010101010101010101010111100

где # 13 - номер спутника, 212130404 - счетчик сабфреймов в сигнале, 53 - ID сабфрейма в навигационном сообщении, где в первых трех битах содержится номер сабфрейма в фрейме (5 в данном примере), а далее - номер фрейма в сообщении (6 в данном примере), 1000101110... символы с демодулятора в порядке возрастания времени слева направо.

Требуется:

  1. Разработать программу, обрабатывающую файл in.txt и выводящую в файл out.txt таблицу эфемерид для спутника согласно варианту в заданном формате.
  2. Обработать файл BINR.bin с помощью программы RTKNAVI из состава RTKLIB. Определить день и место проведения наблюдений, значения эфемерид для спутника согласно номеру варианта (меню открывается в левом нижнем углу экрана по нажатию на квадрат)
  3. Сравнить полученные таблицы
  4. Оформить код программы и разместить на Github
  5. Оформить отчет по этапу и разместить на Github
  6. Завести Pull Request

Программа должна компилироваться gcc, все входные данные брать из in.txt, весь вывод осуществлять в out.txt.

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

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

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

[править] Этап 2. Моделирование траектории движения

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

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

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

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

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

Вывести значения координат спутника в файл out.txt в системе ECEF WGS 84 в виде строк: Секунда_от_начала_дня X Y Z

Используя оценку местоположения с предыдущего этапа, построить Sky Plot за указанный временной интервал и сравнить результат с Trimble GNSS Planning Online.

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

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

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

[править] Этап 3. Реализация модуля расчета координат

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

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

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

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

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

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

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

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

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

Программа должна компилироваться gcc и использовать в качестве входных данных in.txt с первого этапа. Результат должен записываться в out.txt в строки формата, определенного на втором этапе. При тестировании должны сравниваться файлы out.txt второго и третьего этапов.

Работы по третьему этапу следует вести в директории libgpssvpos.

Правила приемки этапа те же.

[править] Курсовая прошлых лет

Задания в 2020, в 2021.

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

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