Skip to content

Latest commit

 

History

History
 
 

rcl_executor_examples

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

General information about this repository, including legal information, build instructions and known issues/limitations, are given in README.md in the repository root.

The rcl_executor_examples package

rcl_executor_examples package provides an example for the rcl_exector.

  • example_publisher.cpp contains a simple ROS node, publishing the topics cmd_vel cmd_hello
  • example_executor.c provides the example for a ROS node subscribing to these two topics cmd_vel and cmd_hello as well as timer.

Run the Example

Step 1 ROS 2 Workspace Setup

Create two terminals with ROS 2 workspace. Assuming that the ROS 2 workspace resides in /opt/ros/dashing and the rcl_executor package is compiled in this workspace ~/rcl_executor_ws then source the following setup scripts.

~$ source /opt/ros/dashing/setup.bash
~$ source ~/rcl_executor_ws/install/local_setup.bash

Step 2 Build

Build the package in the rcl_executor_ws and source the workspace (once).

~/rcl_executor_ws/$ colcon_build
~$ source ~/rcl_executor_ws/install/local_setup.bash

Step 2 Execute publisher

Run the example publisher.

ros2 run rcl_executor_examples  example_publisher

Then you should see something like this:

[INFO] [rt_exectutor_test_publisher]: Publishing cmd_hello: 'Hello, world! 0'
[INFO] [rt_exectutor_test_publisher]: Publishing: cmd_vel '0.00'
[INFO] [rt_exectutor_test_publisher]: Publishing cmd_hello: 'Hello, world! 1'
[INFO] [rt_exectutor_test_publisher]: Publishing: cmd_vel '1.00'
[INFO] [rt_exectutor_test_publisher]: Publishing cmd_hello: 'Hello, world! 2'
[INFO] [rt_exectutor_test_publisher]: Publishing: cmd_vel '2.00'
[INFO] [rt_exectutor_test_publisher]: Publishing cmd_hello: 'Hello, world! 3'
[INFO] [rt_exectutor_test_publisher]: Publishing: cmd_vel '3.00'

Step 3 Execute subscriber

Run the example subcriber

ros2 run rcl_executor_examples  example_executor

Then you should see an output like the following:

Created subscriber cmd_vel:
Created subscriber cmd_hello:
Created timer1 with timeout 100 ms.
Timer: time since last call 100170866
Timer: time since last call 99900511
Callback 'cmd_hello': I heard: Hello, world! 3
[#1] Callback 'cmd_vel': tv=3.000000 rv=3.000000
Callback 'cmd_hello': I heard: Hello, world! 4
Timer: time since last call 1555218878
[#2] Callback 'cmd_vel': tv=4.000000 rv=4.000000
Callback 'cmd_hello': I heard: Hello, world! 5

The first few messages were not received, because the subscriber was started before the publisher. This shows, that the messages are received by the ROS node, in which the subscriptions and timer are scheduled by the static LET Executor.