Is there any DDS implementation using shared memory inside system?

@joespeed What is the meaning of “with built-in iceoryx” ?

If I understand the matching issues #64 and #65 correctly then there is a kind of gateway for every direction forwarding/copy data from one system into the other, right ?
So if you communicate between 2 cylconedds participants on the same host, how can you make usage of the iceoryx shared memory zero copy mechanism ?

1 Like

@rex-schilasky. That’s another combination approach @joespeed is referring to. And this is more the way you did it in eCAL. I.e. cyclone is using iceoryx when publisher and subscriber are on the same host.

2 Likes

Hi all,

Just an update on our side. The current release of Fast DDS/Foxy comes with a Shared Memory transport included, that shows a lot better performance than the UDP Loopback.

Moreover, we are in the final phase of an improved zero-copy shared memory transport. We are releasing along this year, and I expect this to be available as a patch for Foxy.

4 Likes

cyclonedds “iceoryx” branch is cyclonedds with built-in iceoryx contributed by ADLINK Advanced Robotics Platform Group (a.k.a. “ROS team”) & Bosch. Would love community feedback, GitHub issues, suggestions, PRs #becauseracecar #iac2021
:racing_car::turtle:
shm_performance

5 Likes

Hi Jaime,
Thanks for this very good news !!!
I would like to test this feature and I encounter some problems.
On ros.answsers.org I can see that someone else have some problem testing this feature : https://answers.ros.org/question/361783/is-it-possible-to-use-shared-memory-as-ipc-on-ros2-foxy/

I compiled foxy and FastDDS (version 2.0.1). When I publish and subscribe to some data on the same computer, I can see them passing through the network on Wireshark… I published very big data like images, to be sure that I see the data in wireshark (and not the ros “meta data” that will always pass through network if I well understood).

The FastRTPS documentation say that Shared Memory is disabled by default. I tried to set a custom profile.xml file thanks to the environment variable FASTRTPS_DEFAULT_PROFILES_FILE to enable SHM, but it don’t seems to work (I still see messages in wireshark).

Can you point me on a documentation page or a github repo with a demonstration of the shared memory feature in Foxy with eProsima DDS ?

Hi Adrien,

In case you haven’t done it yet, please add is_default_profile="true" to the <participant> profile, otherwise ROS2 will not use that profile when creating the participant. This is shown on the example here.

We are in the process of adding ROS2 related information on the Fast DDS documentation, and will make sure that this is mentioned.

1 Like