[Documentation] [TitleIndex] [WordIndex

With the ROS electric release, the orocos_toolchain_ros stack has been split up into 5 different stacks, and the rtt_ros_integration package has become a stack. Check out orocos_toolchain_ros/electric for more information.

Installation

Ubuntu

sudo aptitude install ros-electric-rtt-ros-integration

Compiling from source

Clone the repository using

git clone http://git.mech.kuleuven.be/robotics/rtt_ros_integration.git
rosmake rtt_ros_integration

Upgrade from diamondback

Upgrading from diamondback involves changes of package names and removing the old libraries. A script automating this upgrade is available in the new rtt_rosnode package. To run it:

rosrun rtt_rosnode rtt-upgrade-2.5 <package_dir>

Using ROS messages in Orocos components

To set up communication between RTT and ROS:

You need to generate an Orocos typekit for the ROS messages you want to use. Here is the option you have to use an existing typekit, or to generate yours :

rosrun rtt_rosnode create_rtt_msgs MyPkg

This will create the package rtt_MyPkg with typekits for your custom ROS messages.

Use the typekit in your C++ code

Imagine the Orocos package in which you want to add the message is OrocosPkg, and you want to use the messages from you MyPkg package.

You have to edit OrocosPkg/manifest.xml to add the following line :

  <depend package="rtt_MyPkg"/>

In doing so, you will depend indirectly on rtt_rosnode.

In order to use the messages defined in MyPkg in your OROCOS component, include the message headers to your OrocosPkg C++ code :

#include <MyPkg/typekit/MsgName.h>

Then, you may fill in or read out the ROS Message in your components.

Creating and deploying Orocos components

First, you create an Orocos component package, instead of a plain ROS package. Once compiled, deploying OROCOS components can be done either using .xml or .ops file formats.

Creating an Orocos component

See the Orocos Component Builder's Manual, but in short:

rosrun ocl orocreate-pkg my_component_pkg component
cd my_component_pkg
rosmake

A template/dummy component will be built. Now proceed deploying it.

.ops deployment script

Start the Orocos deployer with

rosrun ocl deployer-gnulinux [-s scriptname.ops]

There you get a prompt where you can

import("rtt_rosnode") // makes this process a ROS node
import("my_component_pkg")
loadComponent("YourComponentName","My_component_pkg")
// See DeploymentComponent Manual for creating a component using 'loadComponent'

stream("YourComponentName.YourRTTPortName", ros.topic("/topic_name")) 

.xml deployment script

Start the Orocos deployer with

rosrun ocl deployer-gnulinux -s xmlfile.xml

<simple name="Import" type="string"><value>rtt_rosnode</value></simple>
<simple name="Import" type="string"><value>my_component_pkg</value></simple>
<struct name="ROSConMsg" type="ConnPolicy">
  <simple name="transport" type="short"><value>3</value></simple><!-- 3 means ROS --/>
  <simple name="name_id" type="string"><value>topic_name</value></simple>
</struct>

<struct name="Ports" type="PropertyBag">
  <simple name="YourRTTPortName" type="string"><value> RosConMsg </value></simple>
</struct>

Done, your RTT component can now connects its ports to ROS topics! To test, start a ROS::master, deploy your component and investigate the published nodes with rxgraph

Example Application

The rtt_ros_integration_example package contains an example RTT component to demonstrate the use of this package.


2022-05-28 13:00