ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I've found a partial answer to my own question here: https://docs.ros.org/en/foxy/Concepts/About-Internal-Interfaces.html

"The rmw API is located in the ros2/rmw repository. The rmw package contains the C headers which define the interface, the implementation of which is provided by the various packages of rmw implementations for different DDS vendors."

So it is just .h header files with functions without a body, and then the implementer's create a .c file and include this header file, and provide the function body. This becomes a single unit of compilation, and when this is linked against other pieces of code, the linker only cares about the .h files, which is why the RMW implementations are interchangeable. Is this correct?

I am still curious about the other details involved in creating an RMW. Is there a tutorial anywhere? Do I need to use CMake, or know about any specific build processes used by ROS2? What are the steps, from start to finish, in implementing an RMW, and how much effort would you estimate (in days/weeks) this would take for an experienced programmer?