jrobocom - communication library for robot devices


This document describes the architecture and sources of an api for controlling a lego mindstorms robot via a java applet throughout the internet. The package is coded in Java and published as Free Software under the terms of the GNU General Public License. This software was part of the installation argonautas presented at Caixaforum Barcelona (2002), cyberia02 at Santander and at Medialab Madrid (2003).


The software-architecture of the api looks like this:
+------------+                                           +--------+
|roboclient 1|--                                      ---|applet 1|
+------------+  \                                    /   +--------+
                 \                                  /
+------------+    \+-----------+       +----------+/     +--------+
|roboclient 2|-----|robocontrol|-------|roboserver|------|applet 2|
+------------+    /+-----------+       +----------+\     +--------+
                 /                                  \
+------------+  /                                    \   +--------+
|roboclient x|--                                      ---|applet x|
+------------+                                           +--------+
The software is based on the model of server-client. The server "roboserver" manages useres and robots. On the userside he manages the control of the users over the robots. In a concret moment only one user has the control over a robotic client throughout a webpage with a Java applet. The other users get informed when the can ask for the control over this "roboclient". On the robotside he manages which robot receives the orders from the users. Between the server and the robots there is a service called "robocontrol" which has implemented the protocol which speak the robots. At this time it only comunicated with robots from Lego Mindstorms but with a simple implementation of the protocol of a different device it would be possible to control it also by jrobocom. The next image shows the corresponding hardware-architecture:
+-----+            +----------+        +---------+        +-------+
|robot|<-infrared->|pc control|<-inet->|webserver|<-inet->|pc user| 
+-----+            +----------+        +---------+        +-------+
The communication works in a chain of four steps. The user ("pc user") executes an applet in a webpage and is connected through the internet to a webserver ("webserver"). The webserver passes the information through internet to the computer ("pc control") which controls the "robot" throughout infrared.

download and installing

The packages are constructed for controlling different types of robots throughout the internet. The following packages are adapted for the use with lego mindstorms: The architecture of the software allows the control of local devices conected to a computer - you only have to adapt the opcodes concerning to the device you want to control.

Additional software required to use this libraries: Thanx also to developers of rcxdirect which I used for sending the commands to the robot throughout infrared (almost) in realtime.

changes v0.2

  • new applet for testing called TestApplet.java
  • renamed package from jlegocom to jrobocom
  • included gpl license


I was in some hurry putting all this together and getting the thing working so there are a lot of lacks in the code-design. I have plans developing future projects including remote-control for robots. with an easy2use multifunctional api for this tasks it is a lot more comfortable developing this kind of things. so check out for future releases!

the next steps of development will be:
  • documentation!!!
  • elemenating bugs!!!
  • creating a real api -> seperating general classes and special robot implementation: till now api and implementation for lego-robots is totaly mixed up
  • implementing a better protocol-architecture: right now the communication between applets, server and robot is quite bad mixing up different levels of communication like opcodes and strings.
  • adapt to Lejos2.0 using directcontrol from Lejos instead of rcxdirect.
known bugs:
  • robocontrol can't reconnect to roboserver when stopped
  • eleminating applet from clientlist in roboserver
more documentation will be available soon! if you need help using the package feel free to write me: geraldo@servus.at
(c)left gerald kogler 2002, last change: 18.04.2004