Home / ROS Drones: VOXL 2 with ROS 1, ROS 2 and MAVROS

Why a VOXL Drone Is a ROS Drone

Every ModalAI development drone flies on VOXL 2 or VOXL 2 Mini, a Linux companion computer and PX4 flight controller on one board. That means a ROS drone from ModalAI is not a flight controller with a ROS computer bolted on: the same board that runs the autopilot also runs your ROS 1 or ROS 2 nodes, with the cameras, IMU and visual inertial odometry (VIO) already publishing as topics. The ROS overview in our documentation explains how that fits together.

How ROS Fits the VOXL SDK

The VOXL SDK's native interface is the Modal Pipe Architecture (MPA): systemd services that exchange sensor data over POSIX pipes with very little overhead. ROS support is a bridge onto that architecture. A single node, voxl-mpa-to-ros for ROS 1 or voxl-mpa-to-ros2 for ROS 2, translates the pipes into topics, so your nodes see IMU data, camera images from the high-resolution, tracking and stereo sensors, point clouds from a time-of-flight sensor and the 6-DOF VIO pose without any driver work. Write against MPA directly when you need the last bit of performance; write against ROS when you want your existing tooling. The docs are explicit that both paths perform well.

ROS 1 on VOXL 2

ROS 1 is installed on both the host PC and the aircraft. The ROS installation guide for VOXL 2 walks through a Melodic install on each side, the environment script that sets the ROS master and IP addresses, and launching voxl_mpa_to_ros so VOXL's sensors appear as topics on your laptop. From there, Building ROS Nodes shows how to compile and deploy your own catkin workspace onto the vehicle, and the camera interface guide covers streaming any camera into ROS.

ROS 2 on VOXL 2

From VOXL SDK 1.1 the ROS 2 Foxy base packages ship on the board itself, so apt-get install voxl-ros2-foxy works with no internet connection. The ROS 2 installation guide covers that install, the voxl-mpa-to-ros2 bridge and its configuration, and how to run a newer distribution such as Humble inside Docker when your stack needs one. Building ROS 2 Nodes then takes you from an empty colcon workspace to a node running on the aircraft.

MAVROS and Autonomous Flight

Perception is half of a ROS drone; the other half is commanding the flight controller. On VOXL 2 the PX4 flight stack runs on the board's sensors DSP as voxl-px4, and voxl-mavlink-server exposes its MAVLink stream to onboard applications. The MAVROS tutorial builds on that: it installs MAVROS on VOXL 2 next to voxl-px4, voxl-vision-hub and voxl-mavlink-server, then flies the aircraft autonomously in a figure eight from a ROS node, with VIO providing position in place of GPS. If your application is not ROS-based, the MAVSDK guide reaches the same flight controller from C++ or Python.

ROS-Enabled Development Drones

Starling 2 Max is the platform most ROS developers start on: a VOXL 2 aircraft with dual high-resolution and dual tracking cameras, optional time-of-flight depth, and about 55 minutes of flight time, built for GPS-denied indoor and outdoor work. Stinger Vision FPV puts VOXL 2 Mini and the full VOXL SDK inside a Blue UAS Cleared Select FPV airframe. Both ship with the SDK installed, so the guides above apply on the day the box opens, and both are NDAA compliant and assembled in the USA. If you would rather build your own airframe, the same ROS support comes with every VOXL 2 development kit.

ROS Tutorial