Rock

the Robot Construction Kit

Syskit-enabled Bundles

When using Syskit, the bundles are first Roby applications. As such, the description of the file layout in a Roby application applies.

This page will start by explaining how one turns a plain Roby application into a Syskit-enabled bundle. We will then summarize parts that are added in addition to the Roby layout in a Roby application that uses Syskit.

Creating Syskit-enabled Roby applications

The bundles created in Rock are already Syskit-enabled, i.e. if you do

rock-create-bundle mybundle
cd mybundle
roby init

The resulting application is already using Syskit.

However, if you wrote a “plain” Roby application and want to use Syskit in it, you should enable the Syskit plugin and pick the temporal scheduler. Edit config/init.rb and add:

Roby.app.using 'syskit'
require 'roby/schedulers/temporal'
Roby.scheduler = Roby::Schedulers::Temporal.new

Once you have done that, run

roby init

To add templates for Syskit-specific directories and files.

Syskit-specific File Layout

This section deals with the parts of the file layout that are specific to Syskit. Refer to this page for the generic Roby parts

config/orogen/
YAML configuration files for the oroGen task contexts. The file names should always be the name of the corresponding oroGen task context model (i.e. xsens_imu::Task.yml for the xsens_imu::Task). See this page for more details
models/profiles/
profile definitions. The file names should be the snake_case version of the profile’s name. For instance, an AvalonAUV profile should be stored in models/profiles/avalon_auv.rb.
models/blueprints/
definitions of compositions and data services. One composition should be defined in a single file, and the file names should be the snake_case version of the composition name. For instance, a PoseEstimator composition should be stored in models/blueprints/pose_estimator.rb. The data services should be grouped “by topic” (e.g. all pose-related data services are stored in the rock bundle under models/blueprints/pose). Finally, device models should always be defined in a models/blueprints/devices.rb file, following the structure stored in rock bundle’s models/blueprints/devices.rb. The device file from other bundles should be explicitly loaded there, prefixing the models/ folder by the bundle name, as e.g.
require 'rock/models/blueprints/devices'
models/orogen/
extensions to task context models. The file names must match the oroGen project name of the extended tasks. These files are loaded on-demand, when the corresponding oroGen project is loaded. See this page for more details.