Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет НИР_Боронин_6_М.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
546.35 Кб
Скачать

Санкт-Петербургский государственный политехнический университет

Кафедра «Радиотехника и телекоммуникации»

ОТЧЕТ

ПО НИР

Тема: Моделирование обнаружителя сигналов GPS в средах Matlab и RAD Studio XE3

Выполнил студент гр. 3092/1 (подпись) С.В.Боронин

Руководитель, проф., д.т.н. (подпись) И.А.Цикин

«_____» ___________2014г.

Санкт - Петербург

2014

Содержание

Введение………………………………………………………………………………………………………3

Цели и задачи…………………………………………………………………………………………………4

1. Особенности сигналов ГНСС……………………………………………………………………………..5

2. Реализация модели обнаружителя в среде Matlab……………………………………………………….8

3. Реализация модели обнаружителя в среде RAD Studio………………………………………………..11

4. Заключение………………………………………………………………………………………………..14

5. Литература………………………………………………………………………………………………...15

5. Приложения……………………………………………………………………………………………….16

Введение

В последнее время все более активно развивается сфера БПЛА (беспилотных летательных аппаратов). Возможности, которыми они обладают, позволяют решать широкий круг задач – от геодезии и картографии до военных целей. При столь быстром развитии высокотехнологичного производства и совершенствовании технологий, БПЛА являются безупречной заменой ПЛА (пилотируемых летательных аппаратов). Важнейшей составляющей функционирования таких аппаратов является их географическое и пространственное позиционирование. На данный момент большое распространение получило решения задачи позиционирования при помощи сигналов ГНСС (глобальной навигационной спутниковой системы).

В ГНСС GPS и ГЛОНАСС высокие эксплуатационные характеристики реализуются путем совместного функционирования трех основных сегментов:

  • космического сегмента;

  • сегмента управления;

  • сегмента потребителей.

Космический сегмент представляет собой созвездие НКА, движущихся по шести круговым орбитам. Орбиты наклонены к плоскости экватора под углом 55’, угол между плоскостями орбит 60’. НКА движется на высоте 20180 км. Период обращения НКА 11ч 58 мин.

Рис. 1 - Орбитальная структура системы GPS NAVSTAR

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

Сегмент потребителей состоит из приемников и некоторых дополнительных устройств, таких как антенны, интерфейс взаимодействия с исполнительными устройствами, а также вспомогательного программного обеспечения. В простейшем случае приемник получает от НКА навигационные данные, встроенный вычислитель решает навигационную задачу и выводит пользователю значения координат [1]. В навигации большее распространение получило деление GPS приемников на «кодовые» и «фазовые». В первом случае, для вычисления позиции используется информация о времени прихода сигнала, определяемая путем согласованной фильтрации передаваемого с НКА дальномерного кода. К этой категории относится большинство недорогих GPS навигаторов, стоимостью от нескольких сотен до тысяч долларов. Вторая категория навигационных GPS приемников использует, кроме того, еще и фазу несущего сигнала. В большинстве случаев это дорогостоящие одно- и двухчастотные (L1 и L2) геодезические приемники, способные вычислять позицию с точностью в несколько сантиметров и даже миллиметров. Относительное позиционирование производится с использованием как минимум двух навигационных приемников, где один из них является базовой станцией и располагается в точке с известными координатами. Такая точность достигается в RTK режиме (совокупность приёмов и методов получения плановых координат и высот точек местности сантиметровой точности с помощью спутниковой системы навигации посредством получения поправок с базовой станции, принимаемых аппаратурой пользователя во время съёмки), при совместной обработке измерений GPS приемника и данных базовой станции. Стоимость таких устройств может составлять десятки тысяч долларов [4].

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

Цели и задачи

Целью данной работы является исследование методов обнаружения навигационных сигналов от НКА ГНСС GPS.

Достижение данной цели требует решение следующих задач:

  • моделирования процесса обнаружения в среде Matlab,

  • программной реализация обнаружителя в среде RAD Studio

  • поиск лучших параметров для работы алгоритма обнаружения.

Вся работа по данной теме разделена на две части. Первая часть связана с созданием модели обнаружителя сигналов ГНСС в среде Matlab, а вторая с реализацией этих моделей на языке С++ в программном продукте для ОС Windows. Matlab позволяет осуществлять более глубокий анализ модели и получать удобные для восприятия визуализированные результаты. После отработки методов, лежащих в основе работы обнаружителя, они переносятся на С++, так как этот язык позволяет реализовать эти методы максимально приближенно к существующему устройству определения пространственной ориентации БПЛА, реализованного на DSP TMS320С6455. Основная цель разработки приложения – отладка работы алгоритмов, используемых в устройстве на DSP TMS320С6455, так как качество результатов анализа и гибкость подходов к исследованию методов непосредственно в устройстве гораздо ниже, чем при работе с программными средствами.

Особенности сигналов ГНСС GPS

Все элементы ГНСС GPS строго синхронизированы и имеют привязку по пространственно-временным координатам. Бортовая шкала времени формируется «атомными часами» расположенными на борту НКА (нестабильность составляет около 10-13). Часы работают на основной частоте 10.23 МГц (она используется для генерирования информационных сигналов) и являются эталоном времени для всех навигационных сигналов, излучаемых НКА. Расхождение времени с эталонным значением и неточности синхронизации выявляются и устраняются наземным сегментом управления [1].

Бортовой передатчик НКА постоянно производит излучение несущих волн, которые находятся в L-полосе (используемой для радиопередач) и образуются из основной частоты, генерируемой атомными часами:

  • несущая L1 имеет значение 1575.42 МГц (10.23 X 154)

  • несущая L2 имеет значение 1227.60 МГц (10.23 X 120)

  • несущая L5 имеет значение 1176,45 МГц (10.23 X 115)

ГНСС GPS производит постоянное беззапросное излучение радиосигнала, что позволяет приемнику получать навигационную информацию в любой момент времени. Несущая L1 модулируется двумя кодами: C/A кодом (Coarse Acquisition code - грубый код), имеющим тактовую частоту следования импульсов 1.023 MГц (10.23/10) и Р-кодом (Precision code - точный код), имеющим тактовую частоту следования импульсов 10.23 MГц. Несущая частота L2 модулируется только P-кодом. Код, используемый для модуляции несущей L2, выбирается наземными командами. Сформированные сигналы C/A кода, совмещённого с навигационными данными (C/A код + данные, далее обозначаемые как C + D) и P(Y) кода, совмещённого с навигационными данными (P(Y) код + данные, далее обозначаемые как Р + D), поступают на два модулятора, в котором получившиеся последовательности модулируют несущую частоту [3].

Каждый НКА имеет свой индивидуальный дальномерный код, по которому его идентифицирует приёмник. При этом P – код является основным и представляет собой последовательность длиной 7 дней со скоростью передачи 10.23 Мб/, которая формируется из двух подпоследовательностей X1 и X2j (где j – индивидуальный номер НКА) путем помодульного сложения. Их длина 15 345 000 и 15 345 037 элементов соответственно. Для генерации кода используются 4 регистра. Два из них объединяются для генерации подпоследовательности X1. X2j формируется из двух других регистров задержкой на длительности от 1 до 37 элементов. Это позволяет сформировать 37 индивидуальных последовательности P-кода, из которых 32 используется на НКА, а остальные зарезервированы для других нужд.

Y – код или P(Y) – код применяется вместо P-кода для возможности использования режима предотвращения преднамеренных помех. В этом режиме структура кода известна только лицензированным пользователям [3]. На данный момент Р код в основном зашифрован, поэтому интерес представляет, прежде всего, C/A код, который генерируется тем же путем, что и P-код, за исключением того, что для этого используется 2 регистра.

В процессе обработки принятых от НКА сигналов, производится измерение псевдодальностей – расстояний между НКА и приемником, вычисленных по времени распространения сигнала без учета поправки к расхождению часов НКА и приемника [1]. Результаты данных измерений используются для определения координат объекта в пространстве. Для решения этой задачи необходимо наличие сигналов как минимум от четырёх НКА, что позволяет скомпенсировать отстройку часов приемника от системного времени ГНСС. Поскольку для решения задачи имеются четыре неизвестных величины: координаты (X, Y, Z) и отстройка часов h пользователя от системного времени ГНСС, то выполнив измерение задержек этих сигналов относительно времени их излучения с четырех НКА, мы получим систему четырех уравнений, решение которой позволит определить эти неизвестные величины [2].

Указанные двоичные C/A и Р коды передаются на несущей частоте с помощью процесса, называемого модуляцией. Модуляция (лат. modulatio — размеренность, ритмичность) — процесс изменения одного или нескольких параметров высокочастотного несущего колебания по закону низкочастотного информационного сигнала (сообщения). Элементы последовательностей C/A и Р кодов могут принимать значения только 1 или -1. Каждый раз в момент изменения значения кода изменяется фаза несущей.

Рис. 2 - модулирование несущей псевдослучайным кодом

В данном случае мы используем сигнал с квадратурной фазовой манипуляцией. При квадратурной фазовой манипуляции (англ. QPSK — Quadrature Phase Shift Keying или 4-PSK) используется созвездие из четырёх точек, размещённых на равных расстояниях на окружности. Используя 4 фазы, в QPSK на символ приходится два бита, как показано на рисунке.

Рис. 3 – фазовое созвездие для квадратурной ФМ

Иногда QPSK проще рассматривать в виде двух независимых модулированных несущих, сдвинутых на 90° типа BPSK (Двоичная фазовая манипуляция (англ. BPSK — binary phase-shift keying)). При таком подходе чётные (нечётные) биты используются для модуляции синфазной составляющей I , а нечётные (чётные) — квадратурной составляющей несущей Q . Так как BPSK используется для обеих составляющих несущей, то они могут быть демодулированы независимо.

Реализация модели обнаружителя в среде Matlab

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

Итак, имеется файл с записанным в него набором чисел – значений комплексной огибающей сигнала, пришедшего на приемную антенну. Структура файла такова, что на нечетных местах записи стоят вещественные части комплексного числа, а на четных – мнимые. Преобразуем исходный файл в массив комплексных значений. Пусть запись содержит p отсчетов, тогда: , где – значение n-ого отсчета комплексной огибающей, – значение отсчета, лежащего в файле ( ), где p = * количество периодов + 1 – длина исходного файла (для решения поставленной задачи достаточно считать первые 11 периодов сигнала). Таким образом, получается массив, содержащий значения комплексной огибающей сигнала – An. Длина этого массива в два раза меньше длины массива, считанного из исходного файла. Теперь мы можем анализировать его содержимое.

  1. В первую очередь мы избавляемся от допплеровского сдвига при помощи функции doppler_ident.m, (Приложение B). В ней реализован алгоритм, по которому мы формируем массив значений комплексной экспоненты для каждого частотного смещения в заданных пределах по следующему правилу:

  • формируем массив со значением фазы сигнала. . Причем, формируется целый массив длиной, равный длине An.

  • возводим экспоненту в степень

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

  1. После этого исходный массив An преобразуется путем того же домножения на комплексную экспоненту с учетом найденного допплеровского смещения. Далее производится очередное нахождение взаимной корреляционной функции сигнала с опорным сигналом. В результате таких операций получается массив значений комплексной огибающей кор.фукнции - Kn.

  2. Далее массив Kn обрабатывается функцией searchSput.m (Приложение С), в которой происходит анализ, результатом которого есть вывод о том, обнаружен НКА или нет. Этот анализ основывается на сравнении рассчитанного для получившегося массива Kn т.н. «показателя качества», о котором речь пойдет далее, с некоторым заранее установленным пороговым значением. Если показатель качества сигнала не ниже установленного порога, то делается вывод об обнаружении сигнала НКА.

Одной из причин, по которой сигнал от НКА не может быть обнаружен – низкое отношение сигнал/шум. В данной функции реализуются два типа метода борьбы с шумами – когерентное и некогерентное накопление массива Kn. В первом случае происходит амплитудное (по модулю), а во втором – комплексное попериодное сложение значений свертки соответственно. Так как шумы имеют случайную природу, то при сложении когерентным образом, шумовая составляющая складывается по мощности, так как каждое значение случайно, а полезный сигнал складывается когерентно. В результате такого сложения отношение сигнал/шум увеличивается. В то же время при использовании некогерентного сложения, происходит сложение и шума и составляющей полезного сигнала по абсолютной величине, что также приводит к увеличению отношения сигнал/шум, но при когерентном накоплении это отношение выше.

Для обоих методов после каждой итерации суммирования проверяется отношение среднеквадратичного значения по всем отсчетам суммы std и максимума M. Теперь введем показатель качества q (может изменяться от 0 до 1). Если , следует вывод, что сигнал НКА обнаружен, иначе – нет. Эти действия повторяются для каждого из 32 НКА. Для каждого из них формируется свой C/A код, с которым и происходит сравнение входного сигнала.

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

Таблица 1

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

Рис. 4

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

Рис. 5

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

Реализация модели обнаружителя в среде RAD Studio

Дальнейшая работа будет производиться в среде быстрой разработки приложений (RAD) для Microsoft Windows фирмы Embarcadero Technologies - RAD Studio XE3, в которой будут реализованы методы обнаружения НКА, проанализированные в предыдущем пункте.

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

Рис. 6 - Окно формы

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

При запуске программы, перед нами появляется форма (рис.4). Для выполнения программы, отвечающей за обнаружение сигналов НКА, необходимо поставить галочку в пункте «Обнаружение» в верхнем правом углу формы. После этого нажатием клавиши «Begin» запускается программа, и во вкладке Log мы сможем увидеть информацию по НКА – номера НКА, чьи сигналы были обнаружены, позицию максимума в корреляционной функции и качество сигнала в процентах.

Теперь подробно рассмотрим работу программы. При выборе пункта «Обнаружение» программа запускает ветвь программы, отвечающую за поиск сигналов НКА: if(CheckBox_search->Checked) mode = SignalThread::search. После нажатия клавиши «Begin» запускается алгоритм поиска.

Аналогично алгоритму, описанному на языке Matlab, считывается файл, содержащий значения комплексной огибающей сигнала. Структура файла такова, что значения синфазной и квадратурной составляющей хранятся в памяти один за другим. Применив преобразование типов из int (4 байта на символ) в Complex16 (4 байта вещественная составляющая и 4 байта мнимая) мы получаем массив из комплексных значений inData. Далее этот массив поступает в цикл, выполняющий 32 итерации по поиску сигнала от каждого из 32 НКА. Сначала выполняется поиск допплеровского сдвига функцией RawDoppler (Приложение G) аналогично реализации в Matlab, за тем лишь исключением, что комплексная экспонента формировалась путем представления ее через сумму косинуса и синуса (формула Эйлера). В цикле перебора допплеровского сдвига производятся следующие операции. Функция Mult (Приложение G) выполняет поэлементное перемножение. В данном случае – сигнала и комплексной экспоненты. Далее результат произведения поступает в функцию Corr (Приложение G), которая выполняет свертку отстроенного на частоту, соответствующую данной итерации цикла, сигнала и сгенерированного CA – кода. После этого производится поиск максимального значения массива, поступившего из функции Corr. Так находится максимум для каждого допплеровского смещения и по наибольшему из них делается вывод о том, на какую частоту сместился сигнал от несущей.

Далее вновь генерируется экспонента с фазой, соответствующей допплеровскому сдвигу, и умножается на массив inData функцией Mult. После этого производится поиск корреляционной функции сигнала и CA – кода и передача ее в функцию searchSput (Приложение G), которая в свою очередь производит когерентное накопление сигнала и сравнение среднеквадратичного значения по всему массиву со значением указанного нами показателя качества в процентах. Стоит заметить, что в результате накопления получился файл длиной в один период. Нахождение качества осуществляется методом GetPeak класса IntMath. Результатом работы являются выведенные в Log функцией searchSput данные по каждому спутнику: номер, вывод об обнаружении, качество, позиция максимума корреляционной функции.

Рисунок 1 – результат работы программы

Заключение

Путем имитационного моделирования в среде MATLAB были проанализированы методы обнаружения сигналов от НКА, основанные на когерентном и некогерентном накоплении результатов согласованной фильтрации указанных сигналов. После анализа основных параметров обнаружителя была произведена его реализацией на языке С++ с последующим внедрением в программный продукт для ОС Windows.

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