The software architecture has a client-server structure and is based on the following modules, all running simultaneously:

- a Web server
- a Servlet server with various Servlets
- one or more Grab server
- one or more Telelab server
- a client module for every user (Applet java)

There are a Grab server and a Telelab server installed for every experimental system available.

The Web server (Apache server for Linux) manage the remote accounts and the web site.

The Servlets (and its server, Tomcat 5 for Linux) control the connections to all the experimental systems and manage the activities of all the Grab and Telelab servers allowing a remote interaction with the robots. Every system available for remote experimentation is connected to the Servlet by the TCP/IP protocols. This means that the systems can be located everywhere, with any significance for the telelab. The Servlet is also necessary to allow the access of more users simultaneously to the telelab, even if every robot can be controlled only by a user at once.

The Grab server controls a webcam, managing directly the grabbing of the frames. The Grab server also produces a video in MPEG format starting from the collected frames.
With a webcam and the Grab server the user can monitor in real time the evolution of the experiments and download an MPEG video to analyze it off line.

The Telelab server controls the activities of the phisycal systems, running the real time code of the controller and managing the remote access to the systems. The Telelab server also logs the data of some variables of interest for the specific experiment (like the links velocities or positions and the motors currents) and yields them available for a download.

The next figure shows the software architecture of the telelabratory. The Web server and Servlet server are joined together under the name server Web.

The Telelab server and the Grab server have been developed to run in two different machines. They communicate by means of the Servlet using the TCP/IP protocols (see the Software details link for more informations). This separation improve the system security, leaving to the Grab server, that runs on a separate machine, all the resources it needs for the image processing (often very hard).

The client modules of the telelab architecture are Java Applets. There are Applets for the simulations and Applets for the real experiments. The Applets provide a graphical interface to interact with the telelaboratory. They allows to select a control law, modify the control parameters, monitor some physical variables, watch the feedback webcam images and start or stop the control. For more information about the usage of the Applets see the User manual section.

The environment used to develop and execute the control algorithm is Matlab. The controllers can be designed directly in Simulink, taking advantage of a tool based on visual components. The authors of new control schemes can insert their work in the telelab by registering it on the server machine, without caring of how works the telelab software and without caring to implement the controllers in a specific programming language.
Beside Matlab and Simulink we also use Real Time Workshop to automatically generate C code and optimized executable code suitable for real-time applications.

The Servlet and the Grab server are Linux programs, while the Telelab server is a Win32 program, a necessary choice due to the software (for windows only) that manage the acquisition board of the robots.

To have reliables real time executions we used hardware clock generators to sample the variables. Besides, we have installed a patch on Windows NT, the RTX software, to ensure the operating system functioning like a real time operating system.

| Architecture | Vision system | Software details | People |