This is still unfortunately still under some active development (see: https://github.com/ros2/launch/issues... ) and so not everything is clearly defined yet. I've proposed some terminology that should hopefully be clearer in this document (though I don't know if in the end it will change further):
https://github.com/ros2/rclcpp/blob/w...
Here's a summary of the terminology:
- Node: an instance of
rclcpp::Node
or an instance of a class derived from rclcpp::Node
(often user defined) - Composable Node: A Node, which has been built in a certain way and registered at build time as a composable node, which enables it to be instantiated at runtime by a standard executable
- Composable Node Container: a program that can on demand: lookup a node, load (with dlopen) the node's
.so
, instantiate an instance of the node, and then execute the node
The contents of the composition
package and the associated tutorials are useful to see how some of the underlying mechanics work, but it's more of a tech demo and so doesn't have as much infrastructure around it as we'd like.
In the meantime, I'd suggest following the changes happening at https://github.com/ros2/launch/issues... and waiting for that to finish, or if you need something sooner, try to adapt the examples in the composition
demo to meet your needs.