Skip to content

ROS 2 Bridge

The fastest way to integrate a robot that already runs ROS 2.

ROS 2 robots integrate through the public rover_ros2_bridge package. The bridge translates ROS 2 (DDS) topics, services, and actions to and from the same Cap'n Proto messages the agent consumes over a Unix domain socket. From the agent's perspective a bridged ROS 2 robot looks identical to a native one.

How it fits

  ROS 2 stack (DDS)  <──►  rover_ros2_bridge  <──►  Unix domain socket (Cap'n Proto)  <──►  rover-agent  <──►  cloud
  • Uplink: the bridge subscribes to your ROS 2 telemetry and feedback topics, converts them to Cap'n Proto, and sends them to the agent over the socket.
  • Downlink: the bridge receives commands from the agent, converts them into ROS 2 messages, and publishes them onto your ROS 2 graph.

See Architecture for the end-to-end flow and Unix Domain Socket for the hop the bridge uses.

What you do

  1. Install the agent on the robot's Linux host by running its bootstrap command, which installs and enrolls the robot in one step.
  2. Enable the Unix domain socket hop in robot.toml so the agent listens on the socket the bridge connects to (default /run/rover-agent/agent.sock). See Unix Domain Socket.
  3. Clone and build the bridge. Clone rover_ros2_bridge into your ROS 2 workspace as src/rover_ros2_bridge and follow that repository's install and build scripts. Then run it alongside your ROS 2 stack on the same host as the agent.
  4. Map topics between your ROS 2 message types and the Rover Nexus messaging contract using the bridge's YAML configuration (editable from its built-in web UI):
  5. Telemetry, faults/events, objects, mission feedback → uplink.
  6. Mission commands, teleop, mode/velocity, settings, field rules → downlink. See Telemetry Mappings. The target Cap'n Proto message definitions are available via the client libraries.
  7. Declare capabilities so the cloud can match missions to the robot.

Requirements

  • ROS 2 Jazzy on Ubuntu 24.04
  • The bridge runs on the same host as the agent (the socket hop is local)
  • The agent's [local_transport] is set to uds

The repository documents launch, systemd, the mapping schema, Nav2, geodesy, and TF.

Next steps