Drone drivers¶
Each drone needs its own driver or bridge, started in its own terminal before the mission
connects (examples default to start_driver=False). This is the real-world counterpart of the
simulation bridge.
Pick your drone below for the install, the driver command, and a worked flight. Targets are
defined in scripts/lib/drones.sh.
Pick your drone¶
Installs MAVROS and the GeographicLib geoid datasets.
Start the driver, then fly a 2 m square:
No separate install: pymavlink ships with the core SDK, so the mission opens the link
itself. make drone-mavros adds the geoid data used for GPS altitude.
Outdoor needs no bridge; fly directly:
nectar-activate
python3 nectar/nectar/examples/control/basic.py \
--drone mavlink --mode position --side 2.0 --env outdoor \
--connection serial:///dev/ttyUSB0:921600
Indoor (GPS-denied) starts the vision-pose bridge first:
Reuses MAVROS, launched with px4.launch.
No separate install: pymavlink ships with the core SDK. Outdoor the mission opens the
link itself; indoor starts the vision-pose bridge (make driver DRONE=px4_mavlink ENV=indoor).
Installs px4_msgs and the Micro XRCE-DDS Agent (real hardware; no SITL).
make driver-px4-dds DEV=/dev/ttyUSB0 BAUD=921600 # terminal 1 (PORT=8888 for UDP)
nectar-activate # terminal 2
python3 nectar/nectar/examples/control/basic.py --drone px4_dds
To add an object detector to the same mission, install ai too (make setup → control ai)
and use from nectar.ai.detection import Detector.
Installs Crazyswarm2 (apt when available, else source) plus radio udev rules. Set your URI
in crazyflies.yaml.
Manage drivers
- Install every driver at once with
make drone-all. - Stop all running drivers and bridges with
make driver-stop. - Override connections with the
FCU_URL,DEV,BAUD,PORT, andIPenv vars. - Per-type shortcuts exist (
make driver-mavros,driver-px4, ...).
For the full backend matrix and configuration, see the Control module.