ROS 2 Integration
The ADOS Drone Agent includes an opt-in ROS 2 Jazzy environment that runs inside a Docker container alongside the main agent. When you enable it, a bridge node reads your flight controller data and publishes it as standard ROS 2 topics. You can write your own nodes, run perception algorithms, plan trajectories, and visualize everything in Foxglove Studio from your browser. If you don’t need ROS, nothing changes. The Docker container only starts when you explicitly initialize it.Who is this for?
- Researchers who want to prototype algorithms (VIO, SLAM, path planning) on a real drone without building the ground-up infrastructure
- Commercial integrators building custom perception or inspection pipelines on top of the ADOS platform
- Developers who want access to the ROS 2 package ecosystem (Nav2, Foxglove, behavior trees, point clouds)
- Students learning robotics who want a real drone instead of just simulation
How it works
The agent’s MAVLink service owns the flight controller serial connection. It writes decoded frames to a Unix socket at/run/ados/mavlink.sock. The Docker container bind-mounts this socket, and the MAVLink Bridge Node reads it and publishes 11 standard ROS 2 topics. Foxglove Studio connects over WebSocket to visualize everything.
Quick start
This pulls the Docker image (about 800 MB), starts the container, and launches the bridge and Foxglove.
Open Foxglove Studio in your browser and connect to:
ados ros create-node my_planner --template planner
ados ros build
ados ros launch my_planner planner_node
What you get
| Component | Description |
|---|---|
| MAVLink Bridge Node | Reads the agent’s IPC socket, publishes 11 mavros-compatible topics |
| Camera Node | USB UVC camera capture, publishes /camera/image_raw and /camera/camera_info |
| Foxglove Bridge | WebSocket server on port 8766 for real-time visualization |
| Developer Workspace | ~/ados_ws/ with colcon build, auto-rebuild on save, package templates |
| MCAP Recording | Record topics to MCAP files for offline analysis and replay |
ados ros CLI | 10 commands for status, init, create-node, build, topic echo, recording, and more |
| REST API | 14 endpoints at /api/ros/* for programmatic access |
Profiles
Different use cases need different amounts of compute. Profiles control which services start inside the container.| Profile | RAM | What it includes |
|---|---|---|
| Minimal | ~340 MB | Bridge + Foxglove only. Good for telemetry visualization and basic node development. |
| VIO | ~900 MB | Minimal + camera node + VINS-Fusion. For GPS-denied flight using visual-inertial odometry. |
| Mapping | ~900 MB | Minimal + camera node + octomap. For 3D occupancy mapping. |
| Custom | Varies | You choose which packages to launch. |
Supported boards
Not every board has enough RAM or CPU for ROS 2. The agent checks the board profile at init time.| Board | RAM | ROS Support | Max Profile |
|---|---|---|---|
| Rock 5C Lite | 16 GB | Yes | VIO |
| RK3588S2 boards | 4+ GB | Yes | VIO |
| RK3576 boards | 4+ GB | Yes | VIO |
| Raspberry Pi 5 | 8 GB | Yes | VIO |
| Raspberry Pi 4B | 4 GB | Yes | Minimal |
| Jetson Orin Nano | 4-8 GB | Yes | Minimal |
| Boards with less than 4 GB | - | No | - |
Next steps
Published Topics
All 11 MAVLink-to-ROS topics with message types and rates
Workspace Guide
Creating nodes, building packages, and using templates
Network Access
Three ways to access your drone’s ROS environment
Foxglove Studio
Visualizing topics, recording data, and custom layouts