Continuamos una serie de artículos sobre la automatización del rendimiento de las acrobacias aéreas en un pequeño UAV. Este artículo tiene, en primer lugar, un objetivo educativo: aquí mostramos cómo crear el sistema de control automático (ACS) más simple utilizando el ejemplo de la tarea de realizar las acrobacias aéreas de "barril" cuando se controla un avión solo con alerones. Este artículo es el segundo de una serie de publicaciones "Flight UAV", que habla sobre el proceso de construcción de partes de hardware y software de armas autopropulsadas en forma de entrenamiento.

Enlace al artículo anterior del ciclo:
1. "Vuelo UAV. Cómo hacer un barril "Contenido:
IntroduccionModelo de movimientoParámetros del modelo. Momento de inerciaParámetros del modelo. Derivados del momento de balanceoVerificación del modeloSíntesis de control para el rendimiento del barrilExperimento de vueloObservacionesConclusionesIntroduccion
Entonces, decidimos implementar el “barril” en modo automático. Obviamente, para la ejecución automática de una figura, es necesario formular la ley de control correspondiente. El proceso de inventar será mucho más sencillo y rápido si usa un modelo matemático del movimiento de la aeronave. Probar la ley de control en un experimento de vuelo, aunque es posible, requiere mucho más tiempo y puede ser mucho más costoso en caso de pérdida o daño del dispositivo.
Dado que en pequeños ángulos de ataque y deslizamiento de la aeronave, su desplazamiento a lo largo del desplazamiento prácticamente no está conectado con el movimiento en otros dos canales: pista y longitudinal: para hacer un simple "barril", será suficiente construir un modelo de movimiento solo alrededor de un eje: el eje
OX del SK conectado. Por la misma razón, la ley de control de alerones no cambiará significativamente cuando se trata de crear un sistema de control completo.
Modelo de movimiento
La ecuación de movimiento de la
aeronave alrededor del eje longitudinal
OX del SC asociado es extremadamente simple:
Ix dot mathrm omegax=Mx,
donde
Ix Es el momento de inercia sobre el eje
OX , y el momento
Mx consta de varios componentes, de los cuales para una descripción realista del movimiento de nuestro avión es suficiente considerar solo dos:
Mx=M omegaxx omegax+M deltaax deltaa,
donde
M omegaxx omegax - el momento debido a la rotación de la aeronave alrededor del eje
OX (momento de amortiguación),
M deltaax deltaa - el momento debido a la desviación de los alerones (momento de control). La última expresión se escribe en forma linealizada: momento de balanceo
Mx linealmente dependiente de la velocidad angular
omegax y ángulo de desviación del alerón
deltaa con coeficientes de proporcionalidad constante
M omegaxx y
M deltaax en consecuencia
Como sabes (por ejemplo, de
Wiki ), una ecuación diferencial lineal
Ix dot mathrm omegax=M omegaxx omegax+M deltaax deltaa
corresponde al enlace aperiódico de primer orden
W= frackTp+1,
donde
W - función de transferencia,
p - operador de diferenciación,
T Es el tiempo constante, y
k - ganancia.
¿Cómo pasar de una ecuación diferencial a una función de transferencia?En nuestro caso, desde los parámetros de la ecuación hasta los parámetros de la función de transferencia, podemos proceder de la siguiente manera (sabiendo que la derivada
M omegaxx negativo):
Ix dot omegax=M omegaxx omegax+M deltaax deltaa longrightarrowIx dot omegax=− left|M omegaxx right| omegax+M deltaax deltaa
Ix dot omegax+ left|M omegaxx right| omegax=M deltaax deltaa longrightarrow left(Ixp+ left|M omegaxx right| right) omegax=M deltaax deltaa
left( fracIx left|M omegaxx right|p+1 right) omegax= fracM deltaax left|M omegaxx right| deltaa longrightarrowT= fracIx left|M omegaxx right|,k= fracM deltaax left|M omegaxx right|.
Para el enlace aperiódico, la constante de tiempo
T igual al tiempo durante el cual la cantidad de salida
omegax(t) con un efecto de un solo paso de la cantidad de entrada
deltaa(t) toma un valor que difiere del estado estable en ~ 5%, y la ganancia
k numéricamente igual al valor de estado estable del valor de salida con un efecto de un solo paso:
Hay dos parámetros desconocidos en el modelo de movimiento construido: ganancia
k y constante de tiempo
T . Estos parámetros se expresan a través de las características del sistema físico: momento de inercia.
Ix así como derivados del momento de balanceo
M omegaxx y
M deltaax :
M omegaxx=− fracIxT, colorwhite longrightarrowM deltaax=−kM omegaxx= frackIxT.
Así, si se conoce el momento de inercia
Ix , luego de haber determinado los parámetros del modelo, es posible restaurar los parámetros del sistema a partir de ellos.
Parámetros del modelo. Momento de inercia Ix
Nuestro avión consta de las siguientes partes: ala, fuselaje con plumaje, motor, batería (batería) y
aviónica :

La aviónica incluye: la placa del piloto automático, la placa del receptor
SNA , la placa del módem de radio, la placa del receptor para la señal del equipo de control, dos reguladores de voltaje, un regulador de velocidad del motor y también cables de conexión.

Debido al bajo peso de la aviónica, su contribución al momento total de inercia puede ser descuidada.
¿Cómo se estimó el momento de inercia?Estimación del momento de inercia.
Ix Se puede hacer de la siguiente manera. Veamos el plano a lo largo del eje
OX :

Y luego imagínelo en la forma del siguiente modelo simplificado:
Esquema para calcular el momento de inercia Ix . En la parte superior izquierda, la batería, en la parte inferior derecha, el motor. El motor y la batería están ubicados en el eje del fuselaje.Se puede ver que para crear el modelo, se descartaron la quilla, la cola horizontal, el tornillo y la aviónica. En este caso, quedó: el fuselaje, el ala, la batería, el motor. Al medir las masas y las dimensiones características de cada parte, podemos calcular los momentos de inercia de cada parte en relación con el eje longitudinal del fuselaje:
- ala (varilla delgada): Ixw= frac112mwL2w+mwy2w=1.7 cdot10−2kg cdotm2
- fuselaje (cilindro hueco): Ixf=mfr2f=2.8 cdot10−4kg cdotm2
- batería (placa): Ixa= frac112ma left(h2a+w2a right)=3.4 cdot10−4kg cdotm2
- motor (disco): Ixe= frac12mer2e=2.3 cdot10−5kg cdotm2
El valor total del momento de inercia de la aeronave con respecto al eje
OX se obtiene sumando los momentos de inercia de las partes:
Ix=Ixw+Ixf+Ixa+Ixe=1.8 cdot10−2kg cdotm2
Estimación de la contribución de cada una de las partes de la aeronave al momento total de inercia.
Ix , resultó lo siguiente:
- ala - 96.3%,
- el fuselaje - 1.6%,
- motor y batería - 2%,
Se puede ver que la principal contribución al momento total de inercia
Ix hace un ala Esto se debe al hecho de que el ala tiene un tamaño transversal bastante grande (envergadura del ala - 1 m):

Por lo tanto, a pesar del peso modesto (aproximadamente el 20% de la masa total de despegue del avión), el ala tiene un momento significativo de inercia.
Parámetros del modelo. Derivados del momento de balanceo M omegaxx y M deltaax
El cálculo de los derivados del momento de balanceo es una tarea bastante difícil asociada con el cálculo de las características aerodinámicas de la aeronave mediante métodos numéricos o utilizando técnicas de ingeniería. La aplicación del primero y el segundo requiere un tiempo significativo, costos intelectuales y computacionales, que se justifican en el desarrollo de sistemas de control para aviones grandes, donde el costo del error aún excede el costo de construir un buen modelo. Para la tarea de control de UAV, cuya masa no supera los 2 kg, este enfoque apenas está justificado. Otra forma de calcular estos derivados es un experimento de vuelo. Dada la baratura de nuestro avión, así como la proximidad de un campo adecuado para tal experimento, la elección fue obvia para nosotros.
Habiendo escrito el firmware en el piloto automático para el control manual y el registro de parámetros, armamos el avión y lo preparamos para la prueba:

En el experimento de vuelo, fue posible obtener datos sobre el ángulo de desviación de los alerones y la velocidad angular de rotación de la aeronave. El piloto controlaba el avión en modo manual, volaba en círculo, giros y "barriles", y el equipo a bordo registraba y enviaba la información necesaria a la estación terrestre. Como resultado, se obtuvieron las dependencias necesarias:
omegax(t) (grados / s) y
deltaa(t) (b / p) Valor
deltaa(t) representa el ángulo de desviación del alerón normalizado: un valor de 1 corresponde a una desviación máxima y un valor de −1 corresponde a un mínimo:

Cómo determinar ahora
M omegaxx y
M deltaax de los datos recibidos? La respuesta es medir los parámetros transitorios en los gráficos.
omegax(t) y
deltaa(t) .
¿Cómo se determinaron los coeficientes k y T?Ganar
k se determinó asignando el valor del valor de estado estable de la velocidad angular al valor de la desviación del alerón:
Dependencias del ángulo de desviación del alerón y la velocidad angular de balanceo en el tiempo obtenido en el experimento de vueloEn la figura anterior, las secciones del valor de estado estable de la velocidad angular corresponden aproximadamente, por ejemplo, a los segmentos cercanos a los instantes de tiempo 422, 425 y 438 s (marcados en rojo oscuro en la figura).
Constante de tiempo
T determinado a partir de los mismos gráficos. Para esto, se encontraron secciones de un cambio brusco en el ángulo de desviación del alerón, y luego se midió el tiempo durante el cual la velocidad angular toma un valor que difiere del valor de estado estable en un 5%.
El resultado de determinar los valores de la constante de tiempo y la ganancia es el siguiente:
T=0.075 texts ,
k=−575 textdeg/s . Estos valores de los coeficientes con un valor conocido del momento de inercia
Ix corresponden los siguientes valores de las derivadas del momento angular:
M omegaxx=− fracIxT=−0.24 frac textN cdot textm textdeg/s, colorblanco longrightarrowM deltaax=−kM omegaxx= frackIxT=−138 frac textN cdot textm text[].
Verificación del modelo
Entonces, habiendo construido un modelo, cuya base es un enlace aperiódico
W= frac−5750.75p+1,
se puede verificar aplicando una señal a la entrada
delta(t) obtenido del experimento de vuelo y comparar la señal de salida del modelo con el valor
omegax(t) También obtenido en el experimento.
¿Cómo se hizo la simulación?Elegimos la herramienta para modelar, principalmente, en base a la posibilidad de repetir los resultados por una amplia gama de lectores: esto significa principalmente que el programa debe ser de dominio público. En principio, el problema de modelar el comportamiento del enlace aperiódico de primer orden se puede resolver creando su propia herramienta desde cero. Pero dado que en el futuro el modelo se volverá más complicado, la creación de su propio instrumento puede distraer de la tarea principal: la creación de armas autopropulsadas. Dado el principio de apertura de la herramienta, elegimos
JSBsim .
En la sección anterior, obtuvimos los valores del coeficiente
M deltaax y
M omegaxx . Los usamos para simular el movimiento de la aeronave. Del
último artículo, recordamos que la configuración del modelo de avión en
JSBsim se establece mediante un archivo
XML . Crea tu propio modelo:
<?xml version="1.0"?> <fdm_config name="OP1" version="2.0" release="BETA"> <metrics> <wingarea unit="M2"> 0.2 </wingarea> <wingspan unit="M"> 1.0 </wingspan> <chord unit="M"> 0.2 </chord> <htailarea unit="M2"> 0.03 </htailarea> <htailarm unit="M"> 0.5 </htailarm> <vtailarea unit="M2"> 0.03 </vtailarea> <vtailarm unit="M"> 0.5 </vtailarm> <location name="AERORP" unit="M"> <x> -0.025 </x> <y> 0 </y> <z> 0.05 </z> </location> </metrics> <mass_balance> <ixx unit="KG*M2"> 0.018 </ixx> <iyy unit="KG*M2"> 0.018 </iyy> <izz unit="KG*M2"> 0.018 </izz> <emptywt unit="KG"> 1.2 </emptywt> <location name="CG" unit="M"> <x> 0 </x> <y> 0 </y> <z> 0 </z> </location> </mass_balance> <ground_reactions> </ground_reactions> <propulsion> </propulsion> <flight_control name="FCS: OP1"> <channel name="Pitch"> </channel> <channel name="Roll"> <summer name="Roll Trim Sum"> <input>fcs/aileron-cmd-norm</input> <clipto> <min>-1</min> <max>1</max> </clipto> </summer> </channel> <channel name="Yaw"> </channel> </flight_control> <aerodynamics> <axis name="DRAG"> </axis> <axis name="SIDE"> </axis> <axis name="LIFT"> </axis> <axis name="ROLL" unit="N*M"> <function name="aero/coefficient/Clp"> <description>Roll_moment_due_to_roll_rate</description> <product> <property>velocities/p-aero-rad_sec</property> <value>-0.24</value> </product> </function> <function name="aero/coefficient/Clda"> <description>Roll_moment_due_to_aileron</description> <product> <property>fcs/aileron-cmd-norm</property> <value> 2.4 </value> </product> </function> </axis> <axis name="PITCH"> </axis> <axis name="YAW"> </axis> </aerodynamics> <output name="OP1.csv" rate="60" type="CSV"> <property> velocities/vc-kts </property> <property> aero/alphadot-deg_sec </property> <property> aero/betadot-deg_sec </property> <property> fcs/throttle-cmd-norm </property> <simulation> OFF </simulation> <atmosphere> OFF </atmosphere> <massprops> OFF </massprops> <aerosurfaces> ON </aerosurfaces> <rates> ON </rates> <velocities> ON </velocities> <forces> OFF </forces> <moments> OFF </moments> <position> ON </position> <coefficients> OFF </coefficients> <ground_reactions> OFF </ground_reactions> <fcs> ON </fcs> <propulsion> OFF </propulsion> </output> </fdm_config>
Dado que estamos creando un modelo del movimiento del dispositivo solo a lo largo del rollo, dejaremos muchas de las secciones de archivo vacías. Las siguientes características se establecen secuencialmente en el archivo del modelo.
Las dimensiones geométricas de la aeronave se establecen en la sección de
métricas : área del ala, envergadura, longitud de la cuerda aerodinámica promedio, área de la cola horizontal, hombro de la cola horizontal, área de la cola vertical, hombro de la cola vertical, posición del foco aerodinámico.
Las características de masa de la aeronave se establecen en la sección de
equilibrio de masa : tensor de inercia de la aeronave, peso en vacío, posición del centro de masa.
Vale la pena señalar que las posiciones absolutas del enfoque aerodinámico y el centro de masa de la aeronave no participan en el cálculo de la dinámica del dispositivo, su ubicación relativa es importante.
Las siguientes secciones describen las características del tren de aterrizaje de la aeronave y su planta de energía.
En la siguiente sección, responsable
del sistema de control , completaremos el canal responsable del control de balanceo:
indicaremos la única entrada
fcs / aileron-cmd-norm , cuyo valor se normalizará de -1 a 1.
Las características aerodinámicas se establecen en la sección
aerodinámica : las fuerzas se establecen en un sistema de coordenadas de alta velocidad y los momentos se establecen en uno acoplado. Estamos interesados en el momento del rollo. En la sección
nombre del
eje = "ROLL" , se definen funciones que determinan el momento de las fuerzas de varios componentes de la proyección del momento de las fuerzas aerodinámicas en el eje
OX del sistema de coordenadas asociado. Hay dos componentes de este tipo en nuestro modelo. El primer componente es el momento de amortiguación, que es igual al producto de la velocidad angular por el coeficiente determinado anteriormente
M omegaxx . El segundo componente es el momento desde los alerones a una velocidad de vuelo fija: es igual al producto del coeficiente previamente determinado
M deltaax por la desviación del alerón.
Vale la pena señalar que al determinar el coeficiente
M deltaax valor dimensional fue utilizado
T . En nuestros datos de vuelo, la velocidad angular se midió en grados por segundo, mientras que
JSBSim usa radianes por segundo, por lo que el coeficiente
M deltaax debe reducirse a la dimensión deseada, es decir, dividirse entre 180 grados y multiplicarse por
pi Radian Anotamos estos componentes del momento de las fuerzas aerodinámicas dentro de las funciones del
producto . Al modelar, se resume el resultado de todas las funciones y se obtiene el valor de la proyección del momento aerodinámico en el eje correspondiente.
Puede verificar el modelo creado en los datos experimentales obtenidos durante las pruebas de vuelo. Para hacer esto, cree una secuencia de comandos con el siguiente contenido:
<?xml version="1.0" encoding="utf-8"?> <runscript> <use aircraft="ownPlane1" initialize="scripts/airborne"/> <run start="0" end="51" dt="0.01"> <event name="Trims"> <condition> sim-time-sec ge 0.0 </condition> <set name="simulation/do_simple_trim" value="5"/> </event> <event name="Time Notif" continuous="true"> <description>Provide a time history input for the aileron</description> <condition> sim-time-sec ge 0</condition> <set name="fcs/aileron-cmd-norm" > <function> <table> <independentVar lookup="row">sim-time-sec</independentVar> <tableData> 0 0.00075 0.1 0.00374 0.2 -0.00075 0.3 -0.00075 0.4 -0.00075 0.5 -0.00075 0.6 0.00075 0.7 0.00075 ... 48.8 -0.00075 48.9 0.00000 49 -0.00075 </tableData> </table> </function> </set> </event> </run> </runscript>
donde los puntos indican datos faltantes. En el archivo de script que nos
resulta familiar del artículo anterior, ha aparecido un nuevo tipo de evento (
"Time Notif" ), que le permite establecer un cambio continuo del parámetro a tiempo. La función de la tabla establece la dependencia del parámetro con el tiempo.
JSBSim interpola linealmente el valor de la función entre los datos tabulares. El procedimiento de verificación del modelo de movimiento de balanceo consiste en ejecutar este script en el modelo creado y comparar los resultados con los experimentales.
El resultado de la verificación se muestra en la figura:

Como se puede ver en la figura, la coincidencia del modelo con la realidad es poco menos que completa.
Síntesis de control para el rendimiento del barril
Una vez recibido el modelo, es fácil determinar cuánto y durante cuánto tiempo es necesario desviar los alerones para completar el "barril". Una opción es el siguiente algoritmo de desviación:
- t=0 : los alerones comienzan a desviarse de una posición neutral;
- t=0.1 textc : alerones rechazados en un 50%;
- t=1.3 textc : los alerones comienzan a desviarse a una posición neutral;
- t=1.4 textc : alerones en neutro.
La presencia de segmentos con una duración de 0.1 s al principio y al final del algoritmo de deflexión del alerón simula la inercia del servoaccionamiento, que no puede desviar las superficies al instante. El modelo muestra que con tal ley de desviación del alerón, la aeronave debe completar una revolución completa alrededor del eje
OX , ¿verificar?
Experimento de vuelo
La ley de control de alerones resultante se programó en un piloto automático montado en un avión. La idea del experimento es simple: llevar el avión a un vuelo horizontal y luego usar la ley de control obtenida. Si el movimiento real de la aeronave a lo largo del rollo corresponde al modelo creado, entonces la aeronave debe realizar un "barril", una revolución completa de 360 grados.
¡Expresamos nuestra gratitud a nuestro fiel piloto por su trabajo, profesionalismo y un cómodo baúl en un carro universal!
En el transcurso del experimento, quedó claro que el modelo de rodadura se construyó con éxito: el avión realizó un "barril" tras otro tan pronto como el piloto activó la ley de control programada. La siguiente figura muestra la velocidad angular
omegax registrado durante el experimento y obtenido de los resultados de la simulación, así como el ángulo de inclinación y inclinación del experimento de vuelo:

Y la siguiente figura muestra las señales registradas en el experimento de vuelo para alerones, elevador (RV) y timón (RN):

Las líneas verticales indican los momentos del comienzo y el final de la ejecución del "barril". Se puede ver en las cifras que durante la ejecución del "barril" el piloto no interviene en el control del elevador y el timón, también está claro que el ángulo de inclinación invariablemente tiende a disminuir durante la ejecución del "barril": el avión se retrasa en una inmersión, como lo predijeron los resultados de la simulación en el simulador de vuelo (ver el artículo
"UAV de vuelo. Cómo hacer un barril" ). Si considera cuidadosamente los gráficos anteriores, quedará claro que el tercer "barril" ni siquiera estaba terminado, porque el piloto intervino en el control para sacar el avión de la inmersión: el ángulo de cabeceo cambia mucho cuando el "barril" es ejecutado solo por alerones.
Observaciones
- Los cañones autopropulsados construidos para la ejecución del "barril" no tienen en cuenta la dependencia de los derivados del momento de balanceo con la velocidad de vuelo. Por un lado, esto se hizo para no complicar el modelo y la ley de gestión. Por otro lado, tal dependencia es fácil de introducir si en lugar de derivados M omegaxx y M deltaax usar cantidades M omegaxx/V2 y M deltaax/V2 definido a una velocidad de vuelo dada V .
- La ley de control desarrollada es un programa de control sin retroalimentación. La presencia de retroalimentación sobre la velocidad angular y / o el ángulo de balanceo mejorará la precisión de la figura, lo que se hará en el futuro.
Conclusiones
Como resultado de nuestro trabajo, mostramos una de las formas de crear un modelo de movimiento de un UAV en velocidad angular
omegax . En un experimento de vuelo, se demostró que el modelo de movimiento creado es consistente con el objeto simulado. Sobre la base del modelo desarrollado, se obtiene la ley de control del programa, que permite realizar el "barril" en modo automático. También nos aseguramos de que no fuera posible lograr el "barril" correcto con alerones solos, y también lo demostramos claramente.
El siguiente paso será la finalización de la ley de control agregando retroalimentación, así como la inclusión del control del elevador. Esto último requerirá la creación de un modelo del movimiento longitudinal de nuestra aeronave. Según los resultados del trabajo, se lanzará la próxima publicación.