• Stars
    star
    738
  • Rank 61,429 (Top 2 %)
  • Language
    C
  • License
    BSD 3-Clause "New...
  • Created almost 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Complete flight control system designed from scratch. Hardware designed with KiCad.

HADES Flight Control System

Complete flight control system designed from scratch. The flight control system is primarily designed for fixed-wing, autonomous drones to enable them to perform tasks autonomously, such as take-off, landing, waypoint navigation, payload delivery, etc.

Every part of this system is designed from first principles! This includes the hardware, firmware (using FreeRTOS), Kalman filtering for state estimation, control algorithms, base station, communication protocol, flight simulator, signal processing, and much, much more.

Feel free to send me constructive criticism or things you would like me to implement, or even if you would like to help me develop this system!

Markdown Monster icon

Intro video: https://www.youtube.com/watch?v=rLDqQ2L_mUQ


Broadly, this repository consists of:

  • Hardware designs (developed using KiCAD).
  • Low-level drivers and firmware (FreeRTOS, for the STM32 platform of microcontrollers).
  • Higher-level firmware such as communication protocols, control and navigation algorithms, etc.
  • Kalman filter designs for state estimation.
  • Debugging tools.
  • Flight simulator (both 6-DOF and 3-DOF) to test algorithms.

Current repository folder structure:

  • Calibration: Raw sensor data useful for checking calibration algorithms (e.g. accelerometer bias, scale factor, etc.).
  • Communication: UAVLink data protocol for reliably packing and transferring data and commands between the aircraft and a further device (e.g. base station). This could be via telemetry or direct serial links.
  • Control: Algorithms for dynamic control of the aircraft (e.g. PI, state feedback, etc.).
  • Data: Collection of various datasets that may be useful for offline testing (e.g. raw IMU data).
  • Debug Software: Tools for interfacing with the hardware (e.g. to read navigation data).
  • Documentation: Preliminary documents to detail aspects of the flight control system.
  • Filtering: FIR and IIR filter implementations, as well as FIR filter design tool.
  • Firmware: The core flight control firmware running on the STM32 microcontrollers.
  • Flight Simulator: 6-DOF and 3-DOF fixed-wing flight simulators developed in Unity. Very useful for testing control logic and algorithms. Requires dynamic model of aircraft.
  • GPS: NMEA sentence parser, as well as raw GPS data for testing.
  • Ground Control: Basestations written in C# to send commands to aircraft and receive data via telemetry. Includes moving map, live plots, etc.
  • Hardware: HADES flight control board design files (schematic, layout, assembly). Hardware consists of sensors, microcontrollers, power electronics, etc. This custom hardware is where the firmware runs on.
  • State Estimation: Kalman filters (various types: quaternion, Euler, different states estimated) designed in Matlab and exported to C for estimation of states required for feedback control (e.g. attitude, position, etc.).
  • Tests: Miscallaneous tests go here. For instance, device driver testing, communication protocol tests, etc.

Note: Most subfolders include an additional README that further describes its contents.


Disclaimer: This flight control system is work in progress. Use the files, hardware, and software given in this repository at your own risk - especially when conducting live flight tests.

BSD 3-Clause License - Copyright (c) 2019, Philip Salmony - All rights reserved.

More Repositories

1

PID

PID controller implementation written in C.
C
693
star
2

LittleBrain-STM32F4-Sensorboard

STM32F4-based PCB interfacing with a variety of sensors.
C
287
star
3

Attitude-Estimation

MatLAB and Python implementations for 6-DOF IMU attitude estimation using Kalman Filters, Complementary Filters, etc.
Python
196
star
4

STRF-Kicad

STM32-based RF-to-USB dongle..
195
star
5

STM32F4-Reference-PCB

KiCad + STM32F4 + USB + Buck converter video reference/test PCB.
148
star
6

AltiumDesigner-Libraries

Personal schematic symbol and footprint libraries for Altium Designer.
135
star
7

FilterLib

Collection of digital filters written in C++.
C++
89
star
8

LeDSP-Audio-SoM

STM32H7-based audio-processing system-on-module.
84
star
9

EKF-Quaternion-Attitude-Estimation

Quaternion-Based Extended Kalman Filter for Fixed-Wing UAV Attitude Estimation
C
78
star
10

STM32F1-Breakout-Board

USB-powered STM32F1-based breakout board.
63
star
11

BananaSchplit

Single rail DC (<12V) to split rail DC supply (+/-12V and +5V).
59
star
12

ControlSystemDesign-Tutorial

Control system design - from theory to practical implementation. Code and files to supplement video series.
ASP
42
star
13

PiCNN

Single-header, lightweight convolutional neural network library written in C++ for Raspberry Pis.
C++
42
star
14

LittleBrainPlusPlus

Updated LittleBrain board
40
star
15

BluePhil

STM32-based development board with various sensors.
40
star
16

ESP32-USB-Dongle

ESP32-C3-based USB dongle with PCB trace antenna.
34
star
17

EMI_TestBoard

Test PCB for switching regulator layout and traces.
C
29
star
18

MPU6050_Breakout

21
star
19

BananaSchplit-MiniUSBC

Tiny USB-C PD split-rail power supply.
HTML
21
star
20

Airspeed_SensorBoard

15
star
21

pcb-design-checklist

Generic checklist for PCB designs.
15
star
22

ClassD-DemoBoard

2x15W Class D Amplifier
12
star
23

PModlet

PMOD PCB with USB-to-UART converter and IMU (MPU-6050, I2C) for FPGAs.
12
star
24

GBS-Boost

Guitar boost pedal (0dB to 20dB) - discrete design.
12
star
25

pms67.github.io

HTML
1
star