Arduino Quadcopter
Arduino Quadcopter
The goal of this project is to create a stabilized Quadcopter with 100% homemade software. To achieve that goal why not also built the drone itself ? To make my life easier I've chosen parts with a big user-base.
To get started in a safely manner, I've built a rig allowing 2 motors to balance a 1 axis aluminum tube. The goal with this rig is to write a library to use the IMU, the ESC's and to balance the axis.
For the IMU library, I've implemented a Kalman filter to reduce the noise. Unfortunately my IMU data was really noisy and I needed to add a really strong low-pass filter.
For the stabilisation algorithms, I used 2 PID:
One to stabilize the rig at the desired angle
One to stabilize the rig at the desired angle rate
After a lot of trials and errors, I finally managed to stabilize the rig and it's reacting well to environnemental changes (wind, bumps…)
I had a lot of problems when implementing the program for 3 axis on the drone:
Firstly my motors output differs greatly, sometimes 50% of difference, I had to implement a dynamic offset on each motors based on throttle. I picked matching ones on the rig
No matter how hard I tried, I couldn't stabilize the drone. Hours passed adjusting the PIDs the Offsets, the filters on the IMU with no results. It was like the drone was reacting with a delay. So I timed the main loop. It turned out it was taking way too much time (20ms)
I couldn't resolve this problems with the current state of the project, the STM32 Quadcopter project aims to solve theses problems.
Github: