Skip to content

Software

Flight controller software / autonomy

Ardupilot is the original open-source project in the drone controller autonomy space. As a result, many prebuilt/commercial drones will run a (slightly out of date) vendor-modified version of Ardupilot. The good of this is that it provides a common reference/starting point and there are online guides explaining how to configure custom hardware and sensors. The bad of this is that most vendors do not provide their modifications/patches back upstream and so it is difficult to customize these pre-built configurations without accidentally breaking/overwriting functionality. PX4 is a project (MIT license) to rebuild the FC/autonomy stack from the ground up and improve the developer experience while maintaining compatibility with existing control software. Betaflight/iNAV are forks of Ardupilot (with custom configuration tools) which removed a large amount of complexity/features in order to support less-powerful controllers and provide more functionality for FPV/racing drones, but don't support more advanced autonomous mission modes.

Control interface

  • Mission Planner is Ardupilot's primary tool for communicating with devices in the field and preforming calibration/configuring hardware.
  • Ardupilot methodic configurator -- Methodic Configurator simplifies the process of finding the best configuration for a particular set of hardware.
  • QGC -- A nice field control interface to plan and execute flights. It includes a toolbox of utilities to check the logs of various subsystems, configure custom variables and calibrate your hardware.
  • BlueOS -- operating system (AGPL3) for companion computers to interface with onboard sensors and the flight controller directly.

Telemetry

  • EdgeTX -- common RC control standards.
  • Mavlink2 -- protocol for controlling/interfacing with a drone.
  • MAVProxy -- python server to control drones via MavLink.
  • SITL -- We can run a simulated environment against our devices/code in order to simulate different conditions.

Event/message queues

  • NATS -- local pub/sub infrastructure.
  • Pub/Sub -- cloud infrastructure to send/receive messages and events.

On-device scripting

  • Lua -- we can use local data on modern flight controllers to expose custom analytics.
  • Python -- this lets us orchestrate linux system calls on our companion computer.

Site

  • MkDocs -- Python wrapper for markdown files.
  • Material -- Theme/UI layer for MkDocs.
  • Cloud Run -- CI wrapper for a python FastAPI server running MkDocs.