Implementación en Matlab de sistemas de control de vuelo on-line para FlightGear

De ISAwiki

En esta página se describe cómo diseñar un sistema de control de vuelo on-line para el simulador de vuelo de código abierto FlightGear.

Tabla de contenidos

Habilitación del acceso a las variables de vuelo

Para poder diseñar sistemas de control de vuelo es necesario tener acceso (de lectura y/o escritura) a variables del simulador. Esto es posible a través del árbol de propiedades de FlightGear, que es accesible a través del localhost en el puerto que se especifica a través de la instrucción en línea de comandos. Por ejemplo, puede habilitarse en el puerto 5400 invocando a FlightGear con las siguientes opciones:

Opciones en FlightGear

Una vez ejecutado, el árbol de propiedades estará accesible vía http (con cualquier navegador) en localhost el en el puerto seleccionado

Acceso al arbol de propiedades de FlightGear desde un navegador

Acceso a las variables de vuelo desde Matlab

Acceso de lectura

Aunque existen procedimientos más eficientes, una vez habilitado el acceso vía http se puede acceder desde matlab (versión 7) a cualquier propiedad utilizando la función urlread(url) para leer la página dinámica generada por el simulador y luego "parseándola" mediante expresiones regulares para quedarnos con el valor de la variable. Por ejemplo, para leer el valor y de la altitud

s = urlread('http://localhost:5400/position/altitude-ft');
[ini,fin]=regexp(s,'value="-?\d+.?\d+"');
y = str2num(s(ini+7:fin-1));

Acceso de escritura

El acceso de escritura puede hacerse utilizando la sintaxis del protocolo http. Por ejemplo, para asignar un valor u a la posición del elevador

s = ['http://localhost:5400/controls/flight/elevator?value=' num2str(u)],
urlread(s);


Control

Mediante estos procedimientos es posible acceder, tanto para lectura como para escritura, a cientos de variables de vuelo disponibles en el árbol de propiedades. La principal limitación de esta forma de acceso es el tiempo de acceso. De forma orientativa, es posible conseguir dos lazos SISO independientes (leer dos variables y escribir otras dos) con periodos de muestreo del orden de 1 segundo en una máquina con procesador intel core 2 duo con sistema operativo mac os x. Esto es más que suficiente para desarrollar sistemas de control de altitud, inclinación, etc. ya que las dinámicas del avión son bastante más lentas.

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Tipos de páginas
Bloques temáticos
Herramientas