Implementación en Matlab de sistemas de control de vuelo on-line para FlightGear
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:
Una vez ejecutado, el árbol de propiedades estará accesible vía http (con cualquier navegador) en localhost el en el puerto seleccionado
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);