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

De ISAwiki
(Diferencia entre revisiones)
m (Acceso de lectura)
m (Acceso de escritura)
Línea 60: Línea 60:
 
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
 
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>
 
<pre>
s = ['http://localhost:5400/controls/flight/elevator?value=' num2str(u)],
+
function fg_escribir(url,v)
 +
% FG_LEER Escribe una variable del árbol de variables de FlightGear
 +
%
 +
%
 +
% ENTRADAS
 +
%    url: Dirección url de la variable (string)
 +
%      v: Valor de la variable que se quiere escribir (float)
 +
%
 +
%
 +
% DESCRIPCION
 +
% Escribe una variable de FlightGear dada la
 +
% dirección url de la variable en el árbol de variables (disponible en
 +
% localhost en el puerto que se haya indicado en la opcion de línea de
 +
% comandos del programa principal de FlightGear).
 +
%
 +
%
 +
% Algunas URL típicas (usando como opción '--httpd=5400' al llamar a
 +
% FlightGear)
 +
%
 +
%  http://localhost:5400/orientation/roll-deg
 +
%  http://localhost:5400/controls/flight/aileron
 +
http://localhost:5400/controls/flight/elevator
 +
%  http://localhost:5400/position/altitude-ft
 +
%
 +
% La estructura completa del árbol de propiedades puede consultarse en:
 +
%
 +
%    http://wiki.flightgear.org/flightgear_wiki/index.php?title=Property_Tr
 +
%    ee 
 +
 
 +
s = [url '?value=' num2str(v)];
 
urlread(s);
 
urlread(s);
 
</pre>
 
</pre>
 
  
 
== Control ==
 
== 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. 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.
 
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. 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.

Revisión de 14:11 5 dic 2007

Página en construcción...


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

function v = fg_leer(url)
% FG_LEER Lee una variable del árbol de variables de FlightGear
%
%
% ENTRADAS
%    url: Dirección url de la variable (string)
%
% SALIDAS
%      v: Valor de la variable tras la consulta (float)
%
% DESCRIPCION
% Lee una variable de FlightGear a partir de la
% dirección url de la variable en el árbol de propiedades (disponible en
% localhost en el puerto que se haya indicado en la opcion de línea de
% comandos del programa principal de FlightGear). 
%
%
% Algunas URL típicas (usando como opción '--httpd=5400' al llamar a
% FlightGear)
%
%   http://localhost:5400/orientation/roll-deg
%   http://localhost:5400/controls/flight/aileron
%   http://localhost:5400/controls/flight/elevator
%   http://localhost:5400/position/altitude-ft
%
%
% La estructura completa del árbol de propiedades puede consultarse en:
% 
%    http://wiki.flightgear.org/flightgear_wiki/index.php?title=Property_Tree  
%

s = urlread(url);
[ini,fin]=regexp(s,'value="-?\d+.?\d+"');
v = 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

function fg_escribir(url,v)
% FG_LEER Escribe una variable del árbol de variables de FlightGear
%
%
% ENTRADAS
%    url: Dirección url de la variable (string)
%      v: Valor de la variable que se quiere escribir (float)
%
%
% DESCRIPCION
% Escribe una variable de FlightGear dada la
% dirección url de la variable en el árbol de variables (disponible en
% localhost en el puerto que se haya indicado en la opcion de línea de
% comandos del programa principal de FlightGear). 
%
%
% Algunas URL típicas (usando como opción '--httpd=5400' al llamar a
% FlightGear)
%
%   http://localhost:5400/orientation/roll-deg
%   http://localhost:5400/controls/flight/aileron
%   http://localhost:5400/controls/flight/elevator
%   http://localhost:5400/position/altitude-ft
%
% La estructura completa del árbol de propiedades puede consultarse en:
% 
%    http://wiki.flightgear.org/flightgear_wiki/index.php?title=Property_Tr
%    ee  

s = [url '?value=' num2str(v)];
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. 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