Как декодируются кадры данных о местоположении на земле ADS-B?

Я разрабатываю код C #, который читает 1090ES Automatic Dependent Surveillance - Broadcast (ADS-B).

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

Когда я декодирую кадры данных о местоположении в воздухе как положения, закодированные в компактных отчетах о местоположении (CPR), я получаю реалистичные результаты. Однако, когда я декодирую CPR для кадров положения на поверхности, позиции, которые я получаю, далеки (географически) от того, что я должен получить.

Чем CPR в сообщениях о местоположении на земле отличается от сообщений о местоположении в воздухе и как они правильно декодируются?

Слишком высокое значение для каких параметров?
Извините, было неправильно написать «слишком высокое значение», я отредактировал «слишком далекая позиция от того, что я должен получить». Теперь я только что узнал из какой-то библиотеки С#, что могут быть различия в вычислениях типов фреймов Surface/Airbone.
Почему это ставится "не по теме". Ads-B — стандартная система позиционирования в авиации. На сайте даже есть тег для этого.
Как мне видится, это на самом деле и софт, и авиация.
Если вы видите это яснее, да, все в порядке, что вы переписываете вопрос. Я предполагаю, что у меня будет шаг проверки, не уверен, это происходит несколько раз. Но хорошо.
@TTT Я переписал его, но я не думаю, что вы пройдете этап проверки, так как количество моих повторений достаточно велико, чтобы система могла мне доверять. Тем не менее, пожалуйста, проверьте и измените формулировку по своему усмотрению.
Спасибо. Я просто изменил первую строку, потому что. Не очень важно, но, хотя мой код C# декодирует кадры Ads-B, я буквально не пишу «декодер».

Ответы (1)

Кодирование компактного отчета о местоположении (CPR) в наземных сквиттерах отличается от кодирования бортового CPR. Разрешение в 4 раза лучше (~1,25 м вместо ~5 м) ценой потери 2 старших битов.

Из-за этого глобальное декодирование положения на поверхности дает неоднозначное решение. IIRC решение может быть в 4-х точках земного шара, вы должны выбрать ближайшую к вам. И вы должны подтвердить, что он находится в пределах реалистичного диапазона, как вы должны сделать с декодированием бортовой СЛР. После того, как вы подтвердили положение с помощью глобального декодирования на паре пар четных и нечетных сквитеров, вы можете использовать более эффективное локальное декодирование. Конечно, как и в случае с декодированием СЛР в воздухе, вам необходимо защититься от скачков положения и временных промежутков в вашем алгоритме декодирования.

Вы имеете в виду, что я должен сделать 4 «локальных» декодирования СЛР и выбрать тот, который ближе всего к моей контрольной точке? Что это за точки? Контекст: я работаю в диапазоне максимум нескольких километров от какой-то контрольной точки. Я действительно не знаю, как делать локальные декодирования CPR? Пока единственная известная мне расшифровка CPR основана на inst.eecs.berkeley.edu/~ee123/sp15/lab/lab2/rtadsb.py.
Возможно, я мог бы получить вдохновение от этого github.com/bistromath/gr-air-modes/blob/master/python/cpr.py , функции cpr_resolve_local с моим эталонным местоположением. Это то, что я должен делать? (Реализация этого в моем решении C# может занять некоторое время, поэтому я бы предпочел быть уверенным, что я на правильном пути.)
Вы можете посмотреть в RTCA DO-260B или EUROCAE ED-102A, приложение A 1.7 и приложение T. См. также этот вопрос . Я хотел бы написать более подробное объяснение, если найду время, но не ожидайте, что это будет в ближайшее время.
Ах, спасибо. Я предложил коллегам купить ДО-260Б. Но пока они предпочитают полагаться на поиск в Google...
Если вы пытаетесь построить что-то серьезное, я настоятельно рекомендую купить DO-260B или ED-102A (они фактически одинаковы, выбирайте самый дешевый).