[seems to have become a theme on the ML, so I'm sending this in now
rather than continuing to clean it up ...]
People having trouble learning a new tool like Orocos, or completely
daunted by the mountain they appear to have to climb, will drop it and
move elsewhere. I've already personally seen a couple of instances of
this with Orocos. It is a wonderful, extremely capable tool, with
great detail-level documentation, however, IMHO the 10,000 foot view
documentation is missing. This makes it incredibly difficult to learn
how to use it. This has been brought up several times on the list in
previous months (and again today).
I think 3 critical items are missing, at least the first two of which
you see on most/all other mature OSS websites
1) FAQ
2) Tutorials
3) System examples
The FAQ is obvious, and some entries immediately come to mind based on
recent ML activity
a) My shared libraries won't load
b) Can I use dynamic memory allocation, and where?
c) How do I run in real time? ie how do I configure my system to allow
Orocos to run in real-time
d) Why do I have periodic delays when attaching a remote deployer?
... pretty much any question that has popped up on the forum more than
once ... or twice ... or ...
Tutorials (non-complete list below)
a) Hello world as an application
b) Hello world with the deployer
c) Use of reporting component
d) CMake and non-standard install location for Orocos
e) Distributed deployment - ie how to use more than one deployer, and
setting up CORBA
f) Adding types to Orocos
g) Adding types to Orocos+Corba
h) Changing ReadDataPort/WriteDataPort to DataPort for CORBA-based
deployment
...
Some combination of Peter's rtt-examples and rtt-exercises would be
the basis for the above. I would, however, argue that they should not
rely on the Kuka components in OCL. Just create a standalone sample
robot that kinematically loops back desired to actual. Some portion of
the above should be documented on the website (Qt has done this every
well, IMHO), so that someone can browse through and see how things can
be done without having to download the exercises, load multiple source
files and then work through them.
Some of the tutorials can also be ordered by level of difficulty,
where you are basically building up a more and more capable system
(although this may fit in more with the system-level examples below).
The other tutorials are really standalone "how to" concepts.
System level examples should be complete, working, independant, and
graduated. They should be such that a new user could come in, replace
the "Robot" (or "Plant") component with their own component that
talks to their hardware, and be moving their robot in short order. For
some of the examples, I think providing a UML diagram or two would be
very useful to demonstrate one approach in getting from a model to an
implementation.
1. Robot + HMI
Demonstrate robot running in more than one mode using a state machine
(say SAFE and POSITION_CONTROL states).
User manipulates HMI to make robot move
Demonstrate deployment
Demonstrate runtime configuration
Demonstrate CMake including finding Orocos
2: Robot + multiple controllers + controller manager + HMI
Demonstrate cascading state machines (ie controller manager and robot
state machines affect each other)
Demonstrate multiple controllers, and the switch over between them
3: Add GUI + CORBA
Add one example GUI toolkit
Demonstrate correct connection direction for GUI components over CORBA
Demonstrate use of toolkits (and how to forcibly load them into a non-
deployed application)
Explain why you would bring all controller ports/events/methods back
to an HMI, instead of having GUI connect direct to real-time components.
The "motioncontrol" example in the rtt-exercises could form the basis
for some of the above, but it needs much more documentation to be
useful as a learning aid to a new user, or as a proof of concept for
an evaluator of how Orocos can be used.
I am willing to get the ball rolling on the FAQ and system level
examples, but would like to get some preliminary consensus from the
community on what direction to take, etc.
Thoughts? Criticisms? Observations? Suggestions?
Stephen
Re: Orocos documentation
As several speakers in this thread, I am relatively new to Orocos. By against, unlike the others, I enjoyed the learning curve of Orocos compared to other similar software that I used in the past. The only inconvenience I found is that the documentation is difficult to find. There should be a documentation page that contains links to all entry points of the documentation.
I think 3 critical items are missing, at least the first two of which you see on most/all other mature OSS websites 1) FAQ 2) Tutorials 3) System examples
I agree on that. Orocos offers so many possibilities that it is often hard for new user to find what's the better way to do their own design. Therefore, I think that system examples that show the good design practices could certainly help the users, and provide at the same time a component repository. As an exemple, the controller-tutorial showed me a way to switch between many controllers using events.
The "motioncontrol" example in the rtt-exercises could form the basis for some of the above, but it needs much more documentation to be useful as a learning aid to a new user, or as a proof of concept for an evaluator of how Orocos can be used.
I think that a typical Single-input/Single-output (SISO) first order system (i.e. DC motor) with speed/position controller with trajectory generation could be a good example after the Hello World, and before moving on the more complex case of the serial robot. This can allow to introduce plant model simulation, bumpless controller switching and trajectory generation.