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

As far as I know, nodelets are C++ only. A nodelet manager is in basic terms a node that creates multiple threads in which arbitrary user code that calls the ROS APIs can be run, and handles the communication over topics, services etc. The user code running in each thread is a nodelet, and the recommended way to create nodelets from your code, as so-called plugins, is just a consequence of dynamic loading requirements in C++ (uniform interface, shared object libraries, defined paths to library locations etc.).

It is possible to dynamically import Python modules, and actually much easier than dynamic loading with C++, but there is no equivalent pre-written "nodelet manager" program that will coordinate everything for you, and you still wouldn't be able to take advantage of copy-free message passing on topics etc.

As far as I know, nodelets are C++ only. A nodelet manager is in basic terms a node that creates multiple threads in which arbitrary user code that calls the ROS APIs can be run, and handles the communication over topics, services etc. The user code running in each thread is a nodelet, and the recommended way to create nodelets from your code, as so-called plugins, is just a consequence of dynamic loading requirements in C++ (uniform interface, shared object libraries, defined paths to library locations etc.).

It is possible to dynamically import Python modules, and actually much easier than dynamic loading with C++, but there is no equivalent pre-written "nodelet manager" program that will coordinate everything for you, and you still wouldn't be able to take advantage of copy-free message passing on topics etc.