                Orocos Application Exercise

Note: Make sure you understand the basic principles of building
Orocos components by reading the Component Builder's Manual
and making the 'hello world' exercises.

In this complex exercise, you'll need to extend existing components,
write scripts and extend the application XML file. See UseCase.txt
for a global overview of the application architecture.

* Requirements:
 - Orocos RTT and OCL are installed in /usr/local. If not, modify
 the import statements in deployment/application.cpf to point to 
 the correct location.
 - This example requires the 'CMake' tool v2.4 or newer.
 - Eclipse is the prefered development environment. Install the 
 'CMake Editor' plugin and the 'Rinzo XML Editor' plugin. In order to have
 auto-completion, make sure that the Orocos install path is in your Eclipse
 include path (Project->Properties->C/C++ General->Paths)
 - The OCL 'deployer-...' application must be in your path such that
 the application can be started.
 
* Documentation
 - By now you should have read the first chapters of the Component
 Builder's Manual. Scripting basics and State machine basics will
 be necessary too.
 - Read the Deployment Component Manual. It contains instructions
 for the XML format and how an Orocos application is created.
 - The UseCase.txt file contains the application architecture of
 this example. 

* First steps
 - Create a build directory: mkdir build ; cd build
 - Run 'cmake ..' in this directory and verify that the Orocos headers
 and libraries could be found. If not, run 'ccmake ..' and edit the
 OROCOS_INSTALL path.
 - Run 'make'
 - Run 'deployer-gnulinux --start deployment/application.cpf -linfo'
 The TaskBrowser should pop up and the DeploymentComponent should load
 your application.
 
* Exercises
 - See components/modeswitch/ModeSwitch.hpp/cpp, components/joystick/Joystick.hpp,
 components/controller/Controller.hpp, deployment/application.cpf, 
 statemachine.osd and program.ops for the scattered
 instructions. The main idea is to add the ModeSwitch component to the application
 (it won't be loaded when you start with application.cpf) and then extend it
 such that it can run a scripting state machine.
 
 However simple this looks, most people need about 3 hours to finish all aspects
 of this interface (after having made the hello world examples.)
