[ros-users] nodelets for highlevel percetion

Ulrich Friedrich Klank klank at in.tum.de
Mon Mar 15 12:48:53 UTC 2010

Hi ROS users,

I have a question regarding the nodelets.
At TUM we are using the plugin-lib in our highlevel-perception bridge
(cognitive_perception (CoP) package).

We initially introduced the plugins to abstract from closed-source third
party dependencies. Now we are planning a new release to tum-ros-pkgs
since we finished for IROS a new demonstration, and wanted to clean up
the code before (you know how "deadline code" looks like).

On cleaning up I had a closer look to the new nodelet concept and I now
want to know if i can replace my current plugins with nodelets.

I though it might be possible since most of the my plugin types have one
major function (~ a service) that is used for online data exchange
between CoP and the plugin. (Example: highlevel asks "locate me a cup",
CoP finds out, we have a list of CAD models assigned to the semantic
concept "cup" and calls the plugin "ShapeBased3D" passing it the  best
available Sensor and a CAD model and expects a position back).

I want to make it possibly to execute groups of plugins on another machine
This is necessary because we have different machines acquiring sensor data
and we are running at the CPU limits (fully parallelized).
We dont want to  transport sensor data over network, e.g. 4 Megapixel
RGB images @ 30 Hz => 2 Gbit/s  is not  possible without compression.

Now the questions:
- Can a nodelet handle services, too?

- Can I create an architecture with nodelet which actually collects more
than one of those plugins and either links them directly to my program
or combines them in one node on another machine?

Again an example:  The central instance of CoP should run on a dedicated
machine, the 2D vision mechanism on another and the 3D stuff on a third
All three instances contain a set of loaded Plugins of the classes
LocateAlgorithm and Sensor, the central instance should decide which
part is started up initially on which machine. In the online phase a CoP
selects an optimal combination of Sensors+LocateAlgorithm and calls the
central function of the LocateAlgorithm.
The central function should get the last sensor data and execute the
matching, but this part should run on the same machine, best in the same
process, including e.g. the camera driver, caused by performance

Of course, I can make this architecture myself, but I think the nodelet
concept sounds mighty enough to support this kind of architecture.

I hope, I expressed my problem clear enough, feel free to ask for details.

Hope to hear from you.

Ulrich Klank                        klank at in.tum.de
Technische Universität München | Boltzmannstr 3 |
85748 Garching bei München  | Germany
www9.in.tum.de/people/klank | Tel: +49 89 289 - 17777

More information about the ros-users mailing list