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.