i’d like to have feedback and comments from community. i was wondering that if anyone is interested in ros/ros_commUnix Domain Socket performance improvement for ros:noetic release. if there are some requests, we can support ros:noetic in fujitatomoya/ros_comm.
Unix Domain Support is introduced at ROSCon 2018 , Video and Slides are available. It’s been already maintenance phase, so we ended up having the different repository.
Would this be potentially beneficial for improving the performance of the ROS1 side of the ros1_bridge, a single process that commonly encounters a lot of thru traffic?
i do think so. if other nodes and ros1_bridge is in the localhost, the same advantage we can have. Unix Domain Socket is perfectly concealed by user application layer, so application does not even know what is used. but as long as the connections between endpoints are in the localhost, our ros_comm will use Unix Domain Socket (if not, fallback to TCPROS/UDPROS automatically based on IP addresses).
Does the message transport over Unix Domain Socket skip the serialization and serialization of the messages similar as nodelets do? Or does it solely alter how serialized messages are transmitted from one process to another? From what I understood, the latter is the case.
your understanding is correct. it is just about transport layer adjustment, using Unix Domain Socket does not require IP stack but it requires (de)serialization and copy-in/out to kernel space.
i’d like to clear some points,
Replacing TCP/IP into Unix Domain Socket is not HUGE performance improvement compared to Nodelet(copyless, accessing the same physical address in the process space). reason also described above, but…
After the node configuration via XMLRPC, it can use Unix Domain Socket instead of TCP/IP. that is said every single time it sends/receives the data, it can have the advantage.
Cost effective, Unix Domain Socket implementation is concealed by API, that means we DO NOT need to change any code for application. all we have to do is to build ros_comm package and install it on target device.
We are very interested in Noetic support for Unix Domain Sockets! Thank you for developing and maintaining the branches, as it’s tremendously beneficial when running on a centralized host.
I was at ROSCon 2022 @ Kyoto, Japan as a member of Organization Committee and Programming Committee, and just realized that there were many presentations and user application that uses ROS 1 (not ROS 2) for R&D and production support.
Sony is one of the ROS 1 users with following productions.
Sony Airpeak S1 Drone
Sony poiq
That brought me to come back to this thread to who those do not know Unix Domain Socket feature, which is not integrated in mainline but you can pull the following repository and build&run.
melodic and kinetic are also supported, please see the 1st post on this thread for detail.