¿Cómo se decodifican los marcos de posición de superficie ADS-B?

Estoy desarrollando un código C# que lee 1090ES Automatic Dependent Surveillance - Broadcast (ADS-B).

Los mensajes de posición ADS-B emitidos por el transmisor ADS-B de la aeronave tienen una codificación diferente dependiendo de si la aeronave está en el aire o en tierra.

Cuando decodifico marcos de posiciones aerotransportadas como posiciones codificadas de informes de posición compactos (CPR), obtengo resultados realistas. Sin embargo, cuando decodifico el CPR para cuadros de posición de superficie, las posiciones que obtengo están muy lejos (geográficamente) de lo que debería obtener.

¿En qué se diferencian los mensajes de posición CPR en la superficie de los mensajes de posición en el aire y cómo se decodifican correctamente?

¿Un valor demasiado alto para qué parámetros?
Lo siento, fue incorrecto escribir "valor demasiado alto", edité "posición demasiado alejada de lo que debería obtener". Ahora acabo de descubrir en una biblioteca de C# que puede haber diferencias en los cálculos de los tipos de marcos de Surface/Airbone.
¿Por qué se pone esto "fuera de tema". Ads-B es un sistema de posicionamiento estándar en la aviación. El sitio incluso tiene una etiqueta para ello.
Tal como lo veo, en realidad es tanto software como aviación.
Si lo ves más claro, sí, está bien que vuelvas a escribir la pregunta. Supongo que tendré un paso de validación, no estoy seguro, sucede algunas veces. Pero está bien.
@TTT Lo reescribí, pero no creo que obtenga el paso de validación ya que mi número de repeticiones es lo suficientemente alto como para que el sistema confíe en mí. Sin embargo, verifique y cambie la redacción como mejor le parezca.
Gracias. Acabo de cambiar la primera línea porque. No es extremadamente importante pero, aunque mi código C# decodifica marcos Ads-B, no estoy escribiendo literalmente un "decodificador".

Respuestas (1)

La codificación del informe de posición compacto (CPR) en los squiters de superficie es diferente de la codificación del CPR aerotransportado. La resolución es 4 veces mejor (~1,25 m en lugar de ~5 m), a costa de perder los 2 bits más significativos.

Debido a esto, la decodificación de la posición de la superficie global da una solución ambigua. IIRC la solución puede estar en 4 puntos del globo, tienes que seleccionar el más cercano a ti. Y debe validar que está dentro de un rango realista, como debe hacer con la decodificación Airborne CPR. Después de validar la posición usando la decodificación global en un par de pares de squiter impares, puede usar la decodificación local más eficiente. Por supuesto, al igual que con la decodificación de Airborne CPR, debe protegerse contra los saltos de posición y los intervalos de tiempo en su algoritmo de decodificación.

¿Quiere decir que debería hacer 4 decodificaciones de RCP "locales" y elegir la que esté más cerca de mi punto de referencia? ¿Cuáles son esos puntos? Contexto: estoy trabajando dentro de un rango de un máximo de unos pocos kilómetros desde algún punto de referencia. Realmente no sé cómo hacer decodificaciones de CPR locales. Hasta ahora, la única decodificación de RCP que conozco está inspirada en inst.eecs.berkeley.edu/~ee123/sp15/lab/lab2/rtadsb.py
Tal vez podría obtener inspiración de esta función cpr_resolve_local con mi ubicación de referencia. ¿Es eso lo que debo hacer? (Implementar esto en mi solución de C# puede llevar algo de tiempo, así que prefiero estar seguro de que estoy en el camino correcto).
Puede buscar en RTCA DO-260B o EUROCAE ED-102A, apéndice A 1.7 y apéndice T. Consulte también esta pregunta . Me gustaría escribir una explicación más detallada si tengo tiempo, pero no espere que sea pronto.
Ah gracias. Sugerí a mis colegas que compráramos DO-260B. Pero hasta ahora prefieren confiar en las búsquedas de Google...
Si está tratando de construir algo serio, le recomiendo comprar DO-260B o ED-102A (son efectivamente lo mismo, elija el más barato).