Skip to content
monkeyserna edited this page May 27, 2014 · 25 revisions

Evolución del proyecto

En este apartado se detalla la evolución del proyecto a lo largo de sus iteraciones, mostrando los avances, objetivos, problemas surgidos y resultados.

19 de septiembre de 2013

Propuesta del proyecto.

24 de septiembre de 2013

Reunión inicial. Aprobación y especificación del proyecto.

22 de octubre de 2013

Avances
Configuración e instalación de dependecias en Raspberry Pi.
Configurada red Wi-Fi Ad Hoc.
Comunicación Cliente (Android) - Servidor (Raspberry Pi) mediante datagramas UDP.
Comunicación Raspberry Pi - Arduino Due mediante conexión USB.
Creado servidor UDP en Python sobre Raspberry Pi.
Creada aplicación nativa en Android que envía datagramas al servidor indicando datos del acelerómetro.
Conversión de datos del acelerómetro a diferencias de velocidad de motores mediante Arduino.
Objetivos para la siguiente iteración
Mejorar comunicación UDP, añadiendo byte de numerado de paquetes y descartando los valores desordenados.
Crear servidor de cámara.
Resultado
Primer prototipo del robot.
Mediante el acelerómetro de un dispositivo Android es posible controlar el desplazamiento del robot.
Vídeo del primer prototipo: https://www.youtube.com/watch?v=RlNEMqJr_3E

17 de diciembre de 2013

Avances
Creado servidor de cámara en tiempo real.
Añadido módulo ultrasonidos SR-04.
Creada función de frenado de emergencia (si el sonar detecta un objeto a menos de 10cm, realiza un frenado de emergencia).
Añadida función claxon.
Mejorada comunicación UDP: Añadido byte de numeración de paquetes, y descartado de valores caducados.
Creado script de arranque: Los servidores se inician automáticamente al encender la Raspberry Pi.
Problemas surgidos Solución adoptada
Retrasos inaceptables (+5 segundos) en la transmisión de la señal de la cámara mediante el servidor VNC empleado. Sustitución de VNC por un servidor de imágenes JPG (retraso menor que 0.3 segundos).
La lectura del sonar provoca bloqueos en en código cuando no hay ningún objeto cerca. Incorporación de un microcontrolador secundario AtTiny85V que se encarga de realizar la lectura del sonar, y enviar estas lecturas a Arduino Due mediante comunicación I2C.
Las limitaciones del sonar (que en ocasiones devuelve lecturas erróneas) a veces provoca la activación del frenado de emergencia cuando no procede. Lecturas múltiples, descartando valores atípicos mediante media truncada.
Objetivos para la siguiente iteración
Iteración de investigación. Aprendizaje de Blockly, y de cómo crear un traductor a Python en JavaScript.
Resultado
Segundo prototipo del robot.
Desde la aplicación Android es posible ver la señal de la cámara en tiempo real y hacer sonar el claxon. Se ha incorporado un sonar, que cuando detecta un objeto a menos de 10 centímetros realiza un frenazo de emergencia.
Propuestas de mejora
Crear un lenguaje de programación gráfico para poder controlar el robot.

25 de febrero de 2014

Avances
Aprendizaje de PhoneGap
Aprendizaje de Blockly
Investigación sobre soluciones a los problemas existentes con la lectura del sonar
Diseño conceptual de bloques gráficos
Objetivos para la siguiente iteración
Diseño del modo de programación gráfica.

25 de marzo de 2014

Avances
Migración de todo el proyecto a PhoneGap
Refactorización del proyecto. El cliente Android se reescribe desde cero
Cambio de protocolo de comunicación entre cliente (Android) y servidor (Raspberry Pi).Se sustituye el protocolo UDP por WebSocket.
Descartada la aplicación Android realizada anteriormente.
Puesta a punto para la futura implementación del modo de programación gráfica.
Realizado diseño conceptual de los bloques a implementar, así como una recopilación de información de cómo lograr a cabo este objetivo. Creada vista de modo Code, e importado código fuente de Blockly.
Problemas surgidos Solución adoptada
El módulo de frenado de emergencia tiene fallos de lectura que afectan al correcto funcionamiento del robot. Se decide descartar el módulo de frenado de emergencia, al no proporcionar resultados satisfactorios y tener unas ventajas limitadas. Este módulo se podrá realizar por el usuario mediante la programación de bloques gráficos.
Blockly no se ejecuta correctamente en Android debido a un fallo conocido. Se descarta la aplicación nativa de Java. Migración a PhoneGap.
Objetivos para la siguiente iteración
Implementar bloques del modo de programación gráfica.
Resultado
Nueva aplicación Android. Interfaz amigable y vistosa, que integra los dos modos de control en una única aplicación. Primera versión funcional del modo Drive, también llamado modo de conducción libre.

6 de mayo de 2014

Avances
Implementado modo de programación gráfica.
Creados 20 bloques propios.
Incorporado servomotor.
Creada estructura mediante piezas 3D, para poder controlar la inclinación vertical del sonar y la cámara por medio de un servomotor.
Implementación de lectura del sonar y control de posición del servo en Python.
Incorporada barra deslizante en el modo de conducción libre para poder controlar la inclinación de la cámara.
Migración del modo Code a página web. Esta forma de control pasa a estar disponible también desde una página web.
Objetivos para la siguiente iteración
Añadir bloque de lectura analógica de los sensores frontales.
Realizar memoria abierta en Wiki de GitHub
Resultado
Tercer prototipo del robot.
Aplicación Android funcional. Los dos modos de control funcionan correctamente.
Se ha incluido un servo al robot para controlar la inclinación vertical de la cámara y el sonar.
El modo de programación gráfica está disponible tanto desde la aplicación Android como desde una página web.
Video del prototipo: https://www.youtube.com/watch?v=nfWoZmEDF4Y

24 de mayo de 2014

Avances
Creado bloque de lectura analógica de sensores frontales.
Realización de pruebas, detección y corrección de fallos.
Creada memoria abierta del proyecto en Wiki de GitHub.
Implementación de códigos de ejemplo para el modo de programación gráfica.
Clone this wiki locally