Hi Husarnet community!
We are working on a robotics project where we connect an ESP32 to a Raspberry Pi wirelessly using micro-ROS (UDP transport), and then the Raspberry Pi connects to a remote node via Husarnet for teleoperation. The Raspberry Pi runs a Docker container with ROS 2 Humble and micro_ros_agent as the bridge between the ESP32 and the ROS 2 ecosystem.
Problem: We cannot simultaneously reach Husarnet peers (hnet0, IPv6) and have micro_ros_agent work correctly with CycloneDDS.
-
Without
<Transport>tag: CycloneDDS defaults to IPv4, ignores hnet0 ā micro_ros_agent works locally but Husarnet peers are unreachable -
<Transport>udp6</Transport>(needed for hnet0): micro_ros_agent fails withrmw_create_node: failed to create domain -
Explicit
<NetworkInterface name="hnet0"/>without Transport: CycloneDDS reportshnet0: does not match an available interface(IPv4/IPv6 address family mismatch) -
<NetworkInterface name="hnet0" multicast="false"/>+<AllowMulticast>spdp</AllowMulticast>: same failure
Question: Is there a CycloneDDS XML configuration that allows using hnet0 (IPv6/Husarnet) for remote peers while keeping IPv4 working locally ā without breaking micro_ros_agent? FastDDS achieves this via multiple transport descriptors (UDPv4 + UDPv6 in the same profile), but CycloneDDS only accepts a single <Transport> value.
ROS 2 Humble, Docker (network_mode: host), Raspberry Pi 5, Husarnet hnet0