Implementación en Matlab de sistemas de control de vuelo on-line para FlightGear
m |
m |
||
Línea 1: | Línea 1: | ||
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 [http://www.flightgear.org 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 [http://www.flightgear.org FlightGear]. | ||
+ | ==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 [http://wiki.flightgear.org/flightgear_wiki/index.php?title=Property_Tree á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: | 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 [http://wiki.flightgear.org/flightgear_wiki/index.php?title=Property_Tree á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: | ||
Línea 8: | Línea 9: | ||
[[image:fg_arbol_propiedades.png|300px| Acceso al arbol de propiedades de FlightGear desde un navegador]] | [[image:fg_arbol_propiedades.png|300px| 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 <code>urlread(url)</code> 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 | ||
+ | <pre> | ||
+ | s = urlread('http://localhost:5400/position/altitude-ft'); | ||
+ | [ini,fin]=regexp(s,'value="-?\d+.?\d+"'); | ||
+ | y = str2num(s(ini+7:fin-1)); | ||
+ | </pre> | ||
+ | |||
+ | ==== 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 | ||
+ | <pre> | ||
+ | s = ['http://localhost:5400/controls/flight/elevator?value=' num2str(u)], | ||
+ | urlread(s); | ||
+ | </pre> |
Revisión de 14:38 3 dic 2007
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);