Ask Your Question
1

Is it possible to use shared memory configuration with ROS2

asked 2019-05-01 04:42:23 -0500

brkk gravatar image

updated 2019-05-01 04:44:18 -0500

I am trying to change the QoS settings to use the shared memory but I got the following error when tying to run a node. It says the OpenSpliceDDS is not running in shared memory mode but I started it by ospl start and says ospl start Domain with name ospl_shmem_ddsi with id 0 is already running, ignoring command if I try to start it again. So I am wondering if it is possible to use shared memory configuration with ROS2.

========================================================================================
Context     : DDS::DomainParticipantFactory::create_participant
Date        : 2019-05-01T11:08:28+0200
Node        : btopal-ThinkPad-T580
Process     : mock_performance_fast_main <20554>
Thread      : main thread 7fb1726d3f40
Internals   : DomainParticipantFactory.cpp/324/6.9.190403OSS///-1
----------------------------------------------------------------------------------------
Report      : Unable to connect to domain id = 0.
          The most common causes of this error are an incorrect configuration file or
          that OpenSpliceDDS is not running (when using shared memory mode).
Internals   : u_participantNew/u_participant.c/234/773/1556701708.115704938
----------------------------------------------------------------------------------------
Report      : Creation of internal Domain Database failed.
Internals   : user::u_domain::attachToFederatedDomain/u_domain.c/1360/773/1556701708.115716030
----------------------------------------------------------------------------------------
Report      : segment defaultDomainDatabase not found
Internals   : c_base::c_open/c_base.c/1710/0/1556703445.973830343
----------------------------------------------------------------------------------------

>>> [rcutils|error_handling.c:106] rcutils_set_error_state()
This error state is being overwritten:

  'failed to create domain participant, at /tmp/binarydeb/ros-crystal-rmw-opensplice-cpp-0.6.3/src/rmw_node.cpp:161, at /tmp/binarydeb/ros-crystal-rcl-0.6.5/src/rcl/node.c:402'

with this new error message:

  'rcl node's rmw handle is invalid, at /tmp/binarydeb/ros-crystal-rcl-0.6.5/src/rcl/node.c:535'

rcutils_reset_error() should be called after error handling to avoid this.
<<<
[ERROR] [rcl]: Failed to fini publisher for node: 1
terminate called after throwing an instance of 'rclcpp::exceptions::RCLError'
  what():  failed to initialize rcl node: rcl node's rmw handle is invalid, at /tmp/binarydeb/ros-crystal-rcl-0.6.5/src/rcl/node.c:535
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-08-15 08:21:40 -0500

johnconn gravatar image

updated 2019-08-15 08:24:08 -0500

It is possible to use opensplice shared memory config within the system, atleast with the dashing release. This feature is only available with the commercial offering of opensplice.

There are some good numbers posted here about a few of the common dds implementations performances:

https://discourse.ros.org/t/is-there-...

cwyark posts some performance comparisons of opensplice shared memory vs non-shared memory on that thread. There >2x latency improvement with shared memory in hist tests.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

5 followers

Stats

Asked: 2019-05-01 04:42:23 -0500

Seen: 187 times

Last updated: Aug 15