the Robot Construction Kit
While one can use the Rock system management layer without knowing the underlying execution framework, Roby, it becomes quickly beneficial to have at least read the concept section of the Roby user’s guide, and followed the tutorial in the same guide.
Roby is a plan management / supervision system. The Rock toolchain offers a Roby plugin that allows to manage Orocos component networks in Roby, thus leveraging its supervision capabilities. See the Roby user’s guide for details.
In practice, what does this plugin offers ?
The tutorials are a great introduction to the plugin’s concepts and development workflow.
In Ruby, the language in which both oroGen and Rock’s system management layer is implemented, the norm is to use CamelCase to write class names. An actual constraint that is part of the language is that the class names must start with an uppercase letter.
To match this convention, the system management layer, when needed, converts snake_case names to CamelCase. For instance:
xsens_imu > XsensImu iodrivers_base > IodriversBase
When applicable, this convertion rule will be noted in the documentation
In the Roby system, models and instance of the models are mapped to Ruby’s classes and objects in a very straightforward manner: a model is represented as a class or module (depending of what kind of thing this model describes), and an instance of a model is an object of the corresponding class.
This has one side effect, for those that know Ruby: model hierarchies can only be represented in trees, not graphs, as Ruby does not support multiple inheritance. However, this proved to have no effect in practice.
For instance, the Roby model that represents a xsens_imu::Task task context is a XsensImu::Task class. The list of ports defined on all xsens_imu::Task task contexts can then be obtained with XsensImu::Task.each_input_port for instance. At runtime, running xsens_imu::Task task contexts are then represented by objects of class XsensImu::Task, i.e. running_xsens_imu_task.class == XsensImu::Task.