0
$\begingroup$

enter image description here

I have 3 computers on my network running ROS galactic and CycloneDDS 0.8.0. Above you can see the topology of the network, Computer 1 ( C1 ) is connected to two computers via two different network interfaces. I cannot find a way to allow any computer to see the nodes running on all the other computers on the network. I tried the example that I have seen in the following link by using this CycloneDDS configuration file on C1, put it didn't help https://iroboteducation.github.io/create3_docs/setup/xml-config/

<CycloneDDS>
   <Domain>
     <General>
        <NetworkInterfaceAddress>eno1,eno2</NetworkInterfaceAddress>
    </General>
   </Domain>
</CycloneDDS>

Do you know how I can make the DDS discovery work with multiple interfaces ?

$\endgroup$

2 Answers 2

1
$\begingroup$

Instead of using the 2 Ethernet interfaces on the same computer, you can simply add a small network switch to your hardware setup. With this, you can bring all the computers in the same subnet after configuring the IP addresses. After that you can set the same DOMAIN_ID on all the computers and then you should be able to see nodes running on different computers.

$\endgroup$
0
$\begingroup$

It is likely that you can get DDS to talk from C1 to both C2 and C3. However, if you want C2 to talk to C3 what you need to be doing is configuring C1 to be a network router between eno1 and eno2 such that packets will get routed to and from each port appropriately. This will require writing custom routing rules via iptables or an equivalent functionality on the C1 computer.

If that is something that doesn't make sense to you I recommend doing the simple approach that @hardesh recommends of using a simple network switch and putting them on the same network on a single interface.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.