zero-copy transport between nodes

asked 2016-06-12 07:42:59 -0500

rick187 gravatar image

Hello, I know that one can easily obtain zero-copy transfers between nodelets within a single node but I was wondering if there is a way to avoid copy (and most importantly serialization/deserialization) between two nodes running on the same machine. I want the vrep simulator to send image messages to matlab and I am using the vrep_ros_bridge and matlab_ros_bridge (I am one of the authors) for this. However the message passing is quite slow due to the multiple copies and serializations. On the other hand I cannot use nodelets because vrep and matlab each have their own executables. The only thing I could think of is to have two nodelets running in a single node and each one sharing a shared_memory portion with vrep and matlab respectively but this seems quite cumbersome. Any other idea? Thank you. Riccardo

edit retag flag offensive close merge delete



It's a bit old, but you could see whether the sharedmem_transport in the ethzasl_message_transport works for you.

Note that most of the times you're trading one disadvantage for another in these cases.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-13 07:16:40 -0500 )edit

Thanks a lot for the answer. I was aware of that package (I should have mentioned it in the question) but I am not sure that it actually skips the serialization/deserialization phase and (more importantly) that it is still supported. It also seem to require quite some changes in the code.

rick187 gravatar image rick187  ( 2016-06-14 02:35:01 -0500 )edit