Intel ha decidido mostrarnos cómo podemos crear nuestro propio dron autónomo inteligente, todo ello con un smartphone Android. Esto no deja de ser un paso más en la novedad que están siendo estos dispositivos, de los cuales ya hemos visto otros proyectos. De este modo, se nos pone a nuestra disposición toda la información para poder montar el nuestro propio, gracias a Paul Guermonprez, Nicolas Vailliet y Cedric Andreolli.
Montar tu propio dron, uno de los proyectos más atractivos
Está claro que estos pequeños aparatos están causando furor de forma similar a como les ha podido pasar por ejemplo a las impresoras 3D. Y los desarrolladores más geek están decididos a montar proyectos de este tipo.
Para ello tenemos la forma de montar las instrucciones más sencillas para nuestro propio dron, a través de un dispositivo Android, para que posteriormente, podamos refinar el dron todo cuanto deseemos por nuestra propia cuenta. Para ello, se utilizará OpenCV, C++ y, por supuesto, Java.
Para todo el que aún no lo sepa, un dron es un vehículo aéreo no tripulado, de forma que el mismo lo podemos controlar remotamente. Pero, ¿qué es lo que lo hace «inteligente»? No lo podemos considerar inteligente a no ser que tenga integradas prestaciones de procesamiento suficientes que nos permitan por ejemplo detectar movimientos, analizar objetivos en tiempo real o simplemente grabar un vídeo.
Esto, que puede parecer simple, exige un gran procesado de datos, así como la incorporación de gran cantidad de sensores y una conexión desde donde poder controlarlo. Pero la cosa no queda ahí: necesitamos una buena batería. ¡Y que conserve un diminuto tamaño y peso! No es tan fácil, ¿a que no?
La comunicación con el motor, parte clave del dron
Lo primero para este proyecto será lógicamente escoger bien la computadora integrada a utilizar (Vemos el ejemplo del servocontrolador Pololu Maestro). Tras esto, lo más importante es conseguir comunicarnos y controlar el motor que vamos a utilizar (varios en caso de cuadricóptero). Para ello, bastará con reemplazar la pieza de control por radio con un smartphone Android y nuestra tarjeta.
Conectándonos por USB, gracias a un paquete estándar USB para Android, podemos controlar los diferentes servomotores gracias a tan sólo unas pocas líneas de código. Y con esto, ya tenemos el control del movimiento de la aeronave. Para ello, utilizaremos la posición final, la velocidad y la aceleración, con lo que el movimiento fluido está garantizado y controlado.
Hasta aquí todo pinta bien, pero cuando nos metemos en los cuadricópteros se empieza a complicar el asunto, pues necesitamos un motor sólo para la estabilización. Pero lo llamativo aquí, es que los cuadricópteros suelen venir ya con su propia tarjeta de estabilización, por lo que no es necesario un complejo código para conseguir dicha estabilidad.
Acceder al GPS por ejemplo o poder enviar una foto que la misma nave haga ya es sólo cuestión de algunas líneas de código más.
El procesamiento de datos a través de nuestro Android
Todo lo que hemos visto hasta ahora se hace en Android. Pero la pregunta es: ¿por qué? Muy sencillo: el procesaddor de un smartphone Android es potente y capaz de gestionar todo esto. A pesar de que el tema de la estabilidad lo deleguemos en una tarjeta, ya no sólo para no cargar el dispositivo, sino también para ahorrar en complejidad del código.
Además, si el smartphone dispone de procesador x86 tendremos un buen rendimiento y resistencia. Aun así, podríamos migrar a otro sistema operativo u otra plataforma de hardware más potente en el momento que el dispositivo móvil no fuera suficiente (por ejemplo para drones más grandes).
La visión de nuestro dron, factor clave para la autonomía
A pesar de que podríamos basarnos en la navegación por GPS, esto no evitaría que podamos conseguir trayectorias precisas entre edificios, gente o cualquier tipo de obstáculo. Por eso, darle ojos a nuestro dron es trivial.
Para ello, OpenCV -biblioteca de funciones de programación para analizar imágenes- será la base de la visión de nuestro dron. Dicha librería no figura en las disponibles en la propia API de Android, por lo que necesitaremos hacer uso del NDK para Android (el cual nos permite ejecutar código nativo C++ en un dispositivo Android).
Pero no sería la primera vez, pues podemos contar con innumerables aplicaciones de Android que hacen uso de esta librería.
En este caso se nos muestra como ejemplo la detección de un círculo, determinando su centro y su radio. Para ello, recuperaríamos la imagen de la cámara con la API de Java para Android. Posteriormente haríamos una llamada al código nativo C++ por la interfaz JNI, siendo éste el que procesa la información, y finalmente devolverá los resultados de nuevo a código Java para que éste nos muestre el resultado.
Nuestro propio dron, tan complejo como deseemos
Pero este proyecto que nos muestra Intel es sólo el comienzo. Nos explican los pilares básicos de un dron para que después pasemos a que sea tan preciso y complejo como nosotros deseemos. Si queréis comprobar el código de ejemplo y entrar en detalles más técnicos, no dudéis en visitar el proyecto que Intel nos dejó preparado para ello:
Curso: Construye un dron totalmente autónomo
El interés de Intel en los desarrolladores y el cuidado que tiene sobre éstos se puede comprobar si echamos un vistazo a su Programa Académico de Software, donde podremos ver otros proyectos. El resto, es poner de nuestra parte.
Y si con eso no tienes suficiente, esperamos que el siguiente anuncio comercial de Lexus y KMEL Robotics donde aparecen enjambres de drones ultraprecisos sea suficiente para animaros a diseñar vuestro propio dron. ¿A qué esperas?
[Post patrocinado por Intel]