Skip to content
monkeyserna edited this page May 26, 2014 · 16 revisions

Resultado final

Este proyecto ha sido posible gracias a una gran cantidad de esfuerzo dedicado a lo largo de todo el curso académico, desde septiembre hasta mayo. Afortunadamente, la evolución del proyecto ha sido constante. Todos los hitos se han conseguido realizar en el tiempo establecido y se han logrado soluciones exitosas para todos los contratiempos que han surgido.

El planteamiento inicial consistía en controlar el desplazamiento de un robot mediante una aplicación Android y, a su vez, poder ver en la pantalla del dispositivo Android la señal de la cámara del robot en tiempo real. La forma de controlar el robot estaría basada en la posición física del dispositivo Android: haciendo uso de su acelerómetro se podría controlar la velocidad y el ángulo de giro a la vez. La conexión entre el robot y el dispositivo cliente se realizaría por Wi-Fi, lo que haría posible el control de robot a grandes distancias a través de Internet.

A nivel de hardware, se especificó que se emplearían los siguientes elementos:

  • Raspberry Pi
  • Arduino Due
  • GoShield-GR
  • Cámara
  • Adaptador Wi-Fi

Por un lado, la Raspberry Pi cumpliría tres funciones principales: conectarse a una red mediante Wi-Fi, recibir los comandos emitidos desde la aplicación Android y trasladarlos a Arduino, y enviar la señal de la cámara a la aplicación Android en tiempo real.

La placa Arduino Due sería la encargada de recibir los comandos enviados por la Raspberry Pi y convertirlos en señales de control de los motores situados en la placa GoShield-GR.

Por tanto, los objetivos marcados fueron los siguientes:

  • Crear una aplicación Android que controle el desplazamiento del vehículo por medio del acelerómetro y permita visualizar la señal de la cámara en tiempo real.
  • Programar en Arduino un controlador de motores con velocidad variable.
  • Crear dos servicios principales en la Raspberry Pi:
    • servidor de cámara en tiempo real
    • servidor de comandos
  • Establecer un canal de comunicación entre una placa Arduino y una Raspberry Pi.
  • Lograr una comunicación entre un dispositivo Android y la Raspberry Pi por medio de Wi-Fi.

Se han logrado cumplir todos los objetivos propuestos en el comienzo del proyecto. El planteamiento inicial contemplaba una parte de las características de lo que finalmente se ha llamado modo de control Drive. A esta modalidad se le ha añadido además la posibilidad de controlar la inclinación vertical por medio de un servomotor.

Quizás el mayor esfuerzo ha sido lograr crear un modo de control del robot adicional: un lenguaje de programación gráfico con el que programar comportamientos en el robot. Para ello, se ha implementado en JavaScript un traductor de bloques gráficos a Python. Estas traducciones son enviadas mediante WebSocket al servidor de la Raspberry Pi, escrito también en Python, que se encarga (en otras muchas tareas) de convertir lo que en un principio eran bloques gráficos a interacción real del robot.

A nivel de hardware, el robot final es mucho más completo que el planteado en los inicios. Se han incorporado piezas 3D y distintos módulos, como el servomotor y el sonar, que aumentan sustancialmente las posibilidades de este robot.

En el ámbito personal este proyecto ha reforzado muchos de los conocimientos adquiridos a lo largo de la carrera. Se han abarcado una gran cantidad de ramas de conocimiento relacionadas con la informática y la electrónica. Algunos de estos campos son:

  • Robótica
  • Electrónica y diseño de circuitos
  • Programación de microcontroladores
  • Programación en Python
  • Programación en Android (Java)
  • Programación de aplicaciones móviles con PhoneGap, un framework de desarrollo basado en tecnologías web (HTML, CSS y sobre todo JavaScript)
  • Procesamiento de lenguajes
  • Scripting en Bash
  • Manejo de Linux
  • Comunicaciones y redes
  • Diseño de piezas 3D

El resultado: un robot llamado Charlie.