Me complace presentar como primer invitado en el blog a mi compañero Javier, con el que tuve el gusto de compartir experiencias de trabajo durante un par de años en la misma empresa, en el mismo departamento e incluso hasta en los mismos proyectos, trabajando en ocasiones codo con codo. Ahora Javier, desde hace un tiempo, ha seguido su trayectoria profesional en el campo de los drones, tan en auge en estos últimos años.
Hace poco mantuve una conversación sobre drones con Rubén y me pidió que escribiera una entrada en su blog (Mascando Bits) explicando mis experiencias como desarrollador de software para drones robots. Me pareció una buena idea ya que se trata de una tecnología que está creciendo muy rápidamente y la gente de a pie todavía no tiene claro como funcionan, que componentes necesitan y que son capaces de hacer.
Hasta hace unos meses mis conocimientos sobre drones se reducían que me sonaba un poco el Phantom de DJI y el Parrot. De robots se puede decir que me sonaba un poco la librería ROS. Las circunstancias hicieron que empezase a trabajar en un proyecto con drones robots cuya misión es realizar vuelos autónomos para detectar y clasificar objetos u eventos. Las circunstancias hicieron también que el proyecto fuera mega urgente y tuviéramos que trabajar mano a mano un experto en drones y aviones, un experto en robots y un (experto? jaja) en visión por ordenador que soy yo. Así pues, 7 meses después parece que todos sabemos cómo funcionan los drones. ¡Los nuestros al menos!
Para centrar el tema voy a empezar por definir que es un dron robot. Un dron robot es un vehículo aéreo no tripulado (Unmanned Aerial Vehicle) que funciona de manera autónoma. El término dron vulgarmente se suele asociar a los vehículos aéreos de varios motores con hélices, pero el término preciso es UAV. Para que sea robot solo necesita realizar tareas de forma autónoma, es decir, sin el control directo de un ser humano.
Si nos centramos en el concepto de dron más extendido, típicamente quadrotors, un dron se compone de:
- Chasis: la estructura que aloja el resto de componentes
- Motores: tantos como patas tenga el chasis
- Variadores: uno para cada motor (Electronic Speed Controler, ESC)
- Hélices: una por cada motor
- Controladora de vuelo: también llamada "autopiloto"
- Batería
- Receptor de radio (en realidad no es esencial, salvo que quedamos manejar el dron con un mando)
Un dron vuela básicamente porque la batería proporciona energía a los motores que hacen girar las hélices que a su vez propulsan aire hacia abajo elevando el dron. La fuerza de sustentación deberá ser mayor al peso del dron para conseguir elevarlo. Este concepto juega un papel fundamental a la hora de elegir el tamaño de las hélices, baterías, peso del dron, etc.
La controladora de vuelo es la parte más importante de un UAV. Es la encargada de regular la potencia de cada motor y de estabilizar el dron en función de la información que recogen sus sensores. Si todos los motores reciben la misma potencia, el dron se mantendrá estable en el eje vertical. Si los motores traseros reciben más potencia, el dron se desplazará hacia delante, y viceversa.
Los componentes comunes de una controladora de vuelo son:
- Acelerómetro: mide la aceleración de los movimientos del UAV
- GPS: proporciona las coordenadas del UAV (no todos tienen este sensor)
- Giróscopo: mide la velocidad angular del UAV
- Barómetro: mide la altura a partir de la presión atmosférica
- Magnetómetro: la brújula del UAV proporciona su orientación
- Procesador: Es la inteligencia que realiza las lecturas de los sensores y las convierte en operaciones destinadas a mantener el UAV estable y llevarlo a la posición deseada.
Las controladoras de vuelo pueden ser muy simples y solamente intentar mantener el dron estable mientras realiza maniobras, o bien complejas y utilizar sensores como el GPS para mantener la posición de dron. Las controladoras de vuelo son la “chicha” de los drones y las que marcan la diferencia de calidad entre unos modelos y otros. Cuanto más avanzada sea la controladora mejor estabilizará el dron, sean cuales sean las circunstancias. Una controladora ideal mantendrá al dron clavado en el punto deseado pase lo que pase, aunque el viento empuje el dron la controladora detectará el desplazamiento no deseado y lo corregirá para mantener esa posición. Obviamente la calidad de los sensores (GPS, brújula, acelerómetro) influyen en los cálculos (PIDs) que realiza la controladora para conseguir su objetivo de mantener o llevar al dron a la posición objetivo, con la velocidad deseada.
Y así es como funciona un dron de la manera más simple que se me ocurre explicarlo. Si analizamos el funcionamiento desde el punto de vista del piloto que utiliza una emisora de radio para controlarlo se podría interpretar de la siguiente manera. El piloto maneja los controles y como consecuencia está enviando comandos de velocidad al piloto automático, que los traduce en señales eléctricas a los variadores o ESC. Estos convierten la corriente continua de la batería en la intensidad que se desea enviar a los motores. Si “armamos” el dron y le damos gas a los motores, el piloto automático recibe comandos de velocidad en la dirección vertical ascendente, y suministrará potencia a los 4 motores por igual hasta que sus ecuaciones detecten que se ha alcanzado la velocidad deseada de ascenso.
Muchas controladoras de vuelo vienen con un software que permite "calibrar" el dron de forma precisa, configurar la sensibilidad de los controles de la emisora de radio, la configuración de los botones, la velocidad máxima del dron, vuelta a casa automática, etc. La calibración y configuración de la controladora de vuelo es una parte esencial para que el dron vuele correctamente y evitar accidentes y sorpresas. Otras controladoras de vuelo permiten además la configuración de misiones basadas en waypoints (puntos GPS). Estas misiones no envían comandos de velocidad al autopiloto, si no que envían puntos GPS de destino o comandos de posición y el autopiloto se encarga de alcanzarlos.
Como introducción al funcionamiento de los drones puede resultar un poco densa, pero los conceptos de comandos de velocidad y de posición que se envían a las controladoras son la clave para diseñar software para drones robots. Si en lugar de ser el mando del piloto el que envía esos comandos es un software programado por nosotros que toma decisiones en función de ciertos eventos o mensajes, estaremos convirtiendo el UAV en un robot. ¿Y de qué forma se pueden tomar estas decisiones? De eso hablaré en la próxima entrada...
Enlaces de interés: