> Further more, if I want to use qt as GUI of image processing(just to provide faster result showing and easier controlling), I cannot find > a way to get it into a nodelet because qt UI must live in the main thread. So why ROS doesn't provide some more efficient data passing mechanism such as inter-process memory sharing? I think this will > significantly increase large data flow performance. Running nodelets together with Qt in one process works absolutely fine. ROS GUI (which is currently under development - https://kforge.ros.org/visualization/ros_gui) does exactly that. The Qt application is written in Python but plugins (written in either Python and C++ are executed in the same process. C++-plugins are mapped to nodelets internally so each C++-plugin can pass messages efficiently using boost::shared_ptr. Dirk