General information about this repository, including legal information, build instructions and known issues/limitations, are given in README.md in the repository root.
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_velandcmd_hello - rcl_wrapper_example.c is one self-contained example demonstrating the rcl-wrapper package to simplify creation of rcl handles. It creates one publisher and one subscriber within a rcl node.
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.bashStep 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.bashStep 2 Execute publisher
Run the example publisher.
ros2 run rcl_executor_examples example_publisherThen 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_executorThen 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! 5The 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.
Step 1 ROS 2 Workspace Setup
Open a terminal 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.bashStep 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.bashStep 2 Execute binary
Run the example:
ros2 run rcl_executor_examples example_rcl_wrapperThen you should see something like this:
[INFO] []: Created a timer with period 500 ms.
Debug: number of DDS handles: 2
Published message aaaaaaaaaa
Callback: I heard: aaaaaaaaaa
Published message aaaaaaaaaa
Callback: I heard: aaaaaaaaaa
Published message aaaaaaaaaa
Callback: I heard: aaaaaaaaaa
Published message aaaaaaaaaa
Callback: I heard: aaaaaaaaaa
Published message aaaaaaaaaa
Callback: I heard: aaaaaaaaaa