- Build a airworthy quadcopter from scratch which can be controlled with a joystick
- Learn PID parameters in a simulation
- Deploy the learned PID parameters and compare the performance to manually set ones
- Learn a control policy
- Deploy the control policy and compare the performance to the PID controller
Axisflying C227 1960KV FPV Motor schwarz
B-G431B-ESC1
The core of the system is a STM32F411RE microcontroller which computes all processes required for the flight controller which includes sensor fusion.
X-NUCLEO-IKS4A1
All volatile parameters on the user side can be controlled from a single file. When a new model is trained the current config is used for training and is saved in the SQLite database models/config.db.
The program quadtest.py can be used to create matplotlib-plots of position, velocity and attitude trajectories from simulation:
python3 quadtest.py
Quadlive provides two functionalities.
python3 quadlive.py
To train the a quadcopter flight controller on the current configuration run python3 quadtrain.py
.
To sample joystick values and send them to the main flight computer run python3 joystick.py
.
The PID controller as well as the flight dynamic model inplementation from quadcopter_simcon have been modified for this reposiory. Big thanks to the creator.