= Etapa final de desarrollo del robot RoMAA-II =
<<TableOfContents()>>

== Introducción ==
El desarrollo del robot móvil [[Robotica/RoMAA|RoMAA]] se llevo a cabo en diferentes etapas en las cuales fueron evolucionando las distintas partes que componen el proyecto. Las que pueden ser divididas principalmente entre la parte mecánica, el hardware y el software, tanto el firmware del control embebido como el de la PC de a bordo.

== Objetivos generales ==
La etapa final del desarrollo del robot RoMAA-II tiene como objetivos obtener una versión congelada de las diferentes partes que formar el robot RoMAA para disponer de una versión operativa completa para transferencia y como plataforma de experimentación en robótica móvil. Además, de generar la documentación y el manual de usuario correspondiente.

== Objetivos particulares ==
Los objetivos particulares corresponden a obtener las versiones finales de:

 * El hardware del control embebido de abordo del robot RoMAA.<<BR>>Responsables: '''Daniel Marchetti, Lucas Martini y Santiago Pérez. '''
 * El firmware del control embebido.<<BR>>Responsables: '''Lucas Martini, Néstor Palomeque y Santiago Pérez. '''
 * Librería de programación en C++ (clase) para la comunicación con el robot.<<BR>>Responsables: '''Lucas Martini, Néstor Palomeque y ''''''Gonzalo Pérez Paina''''''.'''
 * Driver para el entorno de desarrollo de robotica Player.<<BR>>Responsable: '''Gonzalo Pérez Paina.'''
 * Modelo de simulación para el simulador Stage, con diferentes sensores a bordo.<<BR>>Responsable: '''Gonzalo Pérez Paina.'''

== Desarrollo ==
<<Color2(red,La sección desarrollo se borrará una vez finalizadas las tareas)>>

=== Hardware de control embebido ===
El hardware de control embebido consta de la electrónica para controlar los motores de tracción y comunicación con la PC de a bordo. Incluye drivers de potencia basados en llave H y la unidad de proceso basada en un microcontrolador ARM7.

Los desarrollos necesarios para obtener la versión final correspondiente al RoMAA-II son:
||<tablewidth="941px">''Tareas'' ||''Responsable'' ||''Estado'' ||Plazo ||
||El montaje de la placa de procesamiento con uC ARM7 basada en el desarrollo realizado en [1], con las modificaciones necesarias para el funcionamiento de los motores con 12V. ||Daniel Marchetti y Santiago Pérez ||<<Color2(green,Finalizado)>> ||3 sem. (08/10/10) ||
||Gabinete adecuado para contener tanto los drives de los motores y la placa del uC. ||Daniel Marchetti y Lucas Martini ||<<Color2(green,Finalizado)>> ||3 sem. (08/10/10) ||
||Panel de control que se conecta a la placa del uC y  dispone de las conexiones e indicadores necesarios para la operación del  robot. Además, de parada de emergencia de fácil accionamiento. ||Daniel Marchetti y Lucas Martini ||<<Color2(green,Finalizado)>> ||3 sem. (08/10/10) ||
||Cargador de Baterías conmutado (12V/3-4A) ||Daniel Marchetti y Néstor Palomeque ||<<Color2(red,Activo)>> ||1 sem. (29/10/10) ||




==== Notas ====
20/09/2010

 * Se ha montado todo lo referido al funcionamiento del LPC2114. Solo falta el regulador de 3.3V y el conversor USB-RS232 por falta de stock, para poder probar el funcionamiento del microcontrolador. ('''Daniel Marchetti y Santiago Pérez''')<<BR>>Se debe definir la adquisición de dichos componentes en esta semana. ('''Santiago Pérez''')<<BR>>Se intentará finalizar con el armado de la placa en esta semana, si se poseen todos los componentes. ('''Daniel Marchetti''')
 * Se están probando las nuevas llaves H y definiendo en esta semana los conectores que se usarán con los motores, como así también el gabinete y el montaje que se realizará. Se intentará finalizarlo esta semana.  ('''Lucas Martini''')

25/09/2010

 * Se termino de soldar todo lo referente al funcionamiento del microcontrolador y se probó su correcto funcionamiento. Ya tiene FreeRTOS embebido funcionando.<<BR>>No se consiguió aún el CP2102 (el funcionamiento se probó con un MAX232). En teoría la semana que viene "deberían" llegar. Esta semana se consultará nuevamente a Electrocomponentes para saber de su procedencia. ('''Santiago Pérez''')
 * Se terminaron de probar las llaves H y ya se montaron en la placa madre vieja para ser usadas a modo de prueba durante un tiempo. ('''Lucas Martini''')<<BR>>Se consiguieron los conectores aéreos para la conexión llaves H con motores. Se están montando. ('''Lucas Martini''')
 * Se comenzó con el diseño del panel de control externo. ('''Lucas Martini''')

04/10/2010

 * Se finalizó con el montaje y prueba del panel de control, incluyendo el conjunto parada de emergencia/encendido/relé, leds de debug y conexionado a la placa de control. ('''Todos''').
 * Al PCB de la placa de controlsolo falta soldarle el converosr CP2102 (en espera de respuesta de [[http://www.controlcomp.com/home.htm|SparkFun]] Córdoba) y sus componentes asociados, resoldar los reguladores, sellar la bobina y limpiar la placa. ('''Daniel Marchetti y Santiago Pérez''')
 * El gabinete de control aún no está listo. Falta comprar los separadores ajustables para poder montarlo con las distancias adecuadas y realizar las perforaciones necesarias para los leds de las llaves H, encoders, etc. ('''Lucas Martini y Daniel Marchetti''')

08/10/10

 * Ya se consiguieron los CP2102. Se compraro tres unidades que serán recibidas el martes. Se procederá a su soldadura y prueba.

 * Detalles de montaje faltantes:
  * pegar la goma delos bordes
  * pegar el velcro del panel de control externo
  * pegar el velcro del gabinete de control

=== Firmware ===
El firmware del uC ARM7 para esta versión corresponde [1]. Las modificaciones necesarias son:
||<tablewidth="941px">''Tareas'' ||''Responsable'' ||''Estado'' ||Plazo ||
||Cerrar la versión de las ciiiemblibs a utilizar y subirlas al servidor Mercurial. ||Néstor Palomeque ||<<Color2(green,Finalizado)>> ||- ||
||Modificar el firmware (con RTOS) para utilizar la última versión de las ciiiemblibs. ||Santiago Pérez ||<<Color2(red,Activo)>> ||4 sem. (29/10/10) ||
||Corregir el bug que impide forzar a los motores (por ejemplo funcionamiento sobre alfombra). ||Néstor Palomeque y David Gaydou. ||<<Color2(green,Finalizado)>> ||1 sem. (29/10/10) ||
||Crear el proyecto en el servidor de Mercurial para el firmware del RoMAA-II. ||Santiago Pérez ||Pasivo ||1 día. (15/10/10) ||
||Manual final de los modos de funcionamiento y comandos del control embebido. ||Lucas Martini y Santiago Pérez. ||<<Color2(red,Activo)>> ||1 sem. (29/10/10) ||




==== Notas ====
20/09/2010

 * Se comenzará con el agregado de las nuevas {{{ciiiemblibs}}} al control del RoMAA-II. ('''Santiago Pérez''')
 * Se trabajará con la optimización del funcionamiento del FreeRTOS, tanto en su "limpieza" y ordenamiento de código, como así también con la utilización de los recursos del RTOS. ('''Santiago Pérez''')

08/10/10

 * Ya se modificó el RTOS con las librerías nuevas pero aun no se ha podido probar por el montaje del carro.
 * Se deben hacer algunas modificaciones simples de limpieza y reordenamiento una vez que se haya probado el correcto funcionamiento de las librerías. Se extiende el plazo al viernes 15/10/10.
 * Se comenzó con la correción del bug en el RoMAA-II. Ya se están realizando pruebas en el nuevo hardware.
 * Se da comienzo a la creación del manual del RoMAA-II.

=== Librería de programación ===
La librería para comunicarse con el control embebido del robot pertenece a las ciiilibs. Tareas a realizar son:
||<tablewidth="941px">''Tareas'' ||''Responsable'' ||''Estado'' ||Plazo ||
||Terminar la programación de la clase de comunicación con el robot utilizando las librerías de com. serie flexiport. ||Lucas Martini y Néstor Palomeque ||<<Color2(green,Finalizado)>> ||1 sem. (27/09/10) ||
||Probar la clase para detectar posible errores de comunicación (sincronización) entre la PC de a bordo y el control embebido. ||Néstor Palomeque ||<<Color2(green,Finalizado)>> ||1 sem. (01/10/10) ||
||Agregar la versión final de la clase a las ciiilibs en el servidor de Mercurial. ||Gonzalo Perez Paina ||<<Color2(green,Finalizado)>> ||1 día ||




==== Notas ====
27/09/2010

 * Se finalizó la corrección de la clase de comunicación utilizando las librerías {{{flexiport}}}, con el agregado de delays para el correcto funcionamiento de la recepción por RS232. ('''Néstor Palomeque''')
 * Se está probando la comunicación con el control embebido para detectar posibles errores. ('''Néstor Palomeque''')

=== Driver de Player ===
Driver plugin que utiliza la clase romaacomms compatible con la versión 3.0 de Player. Tareas a realizar:
||<tablewidth="941px">''Tareas'' ||''Responsable'' ||''Estado'' ||Plazo ||
||Programación del nuevo driver que permita manejar el robot RoMAA con Player tanto con comandos de velocidad lineal y angular como de velocidad de cada rueda. ||Gonzalo Pérez Paina ||<<Color2(red,Activo)>> ||4 sem. (29/10/10) ||
||Subir el driver al repositorio Mercurial. ||Gonzalo Pérez Paina ||Pasivo ||1 día. (08/10/10) ||




=== Modelo para el simulador Stage ===
Modelo para el simulador Stage compatible con la versión 3.2, con la posibilidad de agregarle sensores como un anillo de sonares o escáner láser.
||<tablewidth="941px">''Tareas'' ||''Responsable'' ||''Estado'' ||Plazo ||
||Modelo para el Simulador Stage compatible con la versión 3.2 ||Gonzalo Pérez Paina ||<<Color2(green,Finalizado)>> ||1 sem. (24/09/10) ||




== Documentación ==
El robot RoMAA-II se componen de las siguientes partes:

==== Nota ====
En esta sección deben estar los links directos para descargar los esquemáticos, PCB, librerías, software, etc. Además, puede estar el link a la página de desarrollo con mayor explicación. Pero todo debería ser descargado de aquí.

------
=== Hardware ===
 * [[LabElectronica/LlaveH110|Drivers de potencia basadas en llaves H]]
 * [[LabElectronica/FreeRTOSLpc2114Web|Placa de control]]
 * [[LabElectronica/PanelInterruptores100|Panel de control]]
 * [[LabElectronica/CableadoElectrico|Cableado eléctrico]]
 * [[LabElectronica/ConjuntoMecanico|Conjunto  mecánico]]
------
=== Firmware ===
==== ciiiemblibs ====
La versión de las `ciiiemblibs` utilizadas por el firmware del robot RoMAA-II corresponde a la `revisión 0`. Y se pueden descargar de [[http://proyectos.ciii.frc.utn.edu.ar/ciiiemblibs|ciiiemblibs]] con el comando {{{hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/ciiiemblibs}}}

==== Firmware de control con RTOS ====
------
=== Software PC ===
==== Clase de comunicación ====
La clase de comunicación con el robot RoMAA se encuentra en las librerías [[http://proyectos.ciii.frc.utn.edu.ar/romaa_player_driver_v2.0/|ciiilibs]] correspondientes a la revisión `74`.  Se puede descargar del servidor con {{{hg clone -r 74 https://proyectos.ciii.frc.utn.edu.ar/hg/ciiilibs}}} La clase de comunicación utiliza la librería [[http://gearbox.sourceforge.net/group__gbx__library__flexiport.html|flexiport]] del proyecto [[http://gearbox.sourceforge.net/index.html|GearBox]], que deben estar instaladas para la compilación.

==== Driver del RoMAA para Player ====
El driver de Player se puede descargar del siguiente [[http://proyectos.ciii.frc.utn.edu.ar/romaa_player_driver_v2.0/|link]]. La revisión correspondiente a descargar es `3`.
Se puede ver una descripción de la programación del driver y el archivo de configuración [[Robotica/PlayerDriverRoMAA200Web|aqui]].

==== Modelo de simulación para Stage ====
El modelo de simulación del robot RoMAA con sensores de ultrasonido es [[attachment:Robotica/StageRoMAA200Web/romaa.inc|romaa.inc]]. Se puede ver una descripción breve de la generación del modelo y archivos de ejemplo [[Robotica/StageRoMAA200Web|aqui]].

------
=== Conjunto Mecánico ===
 * Deberíamos poner también los planos constructivos, los materiales de las placas, datos de los conjuntos motorreductores, etc. Estaría bueno tener los indicados los costos.

== Referencias ==
 * [1].- ''"Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización"''. Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino. [[LabElectronica/FreeRTOSLpc2114Web|Ir]]