Vehículo Robótico con Raspberry Pi

Introducción

¡Hola! Hemos desarrollado un vehículo robótico con la plataforma Raspberry Pi, y en esta entrada os vamos a explicar como hacerlo, pero primero empezaremos con una breve introducción al tema.

Los vehículos robotizados nos permiten adquirir datos del entorno, pudiendo acceder a zonas difíciles o imposibles para nosotros. Algunos ejemplos de uso de este tipo de robots son los conocidos Rover de exploración de Marte, como el Opportunity o el Curiosity. Además de estos robots de apoyo de misiones de exploración planetarias, también hay otros teleoperados para investigación de materiales peligrosos, derramamientos,  o similares.

Vehículo robótico de exploración

Centrándonos de nuevo en nuestro proyecto, hemos creado un vehículo robótico de exploración de entornos terrestres, principalmente de interiores. Este robot es capaz de captar información sobre el ambiente gracias a distintos transductores que tiene, y enviarla a un ordenador a través de Wifi.

Los transductores que conforman el robot son un acelerómetro, un transductor de temperatura y humedad, dos encoders, (uno en cada eje lateral) y tres ultrasónicos, uno de ellos incorpora además un sensor de luminosidad. Además también tiene una cámara con la que es posible grabar el entorno, o tomar fotos.

Control del robot

Desde el ordenador además de las mediciones realizadas por los transductores, pueden visualizarse, simultáneamente las imágenes captadas por una cámara ubicada en la parte delantera del robot, siendo visualizados en una interfaz gráfica ejecutada en dicho ordenador.

En la misma interfaz, se manejan los actuadores (motores, servos y un buzzer de aviso) del robot mediante una interfaz de flechas y botones.

¿Cómo se ha construido?

La placa principal que maneja todo el robot, es la Raspberry Pi 3 y los sistemas operativos donde los hemos implementado son dos:

  • Raspbian, sistema operativo oficial para dicha placa
  • Un sistema embebido creado para el propio robot y para esa Raspberry Pi en concreto, que se ha desarrollado utilizando la herramienta Buildroot.

En cuanto a los lenguajes de programación que se ha decidido emplear son Python y Java. Python para todo lo relacionado con los módulos de la Raspberry, los transductores, los actuadores, así como la cámara, una pantalla LCD y otros componentes del robot, mientras que Java se ha usado para desarrollar el cliente ejecutado en el ordenador mediante una interfaz gráfica generada con el programa Netbeans.

Todo los comandos intercambiados entre ordenador y Raspberry Pi, siguen un protocolo de comunicación definido específicamente por nosotros y quedarán registrados en un fichero almacenado en la Raspberry Pi que permita hacer un seguimiento del funcionamiento del mismo, para poder analizarlo en caso de fallo.

El robot tiene el siguiente aspecto:

robotraispi

Módulos que componen el robot

esquema

  • El módulo de los sensores ultrasónicos mide distancias entre el robot y los objetos más cercanos para hacer sonar una alarma (buzzer) en caso de proximidad excesiva.  En concreto se han utilizado 3, uno en cada lateral, y otro en la parte delantera del robot.

  • El acelerómetro se utiliza para calcular la pendiente del entorno.

  • También hay un módulo que capta la húmedad y la temperatura del ambiente.

  • Dos encoders que permiten calcular el sentido de giro de cada par de ruedas, así como la velocidad a la que lo hacen.

  • Una cámara para tomar fotos y grabar el entorno.

  • Una pantalla LCD para mostrar información del robot.

  • Y como actuadores, dos motores DC, dos servos, un buzzer y unos leds infrarrojos.

Estos componentes se han ido explicando más en detalle en otras entradas de esta web.

La ventana principal de la interfaz que maneja el robot, y que se ha diseñado en Java, tiene el siguiente aspecto:

interfazgrafica

Aquí tenéis un video de las primeras pruebas hechas con el robot.

https://www.youtube.com/watch?v=gc9hqNIlcBo

A continuación se detallan sub-sistemas utilizados en el robot.