Skip to content

Set Up the ROS 2 Bridge

Goal: Integrate a ROS 2 robot with Rover Nexus by running rover_ros2_bridge, which translates ROS 2 (DDS) to and from the Cap'n Proto messages the agent consumes over a Unix domain socket.

Before you begin

  • The agent is installed via its bootstrap command (which also enrolls the robot).
  • A working ROS 2 Jazzy robot on Ubuntu 24.04, publishing its motion/status topics over DDS, on the same host as the agent.
  • A ROS 2 workspace to clone rover_ros2_bridge into.

Why a bridge is needed

The agent does not speak ROS 2 / DDS directly. It consumes Cap'n Proto messages over a local hop. The bridge is a separate process that sits between your ROS 2 graph and the agent:

ROS 2 nodes <--(DDS)--> rover_ros2_bridge <--(Unix domain socket, Cap'n Proto)--> rover-agent --> cloud

The bridge subscribes to your ROS 2 telemetry topics and republishes them as Cap'n Proto to the agent. It also relays commands the agent emits back into ROS 2.

Steps

Follow the install, build, and run instructions in rover_ros2_bridge. The overall flow is:

  1. Enable the agent's Unix domain socket hop in robot.toml ([local_transport] kind = "uds") and restart the agent so it listens on the socket (default /run/rover-agent/agent.sock).

  2. Clone the repository into your ROS 2 workspace as src/rover_ros2_bridge and run that repository's install and build scripts (do not use a bare colcon build; the package documents why).

bash cd /path/to/your_ws/src git clone https://gitlab.com/rover-nexus/rover_ros2_bridge.git rover_ros2_bridge cd rover_ros2_bridge ./scripts/install.sh

  1. Configure the topic mapping so the bridge knows which ROS 2 topics carry motion and status telemetry, and how they map to the Cap'n Proto messages the agent expects. Edit the YAML configuration or use the bridge's built-in web UI (default http://<robot-ip>:8765). Those message definitions are available via the client libraries.

  2. Start the bridge with the repository's run script or ros2 launch rover_ros2_bridge bridge.launch.py (or the packaged systemd unit, after editing it for your host).

  3. Verify telemetry flows end to end: the agent logs show incoming messages and the robot's live data appears in the web app. See Verify Agent Connectivity.

Notes

  • The agent's ingest path is the same Cap'n Proto contract whether or not the robot is ROS 2 based; the bridge produces those messages on the ROS 2 robot's behalf over the socket hop.
  • Commands from the cloud (for example mode, navigate-to, velocity, pause) are emitted by the agent onto the local hop; the bridge relays them into ROS 2.
  • The socket hop is same-host only. Run the bridge on the robot that runs the agent.

Next steps