Cкорости сетей и вычислительные возможности компьютеров непрерывно и быстро растут. Это делает реализуемыми и экономически оправданными некоторые приложения из мира радио. Говоря философскими категориями, количество переходит в качество, и на стыке отраслей появляются невиданные доселе технологии. Сегодня мы не только расскажем об одной из них, каждый из вас сможет опробовать ее самостоятельно.
Недавно нам посчастливилось запустить многоканальный имитатор GPS и проверить его на устройстве наших уважаемых коллег. Подробно об этом читайте в статье "Многоканальный имитатор сигнала GPS на RFSoC". Кратко - мы взяли существующий открытый код имитатора GPS от prof. Takuji Ebinuma, сделали его многоканальным и выдали на ВЧ с помощью RFSoC. И оно заработало!
Многоканальный имитатор нужен нам для отладки алгоритмов помехозащищенного приема спутниковых навигационных сигналов. Один из таких алгоритмов описан нами в этой статье. Для отладки алгоритмов нам нужны не только сигналы спутников, но и помехи, приходящие с разных направлений и имеющие разные уровни. Отсчеты помехи должны быть добавлены к отсчетам сигналов спутников с заданной разницей в уровнях.
Конфигурация имитатора задается файлом JSON. Разберем простейшую конфигурацию имитатора.
{
"Gps": {
"Enable": true,
"Snr_dbhz": 50
},
"JammingSources": [
],
"Receiver_llh": [
59,
30,
350
],
"SamplesFreq_hz": 5000000,
"Duration_s": 10,
"Antennas_m": [
[
0,
1,
0
]
]
}
"Gps" - тип сигнала, сейчас это только GPS, сигнал включен ("Enable" : true) и задано его отношение сигнал-шум (SNR) - 50 dB-Hz;
"JammingSources" - описание источников помех, рассмотрим позже;
"Receiver_llh" - географические координаты приемника;
"SamplesFreq_hz" - частота дискретизации выходного сигнала в Герцах;
"Duration_s" - длительность выборки в секундах;
"Antennas_m" - описание геометрии антенной решетки в виде координат антенн в метрах. Для простоты рассмотрения в файле выше задана одна антенна.
Мы использовали имитатор для создания модельных сигналов и возносили хвалу его разработчикам. Нас несколько удручала необходимость наличия мощного компьютера. Имитатор для одной помехи и одного канала загружает примерно одно ядро хорошего процессора, чтобы работать в реальном времени. Нам приходится моделировать алгоритмы для восьмиэлементных антенных решеток с большим количеством помех, что выливалось в немалое время ожидания результатов имитатора.
Тогда усилиями @catscury имитатор был перенесен в облако - cloud.amungo-navigation.com. Интерфейс сайта прост и понятен интуитивно. Здесь нужно зарегистрироваться и сгенерировать файл(ы) сигнала, задав файл конфигурации имитатора. Файл конфигурации доступен в онлайн редакторе. Его можно сохранить, чтобы в следующем сеансе загрузить в систему. В случае ошибки в файле конфигурации или в случае выхода за ограничения имитатора, выдаются подсказки. Когда конфигурация заполнена правильно, нужно нажать кнопку "Generate Gps". После продолжительного (будьте терпеливы) старта, начинается скачивание файлов.
Получив файл с сигналом с расширением bin, его можно проверить программным приемником от prof. Dennis Akos. Вы также можете загрузить файл в любую подходящую SDR-плату для передачи в эфир.
Теперь рассмотрим, как задать параметры, которые делают этот облачный имитатор уникальным. Антенная решетка задается так:
"Antennas_m": [
[
0,
0,
0
],
[
1,
0,
0
],
[
0,
1,
0
]
]
Здесь заданы координаты антенн в метрах относительно координат приемника, заданных в поле Receiver_llh. Напомним, что это географические координаты в формате <широта, долгота, высота>.
Если не задавать помеху сколь-нибудь значительного уровня, то выходные файлы имитатора можно использовать для генерации на высокой частоте с целями тестирования систем спутниковой ориентации, как было описано здесь. Вы также можете использовать эти файлы для тестирования систем высокоточного позиционирования RTK. Для файла, сгенерированного без помех, программный приемник выдает такую картинку:
Для помехи задаются ее координаты и мощность. Координаты задаются в географическом ("PositionType": "llh") или в декартовом виде ("PositionType": "neu") в метрах относительно Receiver_llh. Мощность задается в линейном масштабе напряжений, как амплитуда. Это значит, что для увеличения помехи на 20 дБ нужно увеличить значение в 10 раз. Грубо говоря, это напряжение или напряженность поля, которая обратно-пропорциональна расстоянию от источника излучения. В имитаторе учитывается затухание сигнала в соответствие с расстоянием до приемника. С этой точки зрения задание мощности помехи амплитудой довольно удобно. Если мы увеличили расстояние до источника помехи в N раз, то в N раз нужно увеличить амплитуду, если мы хотим, чтобы мощность помехи на входе приемника сохранилась прежней.
"JammingSources": [
{
"AmplitudeGain": 5,
"PositionType": "llh",
"Position": [
60,
30.5,
450
]
},
{
"AmplitudeGain": 5,
"PositionType": "neu",
"Position": [
1000,
-3000,
50
]
}
],
Во фрагменте конфигурации, представленном выше, задано две помехи одинаковой мощностью на 14 дБ выше шума. Кстати, при таком значении помехи используемый нами программный приемник еще обнаруживает сигнал спутников, хотя и со снижением SNR. Координаты первой помехи заданы в географическом виде, второй - в декартовом North-East-Up в метрах. Внутренние параметры приемника, работающего под помехой, представлены ниже. Чтобы справляться с более большими помехами, понадобятся алгоритмы, подобным тем, что мы рассматриваем в этой статье.
Следует отметить, что сигнал сохраняется в целочисленном комплексном виде с разрядностью 16 бит на составляющую. Указанный выше программный приемник "из коробки" настроен на такой сигнал с частотой дискретизации 5МГц. Нужно только указать имя файла с сигналом на входе.
Сейчас имитатор имеет некоторые ограничения. Например, нельзя установить большое число каналов и помех и большую длительность выборки. Это сделано, чтобы мы не вылетели в трубу из-за "облачных" счетов.
Мы просим всех, кто станет пользоваться облачным имитатором, сообщать нам о проблемах, неполадках и своих пожеланиях. Мы кое-что знаем про радио, но новички в облачном деле, нам нужно еще поучиться у специалистов. Любые советы приветствуются.
Комментарии (8)
trak
17.10.2021 09:41+1Так. Вопрос. А это легально, если я это дома запущу, чтобы pokemonGo бегал кругами ?
itsar Автор
17.10.2021 09:46+1Генерировать файлы - легально. Это простая математика. Излучать - нелегально. Хотя есть разные мнения.
Мы занимаемся разработкой, и нам без таких моделей нельзя. Takuji Ebinuma свой имитатор делал не для покемонов и не для водителей грузовиков. Это чистая математика, которую запретить не получится.
Jef239
18.10.2021 04:44Уровень эфирных сигналов GPS — в 100 раз меньше уровня фонового шума. Так что берете ГОСТ Р 51318.22-99 "Совместимость технических средств электромагнитная РАДИОПОМЕХИ ИНДУСТРИАЛЬНЫЕ ОТ ОБОРУДОВАНИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ" и не нарушаете.
Но, ей богу, уровня помех от компа вам хватит с миллионным запасом.
Serge78rus
17.10.2021 12:30+3Грубо говоря, это напряжение или напряженность поля, которая обратно-пропорциональна расстоянию от источника излучения. В имитаторе учитывается затухание сигнала в соответствие с расстоянием до приемника. С этой точки зрения задание мощности помехи амплитудой довольно удобно. Если мы увеличили расстояние до источника помехи в N раз, то в N раз нужно увеличить мощность, если мы хотим, чтобы мощность помехи на входе приемника сохранилась прежней.
Почему затухание пропорционально расстоянию, а не его квадрату? Или я что-то неправильно понял?
ITTF1994
доступно и понятно изложено, спасибо автору
itsar Автор
Я рад, что понравилось! Попробуйте имитатор.