Многоканальный имитатор GPS - зачем он нужен? Все знают, как используются одноканальные: для тестирования навигационных приемников при разработке и производстве, для обмана систем навигации в мирное и военное время. А зачем нужны многоканальные?

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

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

Например, вы отлаживаете систему мониторинга стабильности конструкций (Structure Health Monitoring, SHM) на базе RTK. С помощью такого имитатора вы можете создать как сигнал RTK-базы, так и сигнал RTK-роверов на объектах с учетом модельной аварии конструкции и транслировать их на реальные приемники. Вам не нужно устанавливать систему на реально падающее здание или башню и ждать, когда все случится.

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

Или, например, у вас на летательном аппарате установлена система ориентации по навигационным сигналам и нужно ее протестировать на точность, на влияние помех на ее работу и на надежность работы при предельных углах крена и тангажа носителя. Если испытание на реальном носителе будет стоить дорого, то предварительная проверка системы на имитаторе будет очень полезна.

Для изготовления многоканального имитатора нам понадобится многоканальный синхронный синфазный (когерентный) передатчик на частоте навигационного сигнала. Можно качественно сформулировать требования к такому передатчику. К динамическому диапазону, линейности, побочным составляющим в спектре требования не будут жесткими. Хотя суммарный навигационный сигнал имеет сложную структуру, он не должен иметь большой уровень, соответственно, уровень побочных составляющих и линейность не имеют большого значения. Требования к точности воспроизведения фаз сигналов довольно высоки и их можно оценить, например, по требованию к точности систем ориентации: это единицы градусов. Эти требования должны выполняться в диапазоне температур и при заданных изменениях других параметров внешней среды. В системе желательно наличие возможность калибровки фазовых соотношений каналов и точная их корректировка. Хотя создание такой радио-системы решаемая задача, давайте поищем готовое решение.

На наше счастье, единственно правильное решение находится сразу: Xilinx RFSoC. Это система на кристалле (СнК) с программируемыми процессорной и логической частями и восемью или шестнадцатью каналами ЦАП с частотой дискретизации до 6ГГц каждый. Не будем вдаваться в теоретическую часть. За нас это уже сделали, даже на Хабре уже давно есть статья нашего уважаемого коллеги. Поиск в Сети также даст много пищи для вашего воображения. Перейдем к суровой практике.

В мире существует множество готовых плат с RFSoC. Цены на них, конечно, далеки от бюджетов энтузиастов. Вот некоторые примеры с ценами, где их удалось обнаружить:

Сами микросхемы "как бы" доступны для покупки, но цены на них больше цен на платы в разы.

Самое неприятное для российских инженеров, что доступ к этому буйству технологий для нас закрыт Госдепом США. Есть слухи, что избранным разрешен ввоз этих плат и микросхем для целей создания техники 5G, но тем горше это ограничение для нас, всех остальных. Свято место пусто не бывает, и сочится ручеёк RFSoC сквозь прозрачные границы нашей Родины, позволяя нам, неизбранным, прикоснуться к последним чудесам радиотехники. Так автору сотоварищи посчастливилось получить в руки некоторую плату с RFSoC и изготовить на ней многоканальный имитатор GPS. Здесь следует сразу на всякий случай заметить, что плату я получил случайно, и не факт, что мне это все не приснилось. Грешен излишними возлияниями.

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

Итак, берем программный генератор сигнала GPS L1 C/A (opensource) от prof. Takuji Ebinuma. В Сети можно найти множество описаний и примеров его использования, есть одно от меня. Легким движением руки @catscuryделает его многоканальным. Теперь генератор может выдать не один файл, а несколько, согласно описанию, например, такому:

{
  "Gps": {
    "Enable": true,
    "Snr_dbhz": 100
  },
  "Sources": [
  ],
  "PositionRx": [ 59, 30, 350 ],
  "SamplesFreqHz": 5000000,
  "Duration_s": 100,
  "Antennas": [
    [ 0, 0, 0 ],
    [ 1.3321, 2.5322, -1.1856 ],
    [ -1.3321, 2.5322, 1.1856 ]
  ],
  "Format": "int16",
  "Ephemeries": "brdc1650.21n",
  "Outfile": "iqdata.bin"
}

Для трех каналов по 100 секунд всего получается шесть гигабайт шестнадцатиразрядного комплексного сигнала на частоте дискретизации 5 МГц. Все, что теперь нужно, это "проиграть" эти файлы на частоте GPS L1 - 1575.42 МГц. Тогда @gaudima берет RFSoC и делает на нем "проигрыватель". Для этого был создан проект Vivado и софт для petalinux. В проекте задействуем модуль DDR4 на 8ГБ, подключенный к PL части RFSoC, как буфер для проигрываемого сигнала. Сначала софт настраивает все клоки и загружает сигнал в DDR, после этого PL часть читает его по кругу, интерполирует и отдает встроенному в RFSoC ЦАПу для излучения.

Блок-дизайн отвечающий за интерполяцию сигнала и его излучение выглядит так:

  • S_AXIS_DATA - данные идущие из DDR с частотой 5МГц;

  • fir_complier_0 - интерполяционный фильтр, 5МГц -> 250МГц;

  • axis_switch_0 - отключает фильтр при необходимости (интерполирует квадратным окном);

  • four_channel_splitter_0 - разбивает входную шину на 4 канала;

  • usp_rf_data_converter_0 - блок, который управляет АЦП и ЦАП, встроенными в RFSoC.

Настройки некоторых из этих блоков:

Когда все отлажено, берем любезно предоставленный нам для тестирования угломерный приемник (компас) K3X компании Фарватер, и с помощью уважаемого @Jef239 пытаемся увидеть работу угломера, а именно: определение углов пространственной ориентации, на столе. Напомню, что, так как такие угломерные приемники используют фазу несущей (режим RTK), то в реальных условиях для работы угломера нужно соблюсти некоторые условия. Во-первых, три антенны, которые подключаются к приемникам, должны быть не простые, а со стабильным фазовым центром. Во-вторых, в верхней полусфере не должно быть больших препятствий для прямого распространения волн со спутников. Последнее, к примеру, выполнить в большом городе получается не везде. На столе все сильно проще.

Подключаем выходы RFSoC ко входам угломера, запускаем генерацию, запускаем угломер. Нам нужно спешить, так как сейчас возможна длительность непрерывного излучения не более 100 секунд, а для сходимости угломерной задачи нужно время. Только для холодного старта позиционирования приемнику нужно не менее 30 секунд, чтобы получить из сигнала все нужные сообщения. После получения позиции по коду, угломеру еще нужно некоторое немаленькое время, чтобы сошлась его угломерная задача (я в этом плохо понимаю, обращайтесь к @Jef239в комментариях).

Для профессионалов, результаты тонких измерений имитатора (нуль база)

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

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

На графиках представлены вторые разности фаз. Можно увидеть, что разброс значений не превышает единиц градусов. За подробными объяснениями прошу обращаться к уважаемому @Jef239 в комментариях.

На входы угломера пришлось установить аттенюаторы, чтобы снизить SNR спутников до реального порядка - 50дБ/Гц.

После получения сходимости, угломер начинает выдавать углы ориентации.

Создадим три набора файлов c поворотами по разным осям: курсу, крену и тангажу.

Смещение на 180 градусов по курсу:

Смещение на 40 градусов по крену:

Смещение на 40 градусов по тангажу:

Все работает!

Теперь мы готовим испытания многоканального симулятора на помехозащищенном приемнике. Там мы добавим к сигналам спутников помехи и сможем задавать разное количество помех и их уровни относительно сигналов спутников и испытывать их влияние на приемник не вставая со стула.

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


  1. a_freeman
    11.09.2021 09:03
    +3

    Писец, понимаю, что испытывают люди читая мои статьи O_o

    А каким должно быть разнесение реальных антенн у угломерного приемника? Дециметр, метр, чем больше тем лучше?


    1. itsar Автор
      11.09.2021 09:05
      +3

      Как раз читал Вашу статью)

      С точки зрения точности угломера - чем больше, тем лучше.


      1. Jef239
        11.09.2021 12:13
        +1

        А время фиксации? :-)


        1. itsar Автор
          11.09.2021 12:29

          Юрий, с точки зрения времени фиксации все наоборот)


          1. Jef239
            11.09.2021 12:54
            +1

            Причем точность улучшается хуже, чем линейно (синусом), а время фиксации растет квадратично.


            1. itsar Автор
              11.09.2021 13:25

              Спасибо! Очень интересны эти нюансы


              1. Jef239
                11.09.2021 14:27
                +1

                Ну нюансов много. Компасу не важная дальняя многолучевость (на 1-2 порядка больше длины баз) — она одинаково влияет на антенны. С ближней неподвижной хуже, но если ближняя не затронет 5-6 спутников — можно перестроиться.

                А вот ближняя движущая многолучевость — это полная беда. А самая типичная многолучевость это… голова.

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

                Вот такая смешная была командировка — на полчаса работы.Дальше я пошел по музеям, а музей тракторов там замечательный.


    1. Jef239
      11.09.2021 12:08
      +4

      Вообще мы используем штатно 60 см. С одной стороны, точность RTK — 5-7мм СКО. То есть чем больше база — тем больше точность. С другой стороны — время фиксации (перехода от неточного плавающего решения к точному фиксированному) зависит от площади поверхности сферы, то есть растет как квадрат базы.

      Ещё тонкий момент — базу нужно выставлять точно, отклонение в длине базы на 5 мм уже критично — фиксироваться будет очень вяло. Поэтому на штатном морском компасе — жесткая база на 60 см.

      Фарватер РК-2306
      image


      1. ToSHiC
        11.09.2021 16:07

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


        1. Jef239
          11.09.2021 21:21
          +1

          Конечно. В этом корпусе обычно TW2405 + подстилающая. Но мы в том же корпусе смарт-антенны делаем (антенна + приёмник + процессор) с выходом по RTCM 3. Просто это корабельный корпус, рассчитанный на нахождение на мачте.

          А на испытания на автомобиль — мы обычно TW2410 ставим на магнитных держателях. Или антенны от автора статьи (itsar). Они немного лучше таллисмановских и немного дешевле. Тот редкий случай, когда импортозамещение улучшает характеристики.

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

          Так что технически — даже некоторые китайские антенны годятся. Собственно все, что годится для RTK — более, чем подходит. А вот конструктивно — лучше что-то большое.


      1. dernuss
        12.09.2021 11:07

        Можете пояснить момент, что значит базу нужно выставлять точно? Отклонение от чего?


        1. Jef239
          12.09.2021 11:52
          +1

          Вариантов два. Первый — выставляем магнитные антенны (ну скажем на крыше автомобиля). Мы должны повернуть антенны хвостиками в одну сторону и сделать так, чтобы расстояние между центрами антенн было точно как в конфиге, ± 1 мм.

          Второй — установили базы с какими-то длинами и измеряем их. Или рулеткой или записываем час измерений и меряем статически решением. Потом вносим базы в настройки.

          У спутникового компаса (угломера) быстрая фиксация по сфере. На прогретых приёмниках — часто по первой же эпохе измерений. Но для этого ему надо точно знать радиус сферы.


          1. dernuss
            12.09.2021 13:38
            +1

            Хм, а если использовать модули с RTK ядром внутри? например zed-f9p


            1. Jef239
              12.09.2021 14:55
              +1

              А что нам это даст, кроме сильного удорожания конструкции? Приёмник в 10 раз дороже, двухчастотная антенна для него в 2 раза дороже, а выигрыш в чем?

              Вы проверяли, ZED-F9P зафиксируется при ускорении в 2g? А это обычная ситуация на мачте во время качки. А ставить антенны ниже — нельзя, будет затенение.

              Можно проще. Выкинуть свой софт и поставить RTKLib. Собственно в ZED-F9P именно он и стоит. Мы сравнивали свой софт (не компасный, правда) с RTKLib на одних и тех же приёмниках. То есть GEOS-5MR у нас и GeoS-5 RTK у GeoStar. Выводы:

              1. Пятно на стопе у нас 5-7мм, у Геостара — 2-3 см.
              2. Там, где у нас индицируется сбой решения, у геостара тоже сбой, но не индицируемый.
              3. Время фиксации по базе неизвестной длины у Геостара лучше. НО! itsar недавно нашел причину — у нас плохо разведена ВЧ-часть на одной из плат, как раз той, что была на испытаниях. Так что исправим.


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


              1. dernuss
                12.09.2021 15:07

                Всё ниже и выше сказанное мной это просто вопросы из за отсутствия опыта в этом

                выигрыш в чем?

                не надо самому вычислять, ну и ZED-F9P вроде позиционируется как точный

                Вы проверяли, ZED-F9P зафиксируется при ускорении в 2g?

                нет конечно


                1. Jef239
                  12.09.2021 15:23
                  +1

                  Три ZED-F9P курс, крен, дифферент не дадут. То есть самим их вычислять нало, значит процессор все равно нужен. ZED-F9P -двухчастотник, то есть может работать с базами в сотни км (одночастотник — до 20 км). Точность RTK — примерно одинакова, что у дешевых приёмников. что у дорогих тримблов — 5-7мм СКО + 1 мм на километр длины базы.

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

                  Единственный момент, когда базы не жесткие — это испытания на крыше легковушки. А на крышу комбайна или грузовика уже ставится жестко, при помощи кронштейнов. Потому как главное — чтобы снег с антенн слетал и водой не заливало. А это означает довольно крупные антенны, которые с магнитного крепления сдует ветром.


                  1. dernuss
                    12.09.2021 15:26
                    +1

                    а что за проц для кинематики используете?


                    1. Jef239
                      12.09.2021 17:03

                      Разные были на разных платах. Сейчас от linux отказались, поэтому для компаса STM32F7 хватает. Но чаще ставится STM32H7 для универсальности платы.

                      Потроха судового компаса ныне выглядят так
                      image


                      P.S. А что, есть варианты? 8 ком-портов нужно и 512К встроенного ОЗУ. Что на рынке есть кроме F7/H7?


                      1. dernuss
                        12.09.2021 17:14

                        Я не знаю, там только пока курс нужен, поэтому используем 2 модуля. Навсякий спросил, надеялся что не stm32, так как с ними напряженка


                      1. Jef239
                        12.09.2021 17:23

                        Вам сотни экземпляров нужны? Вообще можно на любом linux-проце сделать. Просто это дороже будет.

                        Видимо дальше цены и объемы в личке обсуждать.


  1. AntonSor
    11.09.2021 09:35
    +3

    А вот интересно, с обычным HackRF такое сработает?


    1. itsar Автор
      11.09.2021 10:40
      +1

      Файлы симулятора он удачно воспроизводит в эфир, но многоканальность на нем не сделать


      1. NumLock
        11.09.2021 21:06

        Один HackRF на канал. Всё равно дешевле будет. Главное синхронно запустить.


        1. Jef239
          11.09.2021 21:47
          +1

          А как запускать синхронно? Допустимый шум 70 пикосекунд, лучше — до 7 пикосекунд, как у itsar. То есть выше на скринах по нульбазе уже непонятно — это шум приёмников или имитатора. А у вас там систематики вылезут.

          Мы в своем время пытались на трехканальном вариант СН-3803М работать. Ну и выяснили, что при каждом запуске у него разная межканальная задержка. То есть мы можем записать данные, выяснит эту задержку и решиться по записанным данным. А вот в реалтайме разрешиться — не можем. Только в два прохода.


          1. NumLock
            12.09.2021 14:40
            +1

            Hack RF можно управлять не только компом через USB. Там есть разъём напрямую. Можно попробовать использовать FPGA development board повесив несколько HackRF параллельно.


            1. itsar Автор
              12.09.2021 14:43

              ЦАП и ЦОС так засинхронизировать можно, а как сделать когерентными гетеродины?


              1. NumLock
                12.09.2021 21:50

                Внешний clock на синтезатор. Можно даже GPS-овский подать. На все платы одновременно.


                1. itsar Автор
                  12.09.2021 22:57

                  Так гетеродины будут только синхронны, но не синфазны.


      1. svpcom
        11.09.2021 22:02
        +1

        А LimeSDR? У него вроде все хорошо с многоканальностью


        1. itsar Автор
          11.09.2021 22:11
          +2

          До двух каналов у него есть многоканальность, а дальше нету)


  1. Sheferino
    24.09.2021 18:48
    +1

    Отличная статья, спасибо!

    А нет замысла добиться длительности больше 100 с? Всё таки для полноценных испытаний это очень мало, статистику не наберёшь. Если я правильно понял, надо лишь успевать читать и запихивать в RFSoC поток на скорости 60 МБ/с, что вполне реально для того же SSD.

    А если еще и поток на лету генерировать, а не с диска читать - тогда длительность вообще потенциально ничем не ограничена. Это будет уже конкурент промышленным имитаторам.

    И ещё есть пара вопросов, если позволите:

    1. Шум до 0.01 цикла на L1 грубо соответствует 2 мм, что при длине базы 60 см даёт шум по углу около 10 минут, что по современным меркам грубовато. А на реальном сигнале сколько показывает?

    2. В статье ничего не говорится про систематическую ошибку, только графики шума. Её не оценивали, или её не было?


    1. itsar Автор
      25.09.2021 10:09

      Спасибо за хорошие вопросы!

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

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

      По вопросам:

      1. Шум, по оценке @Jef239, действительно больше, чем нужно. Мы сейчас пересматриваем код имитатора, чтобы понять, у нас ли эта проблема. Если что-то будет найдено, и эту находку удастся превратить в статью на Хабре, Вы узнаете. Или можете связаться со мной в личке, чтобы я не забыл дать Вам знать.

      2. Систематическая ошибка фаз каналов есть. Мы сейчас делаем на этом RFSoC софт для многоканальной записи и видим ее в тракте АЦП. Систематические ошибки угломера при работе от нашего имитатора мы не оценивали. Я думаю, это нам самим пока не по силам.