Ensamble, lance, explore y desarrolle minidrones con un kit completo
Colaboración de Editores de DigiKey de América del Norte
2019-06-04
Los drones de cuatro rotores, o cuadricópteros, siguen desempeñando papeles cada vez más importantes en una amplia variedad de aplicaciones, pero el diseño continúa siendo una tarea compleja que combina el conocimiento de los subsistemas mecánico, electrónico y de software. Si bien los diseñadores son capaces de aprender lo que se necesita, un kit de desarrollo de drones puede ofrecer una ventaja, ya que reúne todos los elementos necesarios para adquirir experiencia con la teoría y la práctica de vuelo de drones.
Este artículo describe un kit de desarrollo de STMicroelectronics que ofrece a los desarrolladores un minidron cuadricóptero que es fácil de ensamblar y, a su vez, demuestra completamente los complejos sistemas de control de vuelo detrás de cualquier vehículo aéreo multirrotor.
Dinámica de los cuadricópteros
En su forma más popular, los cuadricópteros proporcionan una plataforma particularmente estable para una amplia gama de aplicaciones, como la fotografía aérea, la inspección de campo, la vigilancia y más. A diferencia de los aviones de ala fija o los helicópteros, con sus rotores de inclinación variable, los drones multirrotor de inclinación fija cuentan con un diseño relativamente simple y son fáciles de construir gracias a la amplia disponibilidad de pequeños motores de CC eficientes.
La simplicidad mecánica y la estabilidad aerodinámica de estos drones surgen del uso coordinado de los rotores para controlar las maniobras, en lugar del uso de superficies de vuelo en aviones o una combinación de rotor principal y ensamblaje de cola en helicópteros.
En un cuadricóptero, los dos motores de la diagonal del fuselaje giran en la misma dirección, pero en la dirección opuesta al otro par de motores. Si los cuatro motores giran a la misma velocidad, el dron puede ascender, descender o planear. Si un par diagonal gira más rápido que el otro par, el dron se desviará, y girará alrededor del centro de gravedad mientras permanece en el mismo plano horizontal (Figura 1, izquierda).
Figura 1: Los drones ejecutan maniobras utilizando diferentes combinaciones de velocidad de rotor, como acelerar ambos motores en un par diagonal (M2, M4) en una maniobra de desvío (izquierda) o acelerar un motor diagonal (M2) al mismo tiempo que reduce su contraparte diagonal (M4) para completar una maniobra de inclinación y balanceo más compleja (derecha). (Fuente de la imagen: STMicroelectronics)
Si se modifica la velocidad de los rotores de avance (o de popa), el dron se inclinará hacia arriba o abajo como un avión de ala fija ascendente o descendente en vuelo. Un ajuste similar del puerto o del par de estribor hará que el dron se balancee y gire alrededor de la línea central. Los drones pueden lograr fácilmente orientaciones de vuelo más complejas (combinaciones de inclinación, desvío y balanceo) ajustando las velocidades relativas de un par diagonal de motores o de un solo motor (Figura 1, derecha).
El sistema de control de vuelo del dron es responsable de modificar la velocidad de los rotores apropiados para lograr la orientación de vuelo requerida con el fin de completar la maniobra deseada.
En la práctica, el sistema de control necesita ajustar constantemente la velocidad del rotor, no solo para realizar un giro, por ejemplo, sino también durante el vuelo de nivel para corregir la fuerza perturbadora como el viento, las térmicas o la turbulencia. Incluso para un minidron que funciona en interiores, un sistema de control de vuelo necesita la capacidad de medir la diferencia entre la orientación real del dron y la orientación deseada.
Para un ingeniero, el problema de corregir las velocidades del rotor de acuerdo con alguna señal de error es un problema familiar de respuesta del bucle de control que se resuelve con un controlador PID (proporcional integral derivado). El único desafío conceptual que queda es encontrar un método para medir la orientación del dron, pero ese problema se resuelve fácilmente con sensores inteligentes de alta precisión para alimentar los cálculos del ángulo de Euler.
Los ángulos de Euler representan la orientación del plano XYZ de un objeto en relación con algún plano xyz de referencia, donde los dos planos se cruzan a lo largo de una línea N (Figura 2). Los ángulos de Euler se definen de la siguiente manera:
- α, el ángulo entre el eje x y N
- ß, el ángulo entre los ejes z y Z
- γ, el ángulo entre N y el eje X
Figura 2: Los ángulos de Euler (α, ß γ) describen la orientación relativa de un marco girado (XYZ) con respecto a un marco de referencia fijo (xyz) que se cruzan en la línea N. (Fuente de la imagen: Wikimedia Commons CC BY 3.0)
Para un sistema de control de vuelo, el plano del objeto y el plano de la referencia se corresponden directamente con la orientación actual (XYZ) del dron y la orientación deseada (xyz). A su vez, los ángulos de Euler indican las rotaciones axiales requeridas para llevar al dron a la orientación deseada. Aunque durante años los giroscopios mecánicos proporcionaron los datos en bruto utilizados para determinar la orientación actual, la disponibilidad de acelerómetros y giroscopios de MEMS (sistema microelectromecánico) de alta precisión permitió la aplicación de este método incluso en minidrones ligeros.
En la actualidad, los drones de todas las formas y tamaños cuentan con un AHRS (sistema de referencia de rumbo y orientación) basado en sensores que alimenta la información de posición en los cálculos del ángulo de Euler. A su vez, los ángulos de Euler se utilizan para crear la señal de error de un controlador PID que administra las velocidades del motor a fin de lograr la maniobra de vuelo deseada. El desafío radica en implementar este enfoque con software en una plataforma móvil capaz de completar los cálculos y las correcciones del motor con la velocidad y la precisión necesarias.
El kit de minidrones STEVAL-DRONE01 de STMicroelectronics y el software asociado proporcionan un ejemplo práctico de este enfoque y sirven como base para explorar los detalles de los sistemas de control de vuelo de drones.
Kit de minidrones listo para volar
El kit STEVAL-DRONE01 contiene todos los componentes necesarios para construir un pequeño cuadricóptero. Junto con un fuselaje de plástico, el kit incluye cuatro motores de CC sin núcleo 8520 de 8.5 x 20 milímetros (mm) y 3.7 voltios, cada uno capaz de un empuje de aproximadamente 35 gramos con las hélices incluidas de 65 mm. Los motores y las hélices se suministran en dos pares configurados para girar en sentido horario y antihorario. Cuando se ensambla completamente con la batería de LiPo (polímero de iones de litio) de 3.7 voltios , el peso bruto del dron, o el AUW (peso total máximo), es inferior a 70 gramos, lo que proporciona una relación de empuje a peso de aproximadamente 2:1 que se prefiere para operaciones con drones.
Sin embargo, aparte de los componentes mecánicos, la pieza central del kit es la placa de FCU (unidad de control de vuelo) STEVAL-FCU001V1 de STMicroelectronics y el paquete de software asociado, que en conjunto proporcionan las capacidades del sistema de control de vuelo mencionadas anteriormente. La placa FCU es un sistema sofisticado de alta eficiencia con varios sensores y conectividad BLE (Bluetooth de baja energía) (Figura 3).
Figura 3: La unidad de control de vuelo STEVAL-FCU001V1 de STMicroelectronics es un completo sistema multisensor alimentado por batería con conectividad BLE y capacidad de accionamiento de motor de CC. (Fuente de la imagen: STMicroelectronics)
Creada según el microcontrolador de 32 bits basado en Arm® Cortex®-M4 de STMicroelectronics STM32F401, la placa tiene tres sensores MEMS diferentes para medir distintas características relacionadas con el posicionamiento del dron y la navegación, e incluye:
- La IMU (unidad de medida inercial) LSM6DSL iNEMO de STMicroelectronics integra un acelerómetro y giroscopio necesario para la funcionalidad del AHRS.
- El magnetómetro LIS2MDL de STMicroelectronics proporciona datos para implementar funciones de detección de dirección
- El sensor de presión LPS22HD de STMicroelectronics proporciona datos para determinar el posicionamiento vertical con una resolución de 8 centímetros (cm)
En el lado de entrada del sensor, el microcontrolador STM32F401 de la FCU se conecta con cada sensor a través de un bus de SPI (interfaz periférica serial) compartido. Del lado de la salida del motor, el temporizador de propósito general TIM4 del microcontrolador proporciona la señal modulada por ancho de pulso (PWM) utilizada para controlar las puertas de los transistores de potencia MOSFET STL6N3LLH6 STMicroelectronics que impulsan los motores de CC del dron.
Para recibir los comandos de control del usuario, la FCU ofrece dos opciones: los usuarios pueden controlar el dron desde un teléfono inteligente con una conexión Bluetooth utilizando el módulo SPMTro-RF de STMicroelectronics incorporado, que incluye el transceptor BlueNRG-MS de la empresa con una pila Bluetooth con energía totalmente optimizada. Los usuarios también pueden emplear una consola de control remoto (remocon) basada en la PWM (modulación por ancho de pulsos) de RC (control de radio) estándar. Finalmente, para la administración de la batería y la energía, la placa incluye un IC (circuito integrado) de cargadores de batería de iones de litio STC4054 STMicroelectronics y un regulador de LDO (caída baja) LD39015.
Como se indica en la Figura 3, la FCU también admite la conexión a un ESC (controlador de velocidad electrónico externo) como el STEVAL-ESC001V1 de STMicroelectronics. Un ESC permite que un sistema accione motores trifásicos más robustos, lo que permite el uso de la FCU en diseños de cuadricópteros más potentes.
Para simplificar la preparación y el control de vuelo, el kit viene preconfigurado para usar la opción de conexión Bluetooth con la aplicación móvil STDrone de STMrroelectronics para Android. Diseñada como una consola de control remoto, la aplicación proporciona a los usuarios una interfaz de control de vuelo simple con íconos de control y dos palancas de mando virtuales (Figura 4).
Figura 4: La aplicación móvil STDrone de STMicroelectronics para de Android proporciona a los usuarios una consola de control remoto virtual para operar un minidron construido con el kit de desarrollo STEVAL-DRONE01 de la empresa. (Fuente de la imagen: STMicroelectronics)
Después del ensamblaje, el operador del dron puede usar la aplicación STDrone para iniciar y controlar el dron con un dispositivo móvil. Antes del despegue, el operador debe colocar el dron en una superficie plana y tocar el ícono de calibración de la aplicación hasta que se ponga verde, lo que significa que la calibración finalizó. Por seguridad, los motores de los drones se desactivan inicialmente a través del software, lo que requiere que el usuario "arme" el dron tocando otro ícono de la aplicación. En este punto, la interfaz de usuario de la aplicación funciona como una consola de control remoto, lo que permite al usuario mover las palancas de mando virtuales para ajustar la velocidad del rotor del avión no tripulado y la postura de vuelo.
Aunque el STMicroelectronics ultraligero carece de la masa y la potencia necesarias para un uso extenso en el exterior, los operadores de drones que pueden operar el minidron en exteriores deben estar al tanto de las restricciones de vuelo de los drones en su área de operación prevista. Es posible que no se requiera que los operadores de minidrones se conviertan en operadores con licencia o registren drones muy pequeños de esta clase. Sin embargo, necesitan cumplir con los requisitos.
Estos requisitos de vuelo incluyen mantener la línea de visión, observar una altitud máxima de 400 pies y evitar zonas de exclusión aérea como, por ejemplo, a 5 millas de un aeropuerto en EE. UU. o 1 km en el Reino Unido, evitar operaciones cerca de eventos deportivos u operaciones de emergencia y otros. Los operadores de drones pueden usar aplicaciones móviles como la aplicación B4UFLY en EE. UU. Drone Assist del NATS (Organismo de Tráfico Aéreo Nacional) en el Reino Unido, cada una de las cuales brinda información sobre las restricciones locales del espacio aéreo basadas en la ubicación GPS del usuario.
Software de control de vuelo
Para los ingenieros, una característica convincente de la FCU del kit de drones STMicroelectronics es su paquete de software asociado, que STMicroelectronics mantiene en un repositorio de github de código abierto. Basada en el marco STM32Cube STMicroelectronics, la aplicación se coloca en capas sobre el middleware de la pila Bluetooth y una capa de controlador subyacente. La capa del controlador maneja los detalles de la interacción de hardware utilizando la capa de abstracción de hardware (HAL) STM32Cube y el paquete de soporte de la placa STEVAL-FCU001V1 (BSP), que incluye controladores para los dispositivos de la placa FCU descritos anteriormente.
La arquitectura del software para la aplicación se basa en tres módulos separados, uno para control remoto, determinación de posición y control del PID (Figura 5):
- El módulo de control remoto maneja la entrada desde la aplicación móvil STDrone o desde una consola de control remoto RC, al recopilar valores de datos de la aplicación o convertir datos PWM del control remoto, antes de traducir esos valores a los ángulos de Euler para la postura de vuelo deseada.
- El módulo de determinación de posición recopila los datos del acelerómetro y el giroscopio del IMU LSM6DSL para su uso en la estimación de posición del AHRS necesaria para calcular los ángulos de Euler para la postura de vuelo actual del dron. Los datos del magnetómetro LIS2MDL y del sensor de presión LPS22HD se recopilan, pero no se utilizan para los cálculos de control de vuelo de drones en la versión de software disponible a partir de este escrito.
- El módulo de control PID completa el cálculo de error de posición utilizando la diferencia entre los ángulos de Euler para la postura deseada frente a la actual. Usando métodos de control PID convencionales, este módulo usa esa señal de error para ajustar la velocidad de cada motor con el fin de llevar al dron a la postura deseada.
Figura 5: El software de control de vuelo de un minidron STMicroelectronics construye su funcionalidad alrededor de módulos separados para manejar la entrada de control remoto (cuadros azules, etiquetados (1)), determinación de posición (cuadros rojos, (2)) y control PID (cuadro azul marino, (3)). El control PID luego acciona los cuatro motores del cuadricóptero. (Fuente de la imagen: STMicroelectronics)
Usando esta arquitectura funcional, la aplicación de drones combina estos módulos en el flujo de trabajo necesario para traducir los comandos del usuario a las maniobras en los ajustes de velocidad del motor que se requieren para realizar esas maniobras (Figura 6). Aunque es complejo en su funcionalidad general, el bucle principal para actualizar los parámetros de control de vuelo es relativamente sencillo.
Figura 6: El software de control de vuelo de un minidron STMicroelectronics implementa un flujo de trabajo que lee continuamente los datos del sensor para actualizar la postura de vuelo actual del dron y ajustar la velocidad de los cuatro motores del dron con el fin de lograr la combinación de vuelo deseada de empuje, inclinación, balanceo y desvío. (Fuente de la imagen: STMicroelectronics)
Después de una serie de llamadas para inicializar los sistemas de hardware y software, la rutina principal de la aplicación, main.c, ingresa en un bucle infinito (Listado 1). Dentro de este bucle principal, el proceso de actualización utiliza una serie de llamadas para realizar los algoritmos de control de vuelo básicos descritos anteriormente.
Copywhile (1) { . . .
if (tim9_event_flag == 1) { // Timer9 event: frequency 800Hz tim9_event_flag = 0; . . .
// AHRS update, quaternion & true gyro data are stored in ahrs ahrs_fusion_ag(&acc_ahrs, &gyro_ahrs, &ahrs); // Calculate euler angle drone QuaternionToEuler(&ahrs.q, &euler_ahrs); #ifdef REMOCON_BLE gRUD = (joydata[2]-128)*(-13); gTHR = joydata[3]*13; gAIL = (joydata[4]-128)*(-13); gELE = (joydata[5]-128)*13; /* joydata[6]: seek bar data*/ /* joydata[7]: additional button data first bit: Takeoff (0 = Land, 1 = Takeoff) second bit: Calibration When it changes status is active third bit: Arming (0 = Disarmed, 1 = Armed) */ gJoystick_status = joydata[7]; if ((gJoystick_status&0x04)==0x04){ rc_enable_motor = 1; fly_ready = 1; BSP_LED_On(LED2); } else { rc_enable_motor = 0; fly_ready = 0; } if (connected){ rc_connection_flag = 1; /* BLE Remocon connected flag for enabling motor output */ SendMotionData(); SendBattEnvData(); SendArmingData(); } else{ rc_connection_flag = 0; gTHR=0; rc_enable_motor = 0; fly_ready = 0; BSP_LED_Off(LED1); BSP_LED_Off(LED2); } if (joydata[7]&0x02){ rc_cal_flag = 1; BSP_LED_On(LED1); } #endif #ifdef REMOCON_PWM . . .
#endif // Get target euler angle from remote control GetTargetEulerAngle(&euler_rc, &euler_ahrs); . . .
FlightControlPID_OuterLoop(&euler_rc_fil, &euler_ahrs, &ahrs, &pid); . . .
} . . .
}
Dentro de este bucle, el temporizador TIM9 de propósito general del microcontrolador sirve como un indicador de evento para controlar la velocidad de la actualización. Cuando se produce el evento del temporizador de actualización, el bucle principal llama a la rutina de actualización de AHRS, ahrs_fusion_ag (), que utiliza los últimos datos del acelerómetro (acc_ahrs) y el giroscopio (gyro_ahrs) para realizar los cálculos de fusión del sensor que forman parte de la actualización. Los datos resultantes, que están en forma de cuaternión, se utilizan luego mediante la rutina QuaternionToEuler () para calcular los ángulos de Euler para la postura de vuelo actual del dron.
En este punto del bucle principal, la aplicación recopila datos sobre la postura de vuelo deseada utilizando los datos de Bluetooth si Bluetooth está habilitado (#ifdef REMOCON_BLE), o la consola de RC externa si está habilitada. Aquí, el código actualiza cuatro variables que reflejan los datos de la consola de RC convencional: gRUD (posición del timón o guiñada), gAIL (posición del alerón o rodillo), gELE (posición del elevador o inclinación) y gTHR (posición del acelerador). Después de recopilar esos datos, el bucle utiliza la rutina GetTargetEulerAngle () para calcular los ángulos de Euler de la postura de vuelo deseada, como lo ordena el operador del dron. Sin embargo, antes de ese cálculo, esta sección del bucle demuestra una característica de importancia crítica para el operador del dron. Si la conexión Bluetooth ha fallado por alguna razón, el código apaga los motores, lo que por supuesto significa un descenso incontrolado instantáneo para el dron en sí. Una extensión de software obvia, pero no trivial, podría usar el magnetómetro LIS2MDL y los datos del sensor de presión LPS22HD para devolver el dron a su punto de inicio y aterrizarlo en un descenso controlado antes de apagar los motores.
El bucle principal finalmente concluye con una llamada a FlightControlPID_OuterLoop () que actualiza los valores de destino para el controlador PID. Por separado, se ejecuta FlightControlPID_innerLoop() como parte de una secuencia de operaciones realizadas en una devolución de llamada a la interrupción asociada con el evento del temporizador TIM9, que está programado para ejecutarse a 800 Hertz (Hz). En cada interrupción, la rutina de devolución de llamada lee los sensores, filtra los datos sin procesar y actualiza los búferes primero en entrar, primero en salir (FIFO) asociados con las variables acc_ahrs y gyro_ahrs mencionadas anteriormente como parte del bucle principal. Con estos datos actualizados sobre la postura de vuelo actual del avión no tripulado, la rutina de devolución de llamada invoca a FlightControlPID_innerLoop (), que calcula nuevos valores de PWM para cada motor. La devolución de llamada completa el proceso de actualización llamando a set_motor_pwm (), que establece las salidas de PWM del microcontrolador con los nuevos valores.
Los desarrolladores pueden explorar fácilmente escenarios alternativos de control de vuelo modificando el paquete de software de código abierto con una serie de cadenas de herramientas que incluyen IAR Embedded Workbench para ARM, el kit de desarrollo del microcontrolador RealView KEIL para STM32 y el propio System Workbench gratuito basado en Windows de STMicroelectronics para el entorno de desarrollo integrado (IDE) de STM32. Después de compilar el código modificado, los desarrolladores pueden cargar su firmware en la FCU utilizando un programador y depurador en circuito ST-LINK/V2 de STMicroelectronics o una placa de desarrollo STM32 Nucleo de STMicroelectronics conectada a la placa adaptadora JTAG de depuración de cable serial (SWD) suministrada con el kit .
Conclusión
Gracias a su diseño mecánico simple, los drones multirrotor se han convertido en una opción popular para la fotografía aérea, la inspección de campo, la vigilancia y muchas otras aplicaciones. Usando algoritmos de control alimentados por sensores inteligentes, estos drones emplean un sofisticado software de control de vuelo capaz de realizar operaciones estables y responder rápidamente a los comandos del operador para maniobras de drones.
Si bien los desarrolladores pueden encontrar y ensamblar los componentes mecánicos, eléctricos y de software necesarios por su cuenta, un completo kit de desarrollo de minidrones de STMicroelectronics proporciona una introducción más sencilla al diseño y operación de los minidrones teledirigidos. Al explorar e incluso modificar el software de control de vuelo de código abierto asociado, los desarrolladores pueden adquirir rápidamente experiencia en dinámica de vuelo de drones multirrotor y algoritmos de control.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.