Creo que he descubierto accidentalmente una necesidad en mi vida para los sistemas embebidos. Lo cual es genial. Y un poco aterrador. Y necesito ayuda.
Antecedentes : Me contrataron para construir una aplicación GUI que toma escaneos de dos SICK LMS-291 y los integra con un GPS de precisión inferior a una pulgada, para que sepa dónde se ha producido cada exploración. Como programador web ingenuo que soy, entendí que la sincronización sería importante, ¡pero no me di cuenta de que también sería difícil! Si no sabes cuándo ocurrió cada punto GPS y cada escaneo, no puedes averiguar dónde ocurren los escaneos. Oops.
Habían especificado windows 7 como plataforma, así como comprado un SeaLevel RS422 a USB para conectar los sensores y el GPS, y en poco tiempo descubrí mi locura. En algún lugar entre los sensores y mi programa informático, algo impedía que los escaneos llegaran a tiempo. El LMS escupe 75 escaneos por segundo, es decir, a 13,32 m/escaneo. Mi programa no los recibe de manera oportuna. Los recibe cada 100 milisegundos más o menos, en grupos de 7 u 8 o 10 o algo así. Además, a veces no aparecen suficientes escaneos, o se estropean. O bien este adaptador SeaPort sólo envía diez veces por segundo (¿es posible? No sé cómo funciona el USB) o bien Windows no comprueba el búfer (debe haber un búfer en alguna parte, ¿no?) con suficiente frecuencia.
Actualidad : Esto lleva a algunas inexactitudes con las que el cliente está básicamente de acuerdo. Sin embargo, yo no lo estoy, y ya que tengo la oportunidad de hacer un trabajo similar para el cliente (¡integrando más entradas de sensores!), me gustaría averiguar cómo hacerlo bien, por ejemplo, dada la precisión del GPS, ser capaz de dar garantías sobre la precisión y exactitud de las ubicaciones de los escaneos.
¿Qué aspecto tiene eso? Necesito una interfaz de usuario, y ser capaz de comprobar la entrada de estos tres dispositivos cada 13,32 milisegundos. Si utilizo FreeRTOS con, digamos, Nano-X para la interfaz gráfica de usuario, ejecutado en un ordenador portátil que ellos proporcionan, ¿suena eso como una solución sana? ¿Es posible que el adaptador RS-422 a USB esté causando estos retrasos, y que el uso de Windows esté bien para este propósito?