Coche RC autónomo (I) - Introducción al proyecto
A pesar de que aún tengo varios proyectos inacabados en marcha, este año tengo decidido hacer un side project (proyecto a ir haciendo poco a poco en ratos libres, si es que los tengo), para construir un coche teledirigido autónomo. Es decir, aprender sobre el coche autónomo y su funcionamiento (que es la base de los coches inteligentes y con conducción autónoma que ya estamos empezando a ver en las carreteras).
Para ello, y gracias a que Internet permite a la gente compartir información y conocimiento, me basaré en el proyecto de Zheng Wang, que es de los más completos, detallados y fáciles de entender que podréis encontrar sobre la materia (además de compartir íntegramente el código utilizado en Github). La fotografía que abre este post es de su proyecto. Así, algunos de los componentes necesarios son:
Coche teledirigido
Se podría hacer el chasis donde ir colocando los componentes con una impresora 3D, o reciclando materiales de andar por casa (cartones, botellas de plástico, etcétera), pero para simplificar el desarrollo usaremos un coche RC de los baratos, ya que así nos soluciona parte de otros problemas (dirección, montaje de servos, montaje de sistemas de alimentación, acoplamiento del motor a las ruedas motrices, etcétera). También hay chasis ya específicos para este tipo de proyectos (para ir montando todas piezas del vehículo), e incluso como paquete completo.
Controlador (Raspberry Pi)
Usaré una Raspberry Pi que tenemos para hacer pruebas e inventos en la oficina, junto con varios componentes adicionales (cámara y sensores infrarrojos). Al tener instalado GNU/Linux (Raspbian) podré instalar librerías programables y el código que desarrolle / adapte para utilizar toda la información obtenida (imágenes, datos de sensores, etcétera), de forma muy sencilla, a la vez que podré utilizar las salidas que dispone (junto con algo más de electrónica adicional) para activar y controlar los servos de dirección y de aceleración del vehículo.
Sensores (cámara y sensor de infrarrojos)
Para obtener datos que pueda procesar, utilizaré una cámara (para procesar imágenes y saber por dónde va la carretera) que ya tiene integrados sensores infrarrojos (para detectar obstáculos frontalmente y evitar colisión), que es compatible con la Raspberry Pi.
Redes neuronales y procesado
El cerebro del coche autónomo (la inteligencia artificial AI) se basa en parte en redes neuronales que procesan las imágenes y datos de sensores disponibles (bien sean datos de radar, datos obtenidos mediante láser (LIDAR), imágenes, otros sensores instalados en el vehículo…).
Con esos datos de entrada y el entrenamiento correspondiente la red neuronal puede obtener una salida en cada momento y situación (por ejemplo, acelerar, frenar, girar… según su posición y el entorno en el que se encuentre el vehículo)
Usaré una librería para realizar el procesado de imágenes de la cámara como OpenCV (que es abierta y cualquiera la puede utilizar), o librerías para generar redes neuronales como Tensorflow.
Asimismo, como en el mundo hay mucha gente y alguna es brillante en lo suyo, en Github hay compartidos cientos de proyectos con código de ejemplo para crear sus propios coches autónomos. Incluso hay gente que ha creado sistemas para controlar el vehículo de forma remota y autónoma utilizando un teléfono móvil Android
Resultado esperado
Tras la configuración correspondiente, el resultado esperado es un coche que sea capaz de avanzar por una carretera virtual marcada en el suelo sin ayuda humana, e incluso respetar señales y semáforos. Un ejemplo sería el que se puede visualizar en el siguiente vídeo: