[Unitree Go2] GO2 EDU – Topics only forwarding via Ethernet, not WiFi (Jetson board, CycloneDDS)

Hi everyone,

I’m using the GO2 EDU and followed the installation from the qre_go2 GitHub repo on the Jetson board. Everything is working fine so far.

I’ve also added a WiFi dongle to access the system wirelessly. The CycloneDDS config seems correct, but the ROS 2 topics are only being forwarded over Ethernet, not via WiFi.

Has anyone experienced this issue before?
Do I need to modify any additional configuration (CycloneDDS or system network settings) to make the topics publish and subscribe properly over WiFi as well?

Thanks a lot for any hints or guidance!

The DDS config has to be selected for your specific wifi port. You can try this and replace the domain id and WiFi port with the one in your go2. You can get that with ifconfig

The cyclone dds file:

<?xml version="1.0" encoding="UTF-8" ?>
<CycloneDDS xmlns="https://cdds.io/config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd">
    <Domain Id="any">
        <General>
            <Interfaces>
                <NetworkInterface name="eth0" priority="default" multicast="default" />
            </Interfaces>
            <AllowMulticast>spdp</AllowMulticast>
        </General>
    </Domain>

    <!-- <Domain Id="10">
        <General>
            <Interfaces>
                <NetworkInterface name="wlan0" priority="default" multicast="default" />
            </Interfaces>
            <AllowMulticast>true</AllowMulticast>
            <EnableMulticastLoopback>true</EnableMulticastLoopback>
        </General>

        <Discovery>
            <Peers>
                <Peer address="192.168.68.167"/>
                <Peer address="192.168.68.165"/>
            </Peers>
            <ParticipantIndex>auto</ParticipantIndex>
            <MaxAutoParticipantIndex>100</MaxAutoParticipantIndex>
        </Discovery>
    </Domain> -->

</CycloneDDS>

Hi everyone,

I’ve managed to solve the issue — it was indeed related to the CycloneDDS configuration.
After setting the multi_rmw.xml

<?xml version="1.0" encoding="UTF-8" ?>
<CycloneDDS xmlns="https://cdds.io/config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd">
    <Domain id="0">
        <General>
            <Interfaces>
                <NetworkInterface name="eth0" priority="default" multicast="default" />
            </Interfaces>
            <AllowMulticast>spdp</AllowMulticast>
        </General>
    </Domain>

    <Domain id="10">
        <General>
            <Interfaces>
                <NetworkInterface name="wlan0" priority="default" multicast="default" />
            </Interfaces>
            <!-- false = pure unicast, nur Peers -->
            <AllowMulticast>false</AllowMulticast>
            <EnableMulticastLoopback>false</EnableMulticastLoopback>
        </General>

        <Discovery>
            <Peers>
                <!-- Lokale Discovery (eigene Processes) -->
                <Peer address="localhost"/>
                <!-- Robot -->
                <Peer address="11.65.80.243"/>
            </Peers>
            <ParticipantIndex>auto</ParticipantIndex>
            <MaxAutoParticipantIndex>100</MaxAutoParticipantIndex>
        </Discovery>
    </Domain>

</CycloneDDS>

config everywhere, communication now works fine. I’m receiving all topics over WiFi, and I can control the robot via
/go2_unit_27778/cmd_vel
without any problems.

However, I still have one issue:
For certain topics, such as
/go2_unit_27778/sensor/camera_raw,
no data is coming through at all.
Has anyone experienced this or knows what might cause it?

Also, one more question:
Is it possible to run “ros2 launch go2_viz view_robot.launch.py” on an external host that only receives all ROS 2 topics over WiFi, without being connected via Ethernet?
The host does receive all topics correctly over WiFi, but I’m not sure if the launch file or configuration needs any modification for this setup.

Best regards

This is a dds related issue again. You have to configure on pn both pc’s the dds settings to accept and transfer large files as if one packet is loss then dds doesn’t show it.

Option 2 is to improve the hardware i.e. the WiFi transmission device as the speed is not sufficient that DDS automatically picks it up.

Yes

You just need to build go2_viz and set the correct go2 id via .bashrc or for a specific term inal e.g.

 export GO2_NS=go2_unit_27778