jrobocom - libraria para el control remoto de robots

[english]

Este documento describe la arquitectura y las fuentes de un API para controlar a un robot Lego Mindstorms a traves de un applet de java y Internet. El paquete esta escrito en Java y publicado como Software Libre bajo las condiciones GNU General Public License. Este software formaba parte de la instalación argonautas presentado en diferentes lugares como Caixaforum Barcelona (2002), cyberia02 en Santander y Medialab Madrid (2003).
 

descripción general

Al siguente puede ver la arquitectura de software de la API:
+------------+                                           +--------+
|roboclient 1|--                                      ---|applet 1|
+------------+  \                                    /   +--------+
                 \                                  /
+------------+    \+-----------+       +----------+/     +--------+
|roboclient 2|-----|robocontrol|-------|roboserver|------|applet 2|
+------------+    /+-----------+       +----------+\     +--------+
                 /                                  \
+------------+  /                                    \   +--------+
|roboclient x|--                                      ---|applet x|
+------------+                                           +--------+
La software esta basado en el modelo servidor - cliente. El servidor "roboserver" gestiona los usuarios y los robots. En el lado de los usuarios gestiona el control sobre los robots por los usuarios. En un momento concreto solamente un usurario tiene el control sobre un cliente de robot a traves de una pagina web con un applet de Java. Los otros usuarios estan informados cuando puedan pedir el control sobre este "roboclient". En el lado de los robots gestiona que robot recibe los ordenes de los usuarios. Entre el servidor y los robots hay un servicio llamado "robocontrol" cual tiene implementado el protocolo que hablan los robots. Ahora mismo solamente se comunica con robots de Lego Mindstorms pero con simplemente implementar el protocolo de otro dispositivo seria posible controlarlo tambien con jrobocom. La siguente imagen muestra la correspondiente arquitectura de hardware:
+-----+            +----------+        +---------+        +-------+
|robot|<-infrared->|pc control|<-inet->|webserver|<-inet->|pc user| 
+-----+            +----------+        +---------+        +-------+
Se trata de una comunicación en cadena de cuatro pasos. El usuario ("pc user") esta ejecutando un applet en una pagina web y esta conectado a traves de internet con un servidor web ("webserver"). Este pasa la información a traves de internet al ordenador ("pc control") cual esta controlando el "robot" a traves de infrarojo.
 

instalación

Los paquestes son construidos para controlar diferentes tipos de robots a traves de Internet. Los siguentes paquetes estan adaptadas al uso con Lego Mindstorms: La aquitectura del software permite controlar cualquier dispositivo conectado a un ordenador - solamente tienes que adaptar los codigos de operación (opcodes) en el paquete rcxdirect segun el dispositivo que quieres controlar.

software adicional requerido para el uso de las librarias: Gracias a los desarroladores de rcxdirect cual use para mandar (casi) en tiempo real los comandos a traves de infrarojo al robot.
 

cambios v0.2

  • nuevo applet de prueba TestApplet.java
  • renombrado paquete de jlegocom a jrobocom
  • incluido licencia GPL
 

futuro

Por falta de tiempo el software tiene muchos debilidades en el diseño. Tengo planes de desarrollar futuros versiones incluyendo control remoto para diferentes tipos de robots. Con un API multifuncional facil de utilizar seria mucho mas comfortable controlar cualquier dispositivo conectado a un ordenador. Asi que chequea para futuras versiones!

proximos pasos del desarrollo:
  • documentación!!!
  • quitando fallos!!!
  • creando un API de verdad -> separando clases generales de las clases que dependen del robot controlado. Hasta ahora la API y la implementación para los Lego Mindstorms esta mesclado.
  • implementando una arquitectura del protocolo mejor. Hasta ahora la comunicación entre applets, servidor y robot es una mescla de diferentes niveles de comunicación como opcodes y cadenas de texto.
  • adaptarlo para Lejos2.0 utilizando directcontrol de Lejos en vez de rcxdirect.
fallos conocidos:
  • robocontrol no puede reconectarse a roboserver cuando una vez parado
  • eleminando applet de la lista de clientes en roboserver
Espero que pronto habra mas documentación! Si necesitas ayuda con el paquete contactame: geraldo@servus.at
 
(c)left gerald kogler 2002, último cambio: 18.04.2004