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

1 . My question now, is this valid only for nodelets that we should publish using pointers and there is zero copy ? Is this also true between different nodes ?

No, only nodelets can exchange pointers*, as they share the same address space (they're basically nodes mapped onto threads instead of processes)

(* this is not entirely true: with a suitable transport (such as ethzasl_message_transport) zero-copy msg exchange is also possible between nodes, but that is not out-of-the-box supported and comes with some constraints)

2 . Also is there a requirement that the nodelets be launched from the same nodelet manager for the zero copy to be true ?

yes, again because they need to share an address space. Different managers will each have their own address spaces.

3 . Is there a way to check/test whether there is zero copy happening in my implementation or my code is using network resources ?

I know of no other way than checking resource usage (ie: CPU / memory). But in most contexts where nodelets make sense, the increase in performance is so noticeable that you'll know when it's not working (this is obviously not a good way to check, but is at least something).