Using same code to make a Node and Nodelet
Has anyone implemented some sort of "standard" interface that you could code to, which could then generate both a standalone Node, and a Nodelet?
My main driver for this is that in my experience you can not unload a nodelet from the nodelet manager, or have the nodelet manager re-load the shared library that your nodelet lives in. For development, it's easier to build your code as a Node, and when you're comfortable that it is working, then change it to a nodelet.
Edit: It looks like as of Fuerte this is no longer true (although I haven't yet tried it out.) As long as a 1:1 mapping of library to nodelet is built, the nodelet manager (via pluginlib) should unload the library if all the nodelets in the library are no longer being used. (http://ros.org/reps/rep-0116.html) However, similar issues will occur if you are using two nodelets from the same library, and only want to modify one of them. (E.g. only shutting off one nodelet will not cause the shared library to be unloaded, and so the out of date version of the modified nodlet will be the one that the manager starts.)
"can not unload a nodelet from the nodelet manager" - is this not exactly part of the functionality that the nodelet manager provides? Can you perhaps clarify a bit better what your problem is?
That makes more sense. I don't think there is a way around the out of date issue - that seems to be a reasonable expectation of the way things work. I never run into the issues though as I've always done nodelets and libraries in 1:1 fashion. I haven't noticed any significant drawbacks in doing so.