Малые размеры наноспутников и требуемое малое энергопотребление их составляющих диктуют новые требования к технике, в частности, навигационной. На эти требования также накладываются внешние условия и характер движения наноспутника.

Сегодня мы сосредоточимся на спутниковых навигационных приемниках для наноспутников. Несмотря на то, что принципиально задача решена, и на рынке есть приемники, способные работать на низких орбитах, вопрос создания таких приемников еще остается актуальным. Текущие их стоимость, энергопотребление, помехозащищенность, способность работать в высокоточных режимах пока дают возможность создавать конкурентные изделия.

Для нашей страны создание таких приемников является еще более актуальной задачей, ввиду ограничений на поставку приемников, работающих на больших высотах и на больших скоростях. Госдеп США не отличает баллистические ракеты от наноспутников для связи или ДЗЗ.

Предположим, вы решили взяться за задачу создания навигационного приемника для наноспутника. С чего начать? Конечно же, с математического моделирования.

С точки зрения математики основное отличие в условиях приема на наноспутнике и на Земле - скорость движения. Скорость движения спутника по низким орбитам составляет единицы километров в секунду. Радиальная относительно источника сигнала скорость выражается в частотном смещении принимаемого сигнала, эффекте Допплера. Давайте посмотрим на поведение приемника, рассчитанного для работы на Земле, при скоростях движения, характерных для наноспутника.

Проверять будем программный приемник prof. Akos, который мы использовали во многих предыдущий статьях. Для начала проверим приемник на обычной для Земли самолетной скорости. Для этого создадим на нашем облачном GPS-имитаторе файл с сигналом. Имитатор мы раньше подробно описывали здесь. Конфигурация имитатора задается JSON-файлом. Для упрощения уберем все лишнее:

{
  "Gps": {
    "Enable": true,
    "Snr_dbhz": 50
  },
  "JammingSources": [
  ],
  "Receiver_llh": [
    59,
    30,
    350
  ],
  "SpeedRx_m_s": [
    300,
    0,
    0
  ],
  "SamplesFreq_hz": 5000000,
  "Duration_s": 1,
  "Antennas_m": [
    [
      0,
      1,
      0
    ]
  ]
}

Уберем источники помех, оставим одну антенну. В файле конфигурации появился новый раздел SpeedRx_m_s. Описание этого раздела очень простое: это составляющие вектора скорости в метрах в секунду. Сначала, для проверки приемника, зададим скорость по одной из осей 300 метров в секунду. Нажмем "Generate GPS", подождем и получим файл с сигналом. Пропишем файл в код программного приемника (файл initSettings.m):

settings.fileName  = 'C:\Users\itsar\Downloads\iqdata_ant_0.bin';

Запускаем. Что же выдаст процедура обнаружения? Все в порядке, найдено много сигналов спутников.

Рассмотрим подробнее отладочную информацию приемника по спутнику со средним уровнем корреляции - номер 8. Все замечательно!

Теперь давайте увеличим скорость.

  "SpeedRx_m_s": [
    1000,
    0,
    0
  ],

Следует заметить, что углы прихода сигналов спутников в точку приема разные, смещение частоты приема будет происходить по-разному для каждого сигнала. Может даже так оказаться, что радиальная составляющая скорости будет равна нулю и смещения частоты для этого спутника не будет. Понадеемся на русский авось.

Как видно, скорость 1000 метров в секунду приемнику нипочем.

Идем дальше, 7000 метров в секунду.

Здесь уже приемник плохо справляется. Поиск сигнала работает нормально, захват происходит и приемник начинает следить за сигналом, но петля слежения по задержке (Delay Locked Loop, DLL) не успевает следить за максимумом корреляции.

С коде приемника (файл initSettings.m) находим такие параметры:

%% Tracking loops settings ================================================
% Code tracking loop parameters
settings.dllDampingRatio         = 0.7;
settings.dllNoiseBandwidth       = 2;       %[Hz]
settings.dllCorrelatorSpacing    = 0.5;     %[chips]

% Carrier tracking loop parameters
settings.pllDampingRatio         = 0.7;
settings.pllNoiseBandwidth       = 25;      %[Hz]

Пробуем увеличить шумовую полосу в два раза, до четырех Герц.

settings.dllNoiseBandwidth       = 4;       %[Hz]

И видим, что приемник пришел в норму.

Вы можете проделать все это сами, не вставая из-за стола. Чистая математика.

Комментарии (14)


  1. vasimv
    06.11.2021 02:09
    +1

    А на восьми километрах в секунду какая точность будет? И какая вообще должна быть аппаратная часть, обычный SDR?


    1. itsar Автор
      06.11.2021 08:16

      Про точность я не могу сказать. Это вы можете сами промоделировать. Навскидку, точность будет не сильно хуже, чем на Земле.

      Обычный SDR подойдет для аппаратной части, но есть специализированные.


    1. Jef239
      07.11.2021 07:23
      +1

      Навскидку точность повыше будет, ибо спутников больше, нет тропосферы и ионосферы.

      Другой момент, что точность какого момента измерений? Спутник на низкой орбите за 1 мс пролетает 8 метров. Так что тут овпрос о задаче... Если узнать кооординаты и передать на Землю - ну вычислили координаты и момент измеренйи с тоность 3 нс относительно шкалы GPS, ну так и передали. На Земле так и учли.

      А если речь о сближении двух КА - ну надо понимать, что расхождение моментов измерения на двух космических аппаратах может быть 2 мс, то есть 16 метров вдоль орбиты. И как-то компенсировать это.


      1. Sheferino
        17.11.2021 17:30
        +1

        Практически не имею опыта в теме ГНСС на спутниках, но естественно готов порассуждать, как и всякий дилетант. На мой дилетантский взгляд точность лучше не будет.

        Да, тропосфера и ионосфера пропадут. А взамен получаем проблему релятивистских эффектов на потребителе . На земле они почти отсутствуют, их никто не учитывает, а вот на спутнике и скорость большая и гравипотенциал существенно меняется. А если ещё и эксцентриситет орбиты большой, то всё становится ещё сложнее.

        Также расширение полосы слежения ведь не бесплатное. За него придётся наверное шумом измерений расплачиваться. Интересно, скомпенсируется ли повышением сигнал/шума.

        Да плюс упомянутая проблема с привязкой измерений к шкале времени. Хотя наверное проблема невеликая, пусть 3 нс никакой приёмник не выдаст, но на 1 мкс можно рассчитывать смело, а это всего 8 мм, мелочь на фоне остального.


        1. Jef239
          18.11.2021 12:51
          +1

          Ну как не учитывают. Взгляньте в ICD GPS. В 3.1.1.1 - учет релятивистских эфектов от скорости спутника путём изменения частоты передатчика. В 20.3.3.3.3.1 - учет релятивистских эффектов от экцентриситета орбиты спутника.

          А с приёмником на спутнике все ещё проще. Дело в том, что релятивистский эфект это 4E-10 от частоты. А точность кварца в приёнике - 1E-5, ну 1E-6. То есть по сравнению с нестабильностью кварца - это мизер.

          Расширение полосы нужно лишь до момента определения векторов скорости и ускорения. Как только мы их вычислили - мы можем сузить полосу, просто перестаривать её по движению спутника.

          Тут самое тяжкое - не пассажирский самолет и не ракета, а автомобиль и мачта судна. На мачте в шторм вообще ускорения порядка 2g, причем с точки зрения приёмника - не предсказуемое. А на автобиле есть такая вещь, как дрифт, с тем же ускорением до 2g. И чтобы во время дрифта приёмн не срывался - приходится ставить самолетную динамику, рассчитанную на истребители.

          Так что спутник, летящий абсолбтно прелшсказуемым образом по орбите - это очень простая дмнамика. Её вполне можно учесь в кольцах слежения.

          Да плюс упомянутая проблема с привязкой измерений к шкале времени. Хотя наверное проблема невеликая, пусть 3 нс никакой приёмник не выдаст, но на 1 мкс можно рассчитывать смело 

          Ну внутри кода (RTK) у нас точность порядка 15-20 пикосекунд СКО, вопрос лишь как выдать её наружу.

          А насчет 1мкс - это вы не поняли проблему, батенька.

          Вот смотрите. Приёмник измеряет координаты и время 1 раз в секунду. Тут есть два разных параметра. Первый - насколько точно мы узнаем момент измерений. А вот второе - какое расхождение между моментами приёма двух приёмников.

          Так вот, типовая схема - это вычисления момена приёма по собственному кварцу, а потом, после отклоеения на 1-2 мс - скачок с перестройкой шкалы до упора в обратную сторону. То есть у нас будут измерения в 1.99992, 2.99991, 3.99990, а потом в 5.00100, 6.00099, 7.00098.

          Как видите - тут уход кварца 10 мкс за секунду, то есть 1E-5. Скчаок шкалы при этом будет примерно раз в 200 секунд.

          Примерно по такой схеме работают приёмники НАВИС, НИИКП, Ublox....

          Это не так страшно, просто коооординаты, выданные прёимником, нужно корректировать при помощи вектора скорости на нужный момент времени.


          1. Sheferino
            19.11.2021 16:22
            +1

            Да про релятивизм на НКА понятно, я про релятивистские эффекты на потребителе говорю. Но я тут на пальцах прикинул, ошибка частоты из-за эксцентриситета орбиты 1е-10, что конечно несущественно для обычных ширпотребных опорных генераторов.

            По полосе слежения согласен, можно жить и с такой динамикой.

            А насчет 1мкс - это вы не поняли проблему, батенька.

            Вот смотрите. Приёмник измеряет координаты и время 1 раз в секунду. Тут есть два разных параметра. Первый - насколько точно мы узнаем момент измерений. А вот второе - какое расхождение между моментами приёма двух приёмников.

            Так вот, типовая схема - это вычисления момена приёма по собственному кварцу, а потом, после отклоеения на 1-2 мс - скачок с перестройкой шкалы до упора в обратную сторону. То есть у нас будут измерения в 1.99992, 2.99991, 3.99990, а потом в 5.00100, 6.00099, 7.00098

            Да эта проблема понятная, но что про неё говорить то, это и не проблема вовсе. Во-первых, нет никаких проблем пересчитать положение на нужную эпоху, ведь положение шкалы нам известно. Во-вторых никто не мешает поставить кварц постабильнее (хотя бы в 10е-7) и перестраиваться по порогу 10 мкс. Это недорого и решает проблему в корне. Я говорил про другое.

            Я говорил о том, что траектория в широком смысле - это не только точки (x,y,z), это ещё и момент времени, в который объект в этой точке находился. Так вот, если вы ошибаетесь по шкале на 1 мс (именно ошибаетесь, без возможности оценить эту ошибку изнутри системы, например из-за ГВЗ в тракте от антенны до АЦП), то получив координаты в момент t0 как (x0,y0,z0), вы на самом деле получаете координаты в момент времени t1 = t0 -1 мс. А координаты в момент времени t0 отличаются от вычисленных на 7 м при скорости 7 км/с. Существенная ошибка, которую вы с точки зрения приёмника не можете оценить самостоятельно, никакое RTK не поможет. Другое дело, что если всё правильно делать, то 1 мс это очень много, вполне реально добиться погрешности на два-три порядка меньше. Поэтому и написал, что тоже мелочь.


            1. itsar Автор
              19.11.2021 16:29

              Сделать такую ГВЗ (1мс) в ВЧ-части или в ПЧ даже намеренно очень сложно, а случайно и подавно. 1 мкс уже более близка к физике.


              1. Sheferino
                19.11.2021 16:50

                Да можно, сам видел. Понятно, что это или какое-то невероятное стечение обстоятельств, или невероятно кривые руки, но факт остаётся фактом.


  1. Yakamoz
    06.11.2021 10:28
    +1

    а о каких высотах и частотах идет речь? ионосфера не будет оказывать влияние?


    1. itsar Автор
      06.11.2021 10:29

      Высоты орбит у Cubesat обычно 500-700 км. Специалисты точно скажут.

      Там уже нет ионосферы, что должно быть лучше для точности.


  1. Buhram
    15.11.2021 23:37
    +1

    Распространенные приемники на чипсете MT3333 подходят для работы на подобных скоростях, при условии переработки софта?


    1. itsar Автор
      18.11.2021 09:00

      Я думаю, что принципиальных препятствий нет. Один только вопрос: а исходники софта открыты для модификации?


      1. Jef239
        18.11.2021 13:21
        +1

        Скорее всего закрыты, там вполне себе готовый приёмник, а не чипсет. Может кому из производителей и разрешат их модифицировать, но для покупателей - явно не выложат.


      1. Buhram
        18.11.2021 14:55
        +1

        Это так, чисто гипотетический вопрос :)
        Скорее всего, в исходниках вообще есть конструкция типа:
        if ((speed >= 500) || (altitude >= 18000)
        {
        output_data.validity = FALSE;
        output_data.speed = 0;
        output_data.altitude = 0;
        }

        Столкнулся с ситуацией, когда приёмник перестал работать на определенной высоте. После уточнения у производителя оказалось что действительно, у него есть не задокументированные ограничения. Проблема решилась новым бинарником прошивки от производителя.