## page was renamed from Robotica/RoMAARobot
## page was renamed from Robotica/RoMAA
#acl BecariosGrupo:read,write,revert All:read
#acl Default All:read
= Robot Móvil de Arquitectura Abierta - RoMAA =
{{attachment:romaa12.jpg||width=400}}
{{{#!wiki tip
El desarrollo actual de robot '''RoMAA-II''' puede verse '''[[ ProyPID2010RoMAA/DesarrolloRoMAAII | aqui ]]'''.
}}}
== Descripción general ==
La construcción del robot '''RoMAA''' surge como respuesta a la necesidad de disponer de una plataforma sobre la cual ensayar y validar las investigaciones llevadas a cabo en el ''Centro de Investigación en Informática para la Ingeniería'', las cuales se enmarcan en las áreas de visión por computadora, control automático y robótica. <
>
La estructura elegida es de tracción diferencial de tres ruedas, dos de las cuales son de tracción controladas individualmente y una rueda giratoria atrás; esta configuración es una de las más apropiadas y utilizadas en ambientes interiores. <
>
La zona de carga útil, al frente del vehículo, permite la colocación de sensores como cámaras, scanners laser, sensores ultrasónicos; así como actuadores: unidad pan and tilt y brazos robóticos.
== Versiones ==
El desarrollo del robot móvil RoMAA, se llevo a cabo en diferentes etapas obteniendo como resultado '''dos versiones''' diferentes del proyecto.
La '''primer versión''' del desarrollo surge como proyecto interno dentro del área de robótica del Centro, de la cual se obtuvo un prototipo bautizado en ese momento como RoMAA (Robot Móvil de Arquitectura Abierta), el cual se presentó en las ''"V Jornadas Argentinas de Robótica"'' (JAR'08) [1].
La '''segunda versión''' o RoMAA-II, se desarrolló bajo el proyecto U.T.N. PID [[ProyPID2010RoMAA | "Robot Móvil de Arquitectura Abierta RoMAA-II" ]], de la Universidad Tecnológica Nacional, Regional Córdoba.
=== Características ===
<
>
||'''Componentes''' ||<:>'''RoMMA''' ||<:>'''RoMAA-II''' ||
||<:>{{attachment:RoMAA.jpg||width=240}}||<:>{{attachment:Robotica/Fotos/romaaii012.jpg||width=240}}||
|| Motores || Motorreductor planetario [[http://www.ignis.com.ar/|Ignis]] [[attachment:mr10.pdf|MR103-400]] || Motores [[http://www.remssi.com.ar/|Remssi]] [[http://www.remssi.com.ar/Espanol/Index.htm|551202]] ||
|| Reductores ||a tornillo [[http://transpowersrl.com/PDF/02%20-%20NMRV025.pdf|NMRV 025]] 1:7.5 ||
|| Encoders Autonics || [[attachment:Autonics-E40.pdf|E40H-6-100-2-1-24]] ([[http://www.silge.com.ar/|Silge S.A.]]) || [[attachment:Autonics-E40.pdf|E40HB10-1000-3-T-24]] ([[http://www.silge.com.ar/|Silge S.A.]]) ||
|| Baterías [[http://www.probattery.com.ar/nueva/|Probattery]] || 2x[[attachment:Probattery_BSLA-12260-CPB.pdf|BSLA-12260-CPB]] || 1x[[attachment:Probattery_BSLA-12260-CPB.pdf|BSLA-12260-CPB]] ||
== Desarrollo del robot RoMAA ==
Incialmente se comieza el desarrollo del robot móvil partiendo de la estructura mecánica, la cual incluye el sistema energético compuesto por 2 baterías de 12V (teniendo un bus de alimentación de 24V), dos motores de CC con caja reductora asociados a cada rueda, y los encoders ópticos incrementales para cerrar el lazo de control de tracción. <
>
La electrónica de abordo para el control del robot incluye 2 drivers de potencia en configuración llave H para la excitación de cada motor, y un controlador para realizar el cálculo del cierre de lazo a partir de lectura de los encoders ópticos basado en un microcontrolador ARM7TDMI (de 32bits y 60MHz de frecuencia de clock), y generar las señanes de modulación de ancho de pulso (PWM) para comandar las llaves H. <
>
El objetivo inicial del desarrollo era poder controlar tanto la velocidad lineal y angular (v,w) del robot, de manera que el controlador embebido tiene que generar las referencias de velocidad para cada motor (izq,der) para tal objetivo. Además, el controlador debe recibir los comandos de control a partir de una conexión serie (RS232) de la PC de abordo, y llevar un registro de los pulsos de encoders para el cálculo de la odometría del robot. <
>
Las primeras versiones de prueba del controlador embebido se utilizan números enteros para representar todas las mediciones y comandos, y la trama de comunicación con la PC de a bordo estaba basada en caracteres ASCII, esto permitió poder hacer debbug del firmware mediante una terminal desde la PC de a bordo. Para enviar ordenes desde la PC de abordo se utilizaba un joystick para generar las referencias enviadas al controlador por el puerto serie. Una descripción mas detallada de su desarrollo y evolución puede verse en
* [[Robotica/RoMAARobot/RoMAAControlJoystick | Control mediante joystick ]].
Las diferentes versiones del hardware utilizado, tanto la llave H de potencia como la placa de control, puede verse en
* [[Robotica/RoMAARobot/RoMAAHardware1 | Hardware v1]].
Los detalles del firmware de esta version son:
* [[Robotica/ControlVersion10 | Controlador embebido v 1.0 ]].
=== Resultado ===
Como resultado de la primer versión del robot móvil RoMAA se obtivo un prototipo completamente funcional que permitió evaluar tanto la parte mecánica, eléctrica y de tracción, como la electrónica de a bordo del controlador embebido y electrónica de potencia.
En cuanto a la '''parte mecánica''' se pudo evaluar los motoreductores empleados y la mecánica de acoplamiento entre motor, caja reductora, encoder y rueda; a partir de la cual surgieron modificaciones para la versión II. Algunos de los puntos claves fueron
* Debido a que el eje del motor no soportara el peso del robot, era necesario utilizar una pieza con bolilleros que hiciera de apoyo al eje de la rueda, lo que resultaba mas costoso en materiales y mecanizado.
* El acoplamiento entre el motorreductor y el encoder óptico era demasiado complejo y requería un mecanizado especial.
* Debido al tipo de sujeción entre el motor y la base del robot resultaba difícil alinear las ruedas.
En cuanto a la '''parte electrónica''' se hizo evidente la necesidad de fuentes de alimentación conmutadas para el sistema de embebido, debido a la distintas tensiones necesarias y la tensión de batería de 24V.
Respecto al '''firmware''', esta versión era bastante limitada, debido a que las operaciones del microcontroladore eran realizadas solamente con tipo de datos enteros, y el control de tracción se basaba únicamente en un controlador proporcional. El controlador embebido mantenía un registro de los pulsos de encoders pero no realizaba el cálculo de la odometría, que se hacía en la PC de a bordo.
El '''software''' de la PC de a bordo se desarrollo en base a una clase de comunicación escrita en lenguaje C++, y se escribió un driver para el entorno de desarrollo de robótica Player (v2.0).
== Desarrollo del robot RoMAA-II ==
El robot móvil RoMAA-II pretende mejorar las características tanto constructivas como de prestaciones del robot RoMAA, arriba descripto. Algunas de las modificaciones '''mecánicas''' son
* Reemplazo del motorreductor por un conjunto motor/caja reductora separados. La caja es de tipo sinfin, y soporta una fuerza radial en el eje suficiente para el peso del robot.
* Debido al tipo de caja reductora se reemplazo el motor por uno de menor revoluciones (rpm), además de ser de fabricación local.
* Este nuevo sistema de tracción permite acoplar directamente el encoder al eje del motor, por lo que se tuvo que utilizar uno de mayor cantidad de pulsos por revolución.
El nuevo motor utilizado y la electrónica se alimentan en esta versión a 12V, disponibles de una única batería con lo que se reduce el peso y el costo final del robot.
La plaqueta de ciruito impreso del '''controlador embebido''' fue rediseñada completamente, incluyendo conectores a los encoders, un conector a un panel de control y un controlador para comunicación USB.
El '''firmware''' del RoMAA-II opera completamente en punto flotante, realizando internamente el cálculo de la odometría, junto con los lazos de control PID tanto para controlar la velocidad de cada uno de los motores, como un lazo extra de acomplamiento cruzado para el control del robot mediante velocidad lineal y angular.
El '''software''' de la PC de a bordo consta de una clase de comunicación, similar a la versión anterior, pero adecuado al nuevo controlador; junto con el driver de entorno de desarrollo de robótica Player (v3.0).
=== Resultado ===
En cuanto a la parte mecánica, el robot móvil RoMAA-II resulta más secillo y por lo tanto económico; esto se logró eliminando algunas piezas mecánicas de la primer versión, principamente la pieza de apoyo de los ejes de las ruedas, debido al nuevo sistema de tracción; además, se redujeron las complejidades de mecanizado de las piezas correspondiente a los separadores de las placas metálicas y el soporte de la rueda castor.
Esta versión se alimenta con una única batería de 12V, esto hace más sencillo la etapa de regulación de tensiones del controlador embebido.
El controlador embebido se rediseño completamente. Se realizaron pequeñas modificaciones en las llaves H de potencia que manejan los motores de tracción, y un rediseño completo del PCB donde se encuentra el microcontrolador.
El firmware del controlador embebido cuenta con un sistema operativo en tiempo real, más precisamente el [[http://www.freertos.org/ | FreeRTOS]]. Y como principal modificación en relación a la anterior versión es que opera completamente con números de punto flotante, tanto para los controladores PID digitales como en el cálculo de la odometría; también se mejoró la comunicación empleando un buffer circular para almacenar los datos entrantes y salientes.
En relación al software de la PC de a bordo, se implementaron tanto el driver para el entorno de desarrollo de robótica Player, y el modelo de simulación para el simulador Stage [2].
Más detalles de lo antes mencionado se encuentra en las siguientes páginas:
* [[Robotica/MotoRedRoMAAII | Cálculo para la selección de nuevo motor y caja reductora]].
* [[LabElectronica/RoMAAControllerII | El hardware que componen al controlador embebido se describe del RoMAA-II]].
* [[LabElectronica/RoMAAFirmware20 | Firmware con sistema operativo en tiempo real (FreeRTOS) del RoMAA-II]].
* [[Robotica/PlayerStageRoMAA | Entorno de programación y simulación Player/Stage/Gazebo en el robot RoMAA]].
== Referencias ==
* [1].- ''"Plataforma móvil de arquitectura abierta"'', David Gaydou, Gonzalo Perez Paina, Javier Salomone, Guillermo Steiner. ''V Jornadas Argentinas de Robótica'' (JAR'08), Bahía Blanca, 12-14 de Noviembre, 2008. ([[http://lcr.uns.edu.ar/jar08/papers/paper_34.pdf | Descargar]]).
* [2].- ''"Entorno de desarrollo Player/Stage aplicado a la robótica móvil"'', Gonzalo F. Perez Paina, David A. Gaydou. XII Congreso Argentino de Control Automático. AADECA 2010. Buenos Aires, Argentina.