К моему удивлению, предыдущую статью приняли достаточно тепло. Сегодня продолжим рассмотрение этого вопроса.



Меры по борьбе с помехами

В навигации уровень шума всегда превышает уровень сигнала. Для определения уровня помехи (отношение помеха/сигнал, J/S ratio) считают, насколько помеха превышает уровень шума. Далее рассмотрены методы увеличения помехоустойчивости приёмников вместе с максимальной помехой, против которой эти методы являются эффективными.



1. Увеличение полосы сигнала (до 10 дБ);
2. Увеличение мощности передатчика на КА (до 20 дБ);
3. Комплексирование навигационных приёмников (до 30 дБ);
4. Использование цифровых аппаратных фильтров (до 40 дБ);
5. Использование частотно-временной коррекции (до 50 дБ);
6. Использование антенных методов (до 70 дБ);

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



Комплексирование навигационных приёмников не позволяет значительно увеличить помехоустойчивость навигационного приёмника. Это объясняется тем, что инерциальные навигационные системы (ИНС) не подвержены влиянию радиотехнических помех и имеют высокую точность измерений в краткосрочной перспективе. Однако ошибка определения навигационных параметров накапливается с течением времени и требует коррекции от ГНСС. Выше изображена схема, где при помощи фильтра Калмана производится комплексирование навигационного приёмника.

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

Среди цифровых фильтров выделяют две категории:

1. Рекурсивные фильтры (с бесконечной импульсной характеристикой);
2. Нерекурсивные фильтры (с конечной импульсной характеристикой).

А что выбрать?

Вопрос выбора сильно зависит от доступной аппаратуры. Оптимальными с точки зрения сложности реализации и стоимости конечного устройства являются цифровые фильтры. В навигационных приёмниках можно найти как БИХ-, так и КИХ-фильтры. У КИХ-фильтров есть преимущество в виде возможности создания фильтра с линейной ФЧХ и, вследствие этого, постоянной групповой задержкой. Это означает, что различные частотные составляющие будут задержаны на одинаковое количество тактов при прохождении фильтра. Однако, при использовании БИХ-фильтра можно добиться гораздо более узкого окна режекции и суммарно меньшей переходной полосы при том же порядке фильтра.

Как оно работает?

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



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

Пару слов о моей разработке



Передо мной стояла задача в существующей структуре навигационного приёмника на базе СБИС 1879ВЯ1Я производства НТЦ «Модуль» разработать подавитель. Если вкратце рассказать об этой аппаратно-программной платформе, то можно выделить:

1. 4 12-битовых АЦП с частотой дискретизации 81.92 МГц;
2. Ядро ARM1176;
3. 2 DSP-ядра NeuroMatrix, имеющих векторно-матричный перемножитель, способный успешно распараллеливать операции с малоразрядными величинами;
4. Аппаратный блок предварительный обработки сигналов (БПОС).



Остальные детали можно найти на сайте, сейчас больше внимания уделим БПОС-у. Общая схема приёмника приведена выше. Он содержит антенну, аналоговый тракт (например, ГЛОНАСС L1, но сейчас это не играет роли), АЦП, цифровые каналы и сигнальный процессор. БПОС содержит 24 цифровых канала, 12 из которых имеют доступ к трём блокам КИХ-фильтров. Каждый из блоков содержит 4 КИХ-фильтра 64-го порядка с 8-битными коэффициентами. Внутри одного блока фильтры могут быть коммутированы последовательно или параллельно для реализации от одного до четырёх подавителей. Цифровые каналы содержат цифровой гетеродин, ФНЧ, дециматор (для понижения частоты дискретизации), а также нормализатор. В сигнальном процессоре (NeuroMatrix, не ARM), происходит работа алгоритмов обнаружения помех, расчёта коэффициентов аппаратных фильтров, корреляционная обработка и петли слежения (ФАП и ССЗ).

При использовании фильтра 128-го порядка с 16-битными коэффициентами удалось достигнуть работоспособности приёмника при воздействии узкополосной помехи мощностью 67 дБ, находящейся в главном лепестке спектра сигнала.

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

Небольшой апдейт

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



А так же выход согласованного фильтра для этих спектров:



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

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


  1. soniq
    19.01.2016 02:08
    -11

    Пап, ты с кем сейчас разговаривал?


    1. Meklon
      19.01.2016 09:35
      +12

      Нет чтобы порадоваться таким нечастым отличным статьям на хабре…


  1. IronHead
    19.01.2016 10:44
    +1

    А если помеха широкополосная? При современном уровне развития техники сделать генератор белого шума на весь диапазон частот GPS не составляет труда. Ждал второй части в надежде, что будут открыты какие то секреты приема навигационной информации в обход помех.


    1. NelSon29
      19.01.2016 12:43
      +1

      Широкополосные помехи тоже бывают разные. Например, вы привели белый шум. Создать шумовую помеху в полосе GPS такой мощности, чтобы подавить работоспособность приёмников очень непросто. Именно из-за структуры шума. В качестве широкополосных помех применяют, например, ЛЧМ-сигнал, проходящий весь диапазон L1 за 0.1-1 мс.

      Против подобных помех эффективны антенные методы, однако я слышал о разработках, когда в приёмнике формируется копия помехи и компенсируется.

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


      1. Nick0las
        20.01.2016 01:20
        +1

        Позвольте поинтересоваться, почему гауссов шум обрезанный до полосы приемника будет значительно менее эффективен чем ЛЧМ? Это некая особенность ЛЧИ что она легко срывает слежение?


        1. NelSon29
          20.01.2016 01:32
          +1

          Потому что при генерации шум занимает очень большую полосу, т.е. мощность передатчика тратится на частоты, не находящиеся в полосе ГНСС. А при генерации ЛЧМ-сигнала крайние частоты задаются в явном виде, так что никакой магии и особенностей. :)


          1. Nick0las
            20.01.2016 01:40
            +1

            А еси сделать передатчик который шумит только в нужной полосе, например промодулировав центральную несущую белым шумом с полосой равной половине ширины ГНСС?


            1. NelSon29
              20.01.2016 13:41
              +1

              Чисто технически это сделать сложнее. Нужно сгенерировать шум, пропустить через фильтр, перенести на несущую, ещё разок отфильтровать. ЛЧМ сделать проще и, соответственно, дешевле


  1. sguwenka
    19.01.2016 11:43
    +1

    Круто конечно! И приятно читать, что такие интересные вещи реализуются на отечественной ЭБ.

    Почему реализация помехоподавителя именно на этой микросхеме? Куча параллельных каналов — почему не ПЛИС?

    Ну и раз уж всё делается на ARM11, — то такой вопрос: какую ОСРВ использовали? Оценивали загрузку ЦП и БПОС? Я так понимаю, хоть навигационное решение выдаётся 1-10 раз в секунду, но ведь за помехами-то следить надо гораздо чаще — в режиме реального времени. Если не ошибаюсь, то битовая скорость сигналов ГНСС — около 512 бит/с, то есть ~2мс/бит. Какая скорость решения задачи получилась — в 2мс укладываетесь?


    1. NelSon29
      19.01.2016 13:00
      +1

      Энергопотребление и размер. Аппаратная платформа в статье — это уже готовый приёмник. В сети есть предложения по созданию приёмников на ПЛИС, но они много потребляют, требуют дополнительного обвеса и вычислителя (того же RPi или Intel Edison). К тому же, есть успешные попытки создания 12-канальных приёмников без фильтров, а фильтры в кремнии занимают достаточно много места.

      А вот тут вы недоглядели, задача целиком и полностью решается на DSP, т.е. на Нейроматриксе. Таким образом, ARM остаётся свободен и незадействован.

      За помехами нужно следить в реальном масштабе времени, но это достаточно делать раз в секунду, не чаще, да и то по косвенным признакам (например, по резкому падению отношения сигнал/шум всех спутников). Если эта проверка показала возможное наличие помехи, срабатывает алгоритм обнаружения в частотной области с дальнейшим расчётом параметров подавителя.

      Есть несколько составных частей сигнала, к которым в ГНСС может относится понятие битовая скорость: псевдослучайная последовательность, меандр (для ГЛОНАСС), а так же навигационное сообщение. Про ПСП обычно говорят про частоту чипа (одного импульса), она составляет 511 1023 кГц для ГЛОНАСС и GPS соответственно. Тут происходит корреляционная обработка. Далее в ГЛОНАСС'е есть меандр, который меняет знак каждые 5 мс. Его вводили, как дополнительную меру помехоустойчивости, но, если честно, я так и не понял зачем, а проблем при обработке сигналов он добавляет. И есть навигационное сообщение, каждый бит которого длится 20 мс. Вот их нежелательно пропускать.

      Отвечая на ваш вопрос: сейчас алгоритм обнаружения помех, расчёта коэффициентов и записи их в регистры БПОС'а происходит за 10-12 мс. Если векторизовать код, а также отказаться в паре мест от плавающей точки (что не было сделано из лени), то можно будет уложиться в 1 мс


      1. sguwenka
        20.01.2016 11:13

        Интересно, спасибо! А я думал, с помехами бороться надо как с потоком воды в реке — а тут, 1 раз в секунду рубанули, и снова забыли :)


  1. Zolg
    19.01.2016 12:44
    +1

    А насколько реализуем «простой» аналоговый спуфинг? принимаем сигнал со спутников, вносим задержки, усиливаем, переизлучаем. Манипулируя величинами задержек можем ничего не зная о кодировке сигнала (выделять сигнал конкретного спутника можно направленной антенной) как угодно манипулировать координатами в рамках видимых спутников.


    1. NelSon29
      19.01.2016 13:13

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

      Спуфинг это именно имитация и синтез созвездия спутников, это сделать гораздо сложнее, чем просто переизлучить сигнал. :)


      1. Zolg
        19.01.2016 14:47
        +1

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


        1. NelSon29
          19.01.2016 15:49
          +1

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


          1. Zolg
            19.01.2016 17:13
            +2

            Что с одним спутником не сработает, это понятно.
            Идея в том, чтобы такую операцию проделать со ВСЕМИ видимыми спутниками. Не так их и много.

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

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

            Приемник с холодным стартом подвоха увидеть не должен вообще.

            Как противодействовать этому?


            1. NelSon29
              19.01.2016 17:24
              +2

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

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


  1. alexkalmuk
    19.01.2016 15:09
    +1

    Классно! Хорошая тема.

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

    Скажите, а Вы решали обе задачи — с узкополосными помехами и спуфингом? Было бы интересно побольше узнать как обнаруживается спуфинг на практике (там же вряди ли согласованный фильтр сработает?). И какие предположения делаются про отношение сигнал/шум?

    И еще один вопрос. На картинке с фильтром Калмана помимо екомпаса и гироскопа еще есть датчик давления. Интересно, для чего он там? :)


    1. NelSon29
      19.01.2016 15:43
      +1

      Лично я решал задачу лишь с узкополосными помехами, по спуфингу изучал литературу. Есть коллега, который этим занимался подробнее, могу у него уточнить на этот счёт.

      Картинку взял из интернета для иллюстрации того факта, что используется множество MEMS-датчиков. Датчик давления служит для определения высоты.


      1. qbertych
        20.01.2016 01:14
        +1

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


        1. NelSon29
          20.01.2016 01:27
          +2

          Конечно. Есть очень интересный труд, совмещающий в себе как описание помех, так и подробное толкование методов подавления: GNSS Interference Threats and Countermeasures — Fabio Dovis. Можно найти на google books.

          По работе при наличии помех есть статья GNSS Signal Acquisition in The Presence of Narrowband Interference — Mohammad Abdizadeh. Достаточно новая (конец 2013 года) и обширная (более 200 страниц).

          Это из основных. Вкратце описано в Каплане (монументальный труд по GPS, находится по первому запросу в гугле). Если после прочтения этих материалов останутся вопросы, то уже более конкретные, а для этих целей уже служат различные технические статьи и патенты


  1. Nick0las
    20.01.2016 01:25
    +1

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


    1. NelSon29
      20.01.2016 01:29
      +1

      Верно понимаете, при текущей конфигурации фильтр спокойно подавляет не только однотоновые помехи, но и узкополосные сигналы (АМ-, ЧМ-, ФМ-модулированные). Помимо этого, если полоса помехи больше (50-100 кГц), то она просто определяется как несколько рядом стоящих с соответствующим расширением окна подавления


      1. NelSon29
        20.01.2016 01:39
        +1

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


  1. mahowik
    21.01.2016 01:00

    День добрый!

    Подскажите как найти задержку координат выдаваемых приемником (ГПС/ГЛОНАСС модулем)? Не нашел этого в спеках к модулю.
    Но это нужно для того что бы свести данные от ИНС с координатами приемника, т.е. найти ошибку (и коррекцию соот-но) координат между расчетным от ИНС и координатами на выходе модуля.

    Я пробовал след-е решение:
    1) синхронизируем часы ПК с атомными часами (посредством спец. утилит… погрешность пару мс)
    2) читаем время с приемника через послед-й порт или USB (задержку порта не учитивал, т.к. интересен результат хотябы с точностью до 100-150мс)
    3) находим разность между атомным временем и данными с приемника

    Тут есть не ясные моменты касательно времени выдаваемого приемником:
    1) учитывается ли время прохождения сигнала от спутника до приемника (~65мс), т.е. есть ли компенсация этой задержки во времени которое отдает приемник.
    2) Приемник отдает кооординаты и время одним пакетом. Так вот это время получения сигнала/пакетов со спутников (по которым расчитывались координаты)? Или приемник пытается выдать атомное время на выходе (т.е. с учетом коррекции на прохождения сигнала от спутников и обсчета координат)?
    3) Потоянна ли задержка выдачи координат? На одном из модулей наблюдал раность задержки в ~100мс до 3Д фикса и после.

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

    А возможно все проще. Подскажите ))


    1. NelSon29
      21.01.2016 17:33

      Это очень обширная тема, но если вкратце, то всё зависит от самого используемого модуля. В приёмниках идёт синхронизация с часами системы с последующим выводом координат раз в какое-то время (см. Navigation Rate. Обычно 1-10 Гц).

      По вопросам:
      1) Расчёты производятся на момент измерения, а не излучения. Таким образом проблемы, о которой вы говорите, нет.
      2) Приёмник выдаёт показания часов по собственной шкале времени. В зависимости от сложности приёмника, эта шкала может корректироваться различным образом: от одиночной коррекции при первом решении нав. задачи, до постоянного слежения за скоростью ухода часов при помощи скоростной задачи. Это очень глубокая тема, на неё написано множество научных работ и с наскоку в неё не получится погрузится.
      3) Ответ вытекает из предыдущего пункта: постоянна по внутренней шкале времени приёмника.


      1. mahowik
        21.01.2016 18:30

        Спасибо!

        Если я правильно понял «моим» методом задержку выдачи координат не высчитать.

        Тогда вижу другой топорный путь :) Закинуть модуль в машину и погонять записывая логи акселерометра и приемника и уже по графикам примерно выщемить задержку :)


  1. mahowik
    23.01.2016 04:07

    прокатит? :)