rclcpp provides the canonical C++ API for interacting with ROS. It consists of these main components:
- Nodes
 
- Publisher
 
- Subscription
 
- Service Client
 
- Service Server
 
- Timer
 
- Parameters:
 
- Rate:
 
There are also some components which help control the execution of callbacks:
- Executors (responsible for execution of callbacks through a blocking spin):
 
- CallbackGroups (mechanism for enforcing concurrency rules for callbacks):
 
Additionally, there are some methods for introspecting the ROS graph:
- Graph Events (a waitable event object that wakes up when the graph changes):
 
- List topic names and types:
 
- Get the number of publishers or subscribers on a topic:
 
Finally, there are many internal API's and utilities:
- Exceptions:
 
- Allocator related items:
 
- Memory management tools:
 
- Context object which is shared amongst multiple Nodes:
 
- Various utilities: