-
Notifications
You must be signed in to change notification settings - Fork 0
evolución
monkeyserna edited this page May 27, 2014
·
25 revisions
En este apartado se detalla la evolución del proyecto a lo largo de sus iteraciones, mostrando los avances, objetivos, problemas surgidos y resultados.
Propuesta del proyecto.
Reunión inicial. Aprobación y especificación del proyecto.
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 |
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. |
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. |
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. |
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 |
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. |
- Introducción
- Qué es Charlie
- Objetivos
- Alcance
- Proyectos similares
- Cómo controlar el robot
- Aspectos generales
- Modo de conducción libre
- Modo de programación gráfica 1. Ejemplos 2. Referencia de instrucciones
- Depuración
- Instalación
- Hardware
- Software
- Configuración de red
- Funcionamiento
- Comunicaciones
- Blockly
- Motores
- Cámara
- Comandos
- Explicación del código fuente
- Código de Arduino
- Aplicación Android
- Página web
- Servidor de comandos
- Script de arranque
- Resultados
- Evolución del proyecto
- Trabajo descartado
- Futuras ampliaciones
- Resultado final
- Agradecimientos
- Referencias
- Fuentes consultadas
- Datasheets