Podcast: Descargar (26.9MB)
Cuando hablamos de vehículo autónomo, sin conductor o no tripulado es ineludible pensar en vehículos futuristas sacados de alguna película de ciencia ficción. A día de hoy, no podemos ver ninguno por nuestras ciudades, pero sin duda alguna, se está avanzando mucho en el desarrollo de esta materia. Gracias al abaratamiento de la tecnología y la accesibilidad a todo el mundo, podríamos crear nuestro propio vehículo autónomo a muy bajo coste. Precisamente hoy, te voy a hablar de ello. Voy a aplicar ciertas técnicas que harán que el tiesto inteligente pueda moverse por si solo, sin nuestra ayuda.
Lo primero que se nos viene a la cabeza son los coches. En la actualidad hay varias empresas desarrollando este tipo de vehículos, pero no solo el sector automovilístico se puede beneficiar. Se están llevando a cabo varios proyectos para cubrir las necesidades en diferentes sectores como el doméstico, industrial, agrícola y, como no, el sector espacial. Y aunque todo esto pueda sonar muy lejano, es importante recalcar que lo interesante es conocer cómo funcionan las cosas. El pasado mes de julio publicaron una entrevista a David Cuartielles, CEO de Arduino. David hace mucho hincapié en que «debemos entender cómo funciona el mundo para poder cambiarlo«.
Un ejemplo sería el proyecto en el que estoy trabajando, el tiesto inteligente. Estoy desarrollando un algoritmo que permita al Pirate 4WD Mobile Platform moverse de forma autónoma. Todo esto lo estoy haciendo gracias a dos sensores de ultrasonidos, dos servomotores y Arduino.
No pretendo cambiar el mundo, ni si quiera que hablen de mi en las redes sociales. Lo único que pretendo es enseñar a fijarnos y aprender lo que han hecho otras personas. Comprender cuales son los problemas a los que se enfrentan día a día. Solo así seremos capaces de entender cómo funcionan las cosas y poder cambiarlas en nuestro entorno. Nuestra intención no debe ser cambiar el mundo en términos globales, con ser capaces de cambiar a nuestros hijos, sobrinos, familiares o vecinos, estaremos aportando nuestro granito de arena.
El pensamiento computacional tendrá mucho que decir en este tipo de proyectos. Dependerá de nuestra capacidad de dividir un problema en partes más asequibles. Problemas más pequeños a los que podamos enfrentarnos con más facilidad.
Y precisamente en el Campus de Programarfacil es lo que te ofrezco. Formación en Arduino, programación, electrónica y todo aquello relacionado con el movimiento Maker. El conocimiento es el único camino para entender el mundo que nos rodea.
Indice de contenidos
Vehículo autónomo o no tripulado
Entendemos por vehículo autónomo o no tripulado todo aquel capaz de moverse sin la acción directa del ser humano. En la carrera espacial encontramos diferentes vehículos de este tipo. Uno de los más conocidos es el Curiosity Rover. Pero también hay otros como el Pathfinder. En el sector agrícola podemos ver los avances en el proyecto RHEA (Robot Fleets for Highly Effective Agriculture and Forestry Management) impulsado por la Unión Europea. Incluso en el sector doméstico encontramos robots como el iRobot o el Neato. Pero quizás, los que más destacan son los coches autónomos o no tripulados. Empresas como Google, Tesla, Apple y todas las compañías automovilísticas, están invirtiendo mucho dinero para sacar sus prototipos adelante.
Pero todos tienen algo en común. Deben de reconocer el entorno en el que se mueven y los posibles obstáculos para esquivarlos. Las técnicas, hardware y algoritmos que utilicen dependerá del tipo de vehículo y condiciones en las que se mueva. Pueden utilizar tecnologías como cámaras donde se apliquen técnicas de visión artificial, lasers LIDAR (Light Detection and Ranging), ultrasonidos, escáneres 3D o el geoposicionamiento. Todo para conseguir moverse por si solos.
Este tipo de tecnología surgió en los años 60 cuando la carrera espacial estaba en su mayor auge. Esto ayudó al desarrollo de vehículos autónomos. Cabría pensar que una de las posibles opciones sería un control remoto sobre los vehículos, pero cuando hablamos de explorar el universo, existe un verdadero problema. Las distancias se hacen inmensas y en consecuencia, se produce un retardo en la señal muy considerable. Para que te hagas una idea, enviar un comando básico a la Luna tarda 2,5 segundos y a Marte 14 minutos. Todo esto es debido a la propia naturaleza de las ondas electromagnéticas y su velocidad de propagación. Por este motivo, los vehículos marcianos y lunares, deben ser totalmente autónomos.
Ventajas e inconvenientes de los vehículos autónomos
Como ocurre con casi todo, podemos encontrar ventajas e inconvenientes a la hora de utilizar este tipo de vehículos.
Ventajas
- Se eliminan los errores humanos, disminuyendo así el número de accidentes.
- El tráfico es más eficiente, pueden circular más coches y disminuir los atascos.
- Los ocupantes podrán dedicar el tiempo a otra cosa cómo leer, jugar o trabajar.
- Se conseguirá un ahorro en combustible y la posibilidad de utilizar fuentes alternativas de energía.
- No será necesario buscar aparcamiento. El vehículo nos dejará en nuestro destino y el solo se irá a aparcar aunque sea lejos. Una vez que lo necesitemos volverá a buscarnos
Inconvenientes
- Se puede producir un efecto contrario. Si cualquier persona puede tener un coche ya sepa conducir o no, también subirá el número de vehículos en las carreteras produciéndose todavía más congestión en las entradas y salidas de las ciudades.
- Se produciría una disminución del uso de transporte público que puede conllevar a una mayor contaminación y a la saturación del centro de las ciudades.
- Sectores como los talleres y aseguradoras no tendrían sentido si los coches son 100% eficaces frente a accidentes
Dentro de la gama de diferentes vehículos, yo me he fijado en dos. En el Curiosity Rover y en el Self-driving Google Car.
Curisity Rover
Este vehículo es totalmente autónomo. Fue lanzado por la NASA en el año 2011 a Marte para analizar y estudiar el planeta Rojo. Está dotado de dos ordenadores o CPUs. Cada una es una réplica de la otra y una de ellas sirve de sistema redundante. Su hardware incluye 256 MB de DRAM, 2 GB de memoria Flash (el Arduino UNO solo tiene 32 kB) y 256 kB de EEPROM, memoria no volátil (el Arduino UNO tiene 1 kB y el Arduino MKR1000 no tiene). Todo esto va acompañado de multitud de sensores que le permiten monitorizar su propio estado de salud.
Para poder moverse sin ningún peligro, incorpora 12 cámaras de diferentes tipos.
- 8 cámaras Hazcams, cámaras especiales para evitar riesgos.
- 4 cámaras Navcams, cámaras de navegación que complementan las cámaras Hazcams.
Además dispone de 5 cámaras más para analizar los componentes de la superficie marciana. Pero lo realmente importante en el Curiosity reside en el software. Es el cerebro y el encargado de analizar todos los datos obtenidos y tomar decisiones en tiempo real. Cualquier imprevisto a más de 200 millones de kilómetros, puede llevar al traste la misión.
Self-driving Google Car
Al contrario que Curiosity, el vehículo autónomo de Google se moverá en un entorno muy hostil. Deberá compartir su camino con el resto de vehículos conducidos por los seres humanos. En muchas ocasiones se producirán situaciones que no se puedan controlar debido a nuestro carácter espontáneo, que nos hace únicos.
Este vehículo autónomo utiliza sensores y software capaz de detectar peatones, ciclistas y demás coches que circulen por su alrededor. Mediante el análisis de mapas y sensores, el coche sabe donde está en todo momento. Pero no solo la calle, también es capaz de detectar el carril donde se encuentra.
Los sensores ayudan a detectar objetos a su alrededor. Luego el software es el encargado de clasificarlos en función de su tamaño, forma y patrón de movimiento.
Uno de sus puntos fuertes es la capacidad de predicción. Gracias a su software, puede predecir el movimiento de los objetos analizados como peatones, ciclistas y demás vehículos. Todo esto lo hace en tiempo real gracias a su potente hardware.
El equipamiento básico para convertirse en un vehículo autónomo es el siguiente.
- En la parte superior incorpora un escáner LIDAR que hace una recreación de su entorno en 3D.
- Cámara frontal para detectar los demás vehículos y señales de tráfico.
- 4 radares en la parte trasera y delantera para mantener la distancia de seguridad.
- Incorpora un GPS para su localización.
- Un sensor de ultrasonidos en la ruedas traseras para mantener un registro de movimientos y alertar de obstáculos en la parte trasera. Es la misma tecnología que utilizan los coches que incorporan la asistencia en aparcamiento.
- Dentro del coche tiene altímetros, giroscopios y taquímetros para determinar la posición del coche de una manera muy precisa.
- Por supuesto que incorpora una CPU (ordenador) para procesar toda la información de los sensores.
- El software es capaz de interpretar las señales e incluso el comportamiento de las personas y demás vehículos.
Vehículo autónomo con sensores de ultrasonidos y Arduino
Lo primero que tengo que decir es que yo no tengo ni los conocimientos ni los recursos que tienen la NASA y Google. Estas compañías tienen un ejercito de ingenieros detrás desarrollando sus propios productos. Pero si que podemos obtener ideas de los proyectos que llevan a cabo. Construir un vehículo de este tipo es muy complicado. Llevo una semana trabajando en el algoritmo y por fin he conseguido tener una primera versión. Por supuesto que este algoritmo se modificará en base a las pruebas que vaya realizando.
El equipamiento del robot va a constar de dos sensores de ultrasonidos y dos servomotores. De momento nos vamos a centrar en esquivar el mayor número de obstáculos posibles. Cada sensor irá montado en un servomotor en la parte delantera y trasera del DFRobot. Esto nos permitirá movernos adelante y atrás.
Uno de los problemas que nos vamos a encontrar es que no sabremos en que dirección estamos. Esto no lo resolveremos hoy, dejando sin cerrar esta tarea para el futuro. Solo te adelanto que necesitaremos un módulo brújula para Arduino para detectar la dirección en la que se mueve.
Los giros son muy importantes. Este tipo de robots tiene las ruedas fijas y por lo tanto debemos girar de otra manera. Si queremos girar a la derecha, solo tenemos que mover las ruedas izquierdas hacia adelante y las de la derecha hacia atrás. Si por el contrario queremos girar a la izquierda, moveremos las ruedas derechas hacia adelante y las de la izquierda hacia atrás. Recuerda que en el capítulo anterior te contaba que ir hacia adelante o hacia atrás, dependerá de la polaridad y de como situemos los motores.
Algoritmo de detección de objetos con Arduino
El algoritmo es lo realmente complejo si queremos crear un vehículo autónomo con Arduino. A continuación te voy a dejar las nociones básicas en el siguiente pseudocódigo. En un futuro tutorial detallaré todas las fases de dicho algoritmo.
- Movemos el robot hacia adelante, velocidad lenta.
- Comenzamos a hacer barridos con el sensor de ultrasonidos delanteros.
- Barrido de 0º a 180º
- Si se detecta un objeto por debajo de un umbral
- Poner servomotor en ese ángulo
- Hacer un promedio de n valores
- Comprobar el positivo
- Salimos
- Si no se detecta que continue
- Si se detecta un objeto por debajo de un umbral
- Barrido de 180º a 0º
- Si se detecta un objeto por debajo de un umbral
- Poner servomotor en ese ángulo
- Hacer un promedio de n valores
- Comprobar el positivo
- Salimos
- Si no se detecta que continue
- Si se detecta un objeto por debajo de un umbral
- Si ha detectado un obstáculo
- Situar sonar en el ángulo donde detectó
- Si el ángulo es de 0º a 60º => girar a la derecha
- Si el ángulo es de 60º a 120º => girar a la derecha
- Si el ángulo es de 120º a 180º => girar a la izquierda
- Barrido de 0º a 180º
Esta sería una primera aproximación de lo que quiero conseguir. Todavía queda mucho trabajo por hacer pero las primeras pruebas, son prometedoras. Te seguiré informando tanto el blog como en el podcast.
Puedes escuchar este programa en, iVoox, iTunes y en Spreaker. Si lo haces, por favor valora y comenta, así podremos llegar a más gente.
Conocer como funciona el mundo es la única manera de poder cambiarlo.