ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

ROS2 DDS communication between different layer3 subnets

asked 2018-12-20 06:07:57 -0500

ChriMo gravatar image

Hello community,

is it possible to access ros2 nodes in a different layer3 ip network ?

Use case:

Rviz2 at my desktop via LAN (10.1.2.0/24 security zone office)

Robot with ros2 nodes via WLAN (10.1.3.0/24 security zone lab)

Routing is allowed by default policy into lab zone via firewalls.

I've found no generic way to tell ros2 dds nodes to find partner nodes behind the broadcast borders (routers).

Any solutions available ?

I'm thinking about using OpenVPN to map all nodes into an own layer3 subnet or using some kind of proxies to solve this problem.

Any better advice from the experts ?

Thanks in advance

Cheers

Chrimo

edit retag flag offensive close merge delete

Comments

This has come up before. FastRTPS for example allows you to configure a list of static participants ("Static Endpoint Discovery"). That is based on IP, so those could be in any network, as long as there are routes available between those networks.

gvdhoorn gravatar image gvdhoorn  ( 2018-12-20 06:21:41 -0500 )edit

I don't believe the situation has changed since #q295494, so a "generic way" does not exist, but various configuration mechanisms exist for the various middlewares supported.

#q307230 shows an example for FastRTPS.

gvdhoorn gravatar image gvdhoorn  ( 2018-12-20 06:24:54 -0500 )edit

is ros2bridge an option ? rviz --->roscore<---ros2bridge--->ros2 nodes

ChriMo gravatar image ChriMo  ( 2018-12-20 06:42:49 -0500 )edit

I don't understand your last comment. Your question was how to allow "ROS 2 nodes" to find each other even if they're not part of the same broadcast domain.

The bridge bridges ROS 1 and ROS 2 node graphs. But that happens at a different layer.

Can you clarify?

gvdhoorn gravatar image gvdhoorn  ( 2018-12-20 06:51:16 -0500 )edit

I've tried to solve my special use case, using rviz from desktop location to remote robot lab. Idea: Desktop uses rviz and connects to remote robots roscore. The remote robot runs ros2bridge and additional ros2 nodes. Maybe, very special use case, but real usage.

ChriMo gravatar image ChriMo  ( 2018-12-20 10:24:48 -0500 )edit

I'm not sure how this connects to the question you raise in your post, but at the very least it would have been good to include what you write in your comment in the original question text.

It's almost an xy-problem now.

gvdhoorn gravatar image gvdhoorn  ( 2018-12-20 11:00:46 -0500 )edit

But as the ros 2 bridge is (on one side) essentially a ROS 2 node, my comments still apply. For nodes outside the broadcast domain, use static endpoint discovery.

gvdhoorn gravatar image gvdhoorn  ( 2018-12-20 11:01:21 -0500 )edit

Thanks for all :-)

ChriMo gravatar image ChriMo  ( 2018-12-20 11:19:48 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2018-12-20 11:18:22 -0500

ChriMo gravatar image

updated 2018-12-20 13:58:36 -0500

Short result: NO, not by default ros2 mechanisms. This is a special feature of the lower level DDS.

Hint from export:

This has come up before. FastRTPS for example allows you to configure a list of static participants ("Static Endpoint Discovery"). That is based on IP, so those could be in any network, as long as there are routes available between those networks.

additional links: https://answers.ros.org/question/2954...

edit flag offensive delete link more

Comments

An example for FastRTPS at https://answers.ros.org/question/3072... .

MisterblueGuy gravatar image MisterblueGuy  ( 2018-12-20 17:33:27 -0500 )edit
0

answered 2019-04-19 14:15:03 -0500

In Bouncy, you need to create a DEFAULT_FASTRTPS_PROFILES.xml that looks like below

<?xml version="1.0" encoding="UTF-8" ?$>
<profiles>
    <participant profile_name="participant_somename" is_default_profile="true">
        <rtps>
            <builtin>
                <domainId>4</domainId>
                <initialPeersList>
                    <locator>
                        <kind>UDPv4</kind>
                        <address>X.X.X.X</address>
                    </locator>
                    <locator>
                        <kind>UDPv4</kind>
                        <address>Y.Y.Y.Y</address>
                    </locator>
                    <locator>
                        <kind>UDPv4</kind>
                        <address>Z.Z.Z.Z</address>
                    </locator>
                </initialPeersList>
            </builtin>
        </rtps>
    </participant>
</profiles>

 

Where X.X.X.X, Y.Y.Y.Y and Z.Z.Z.Z are ip addresses of the peers

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2018-12-20 06:07:57 -0500

Seen: 2,366 times

Last updated: Apr 19 '19