[ros-users] Nodelets

Nicholas Butko nbutko at ucsd.edu
Sat Dec 4 20:36:44 UTC 2010


On Dec 4, 2010, at 12:14 PM, Radu Bogdan Rusu wrote:

> 
> On 12/04/2010 12:12 PM, Nicholas Butko wrote:
>>> 
>>>> But, does a nodelet run as standalone basically run just as well as an
>>>> ordinary node? If the overhead of the standalone nodelet is zero in
>>>> terms of speed and small in terms of memory footprint (are those valid
>>>> assumptions?), then creating a node from the beginning as a nodelet
>>>> seems like the way to go as you can easily combine it with a nodelet
>>>> manager down the road, without a recompile.
>>> 
>>> 
>>> Yup!
>>> 
>> 
>> Then, is there any advantage to creating nodes as nodes instead of nodelets?
> 
> Sure. If a nodelet dies, the entire process might die. Nodes are more "robust", as you can restart/respawn them individually.

Could you achieve the same behavior by having a separate nodelet manager for each nodelet? For example, would it be easy to write a shell script that starts a uniquely named nodelet manager and assigns a single nodelet to it? Call such a script "rosrun_nodelet" for example. Then you could run a single piece of code as a nodelet or a node. 

I am thinking of transferring a bunch of my nodes to nodelets, and I guess I want to know what people at WG are finding "best practices" are. Do you find yourself coding every new node as a nodelet, or only when it's absolutely necessary? Are there any good strategies for hybrid nodes/lets? How easy is it to write a main function that "runs" a nodelet as a node?

--Nick 





More information about the ros-users mailing list