No description
Find a file
William Woodall 99286978f9
[rclcpp] adding a "static" single threaded executor (#1034)
* Added static single threaded executor functionality

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

executor enhanced to run clients and waitable

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

tested executor

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

added semi-dynamic feature to the executor

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

Jenkins error fixes

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

Added static single threaded executor functionality

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

* Added semi-dynamic feature and made changes based on review comments

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

* re-added accidentally deleted code in node.hpp, fixed static_single_threaded_executor.cpp w.r.t. intra-process change since last commit

Signed-off-by: MartinCornelis2 <martin.cornelis@nobleo.nl>

* Remove not needed comparison

wait_set_.size_of_* is always different than '0'
if we are inside the for loop

Signed-off-by: Mauro <mpasserino@irobot.com>

* If new entity added to a node: re-collect entities

Now we check ONLY node guard_conditions_

Some possible guard conditions to be triggered HERE are:
1. Ctrl+C guard condition
2. Executor interrupt_guard_condition_
3. Node guard_conditions_
4. Waitables guard conditions
5. ..more

The previous approach was only checking if NOT (1 & 2),
so if a Waitable was triggered, it would re-collect all
entities, even if no new node entity was added. This was the case
of the intra process manager, who relies on waitables.
Every time a subscriber got a message, all the entities
were collected.

Signed-off-by: Mauro <mpasserino@irobot.com>

* Implement static executor entities collector

Signed-off-by: Mauro <mpasserino@irobot.com>

* fixup and style

Signed-off-by: William Woodall <william@osrfoundation.org>

* mark new classes as final, with non-virtual destructors

Signed-off-by: William Woodall <william@osrfoundation.org>

* adding copyright to static executor files

Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>

* fixup

Signed-off-by: William Woodall <william@osrfoundation.org>

* cpplint fixes

Signed-off-by: William Woodall <william@osrfoundation.org>

Co-authored-by: Ishu Goel <ishu.goel@nobleo.nl>
Co-authored-by: MartinCornelis2 <martin.cornelis@nobleo.nl>
Co-authored-by: Mauro <mpasserino@irobot.com>
2020-03-28 00:37:51 -07:00
.github advise to ask questions on ROS answers 2018-02-26 22:01:36 -08:00
rclcpp [rclcpp] adding a "static" single threaded executor (#1034) 2020-03-28 00:37:51 -07:00
rclcpp_action Fix unknown macro errors reported by cppcheck 1.90 (#1000) 2020-03-04 09:05:21 -08:00
rclcpp_components Remove absolute path from installed CMake code (#948) 2019-12-17 15:23:16 -08:00
rclcpp_lifecycle Fix unknown macro errors reported by cppcheck 1.90 (#1000) 2020-03-04 09:05:21 -08:00
.gitignore add wait_for_action_server() for action clients (#598) 2018-12-06 18:57:25 -08:00
CONTRIBUTING.md add section about DCO to CONTRIBUTING.md 2019-03-20 08:38:07 -07:00
LICENSE update license file to keep copyright template 2015-04-03 12:30:27 -07:00
README.md New README (#942) 2019-12-11 19:39:06 +03:00

rclcpp

This repository contains the source code for the ROS Client Library for C++ package, included with a standard install of any ROS 2 distro.

rclcpp provides the standard C++ API for interacting with ROS 2.

Usage

#include "rclcpp/rclcpp.hpp" allows use of the most common elements of the ROS 2 system.

Visit the rclcpp API documentation for a complete list of its main components.

Examples

The ROS 2 tutorials Writing a simple publisher and subscriber and Writing a simple service and client contain some examples of rclcpp APIs in use.