Operations
Multi-Drone Setup
Configuring and running multiple drones.
DroneOS supports multiple drones through namespaced ROS 2 topics and services. Each drone gets its own drone_core instance with a unique name and MAVLink system ID.
SITL Setup
Start separate PX4 instances for each drone:
Drone 1 (default instance):
HEADLESS=1 make px4_sitl gz_x500Drone 2 (instance 1):
HEADLESS=1 PX4_SYS_AUTOSTART=4001 PX4_GZ_MODEL_POSE="0,1" \
PX4_SIM_MODEL=gz_x500 MAV_SYS_ID=2 ./build/px4_sitl_default/bin/px4 -i 1Each instance uses a different namespace (/fmu/ for drone1, /px4_1/fmu/ for drone2).
Running Multiple drone_core Nodes
In a single Docker container (for SITL):
ros2 run drone_core drone_core --ros-args \
-r __node:=drone2 \
-p drone_name:=drone2 \
-p px4_namespace:=/px4_1/fmu/ \
-p mav_sys_id:=2For production (real hardware), each drone runs its own companion computer with dedicated containers.
Controlling Multiple Drones
# Fleet overview
droneos --fleet-status
# Target specific drones
droneos --drone drone1 --get-state
droneos --drone drone2 --armThe GCS CLI supports switching targets with the target command:
Drone Agent> target drone2