Any flight controller that can support a standard bicopter configuration will get you all the way up to manual flight, maybe even some level of position hold using GPS. I do not have enough experience with these flight controller options, so making it work is your responsibility and I can't offer any further assistance!
I personally use and recommend my opensource flight controller dRehmFlight VTOL, which runs on a Teensy 4.0 microcontroller and uses easy to understand Arduino code. You will need to configure the control mixer yourself to accommodate the bicopter mixing, and configure PID controller gains for this platform. If this sounds too difficult or you are already confused, this project is probably not for you.
"Clean" code and more details: https://github.com/nickrehm/dRehmFlight
Bicopter mixing in the controlMixer() function within dRehmFlight looks something like this:
m1_command_scaled = thro_des + roll_PID; //left motor m2_command_scaled = thro_des - roll_PID; //right motor s1_command_scaled = 0.5 + yaw_PID - pitch_PID; //left servo s2_command_scaled = 0.5 + yaw_PID + pitch_PID; //right servo //all other motors and servos zeroed
Control gains that worked well for me, using the controlANGLE() controller:
float Kp_roll_angle = 0.4; //Roll P-gain - angle mode float Ki_roll_angle = 0.3; //Roll I-gain - angle mode float Kd_roll_angle = 0.07; //Roll D-gain - angle mode (has no effect on controlANGLE2) float B_loop_roll = 0.9; //Roll damping term for controlANGLE2(), lower is more damping (must be between 0 to 1) float Kp_pitch_angle = 0.7; //Pitch P-gain - angle mode float Ki_pitch_angle = 0.3; //Pitch I-gain - angle mode float Kd_pitch_angle = 0.055; //Pitch D-gain - angle mode (has no effect on controlANGLE2) float B_loop_pitch = 0.9; //Pitch damping term for controlANGLE2(), lower is more damping (must be between 0 to 1) float Kp_yaw = 0.05; //Yaw P-gain float Ki_yaw = 0.2; //Yaw I-gain float Kd_yaw = 0.00015; //Yaw D-gain (be careful when increasing too high, motors will begin to overheat!)
I will include the lidar and optical flow sensors in the parts list below for completion, but I am offering no support for the level of functionality shown in my video. The stock dRehmFlight code does not natively support these sensors or the autonomous altitude and position hold functionalities. You will need to do the implementation for this yourself, and it is not easy. That said, the simple bicopter code modifications shown above are all you need to do for fun, manually controlled flight.
- Radio: https://amzn.to/3PqNgQv
- Motors: https://amzn.to/3Y7pqgK
- ESCs: https://amzn.to/3HkpO4K
- Battery: https://amzn.to/3wEYV6H
- Tilt Servos: https://amzn.to/3kR5EYq
- BEC 5v Supply: https://amzn.to/3yL3ugg
- Teensy 4.0: https://amzn.to/3IR29ZW
- Teensy 4.1 (if 4.0 is out of stock): https://amzn.to/3c1OSSw
- IMU: https://amzn.to/3Oje9og
- 4mm Carbon Tubes (for tilt arms): https://amzn.to/3WKp2DP
- Bearings: https://amzn.to/3DrliQG
- Magnets (for back cover): https://amzn.to/3RhKhvk
- 4mm M2.5 Setscrews: https://amzn.to/3wHpN5O
- Pushbutton: https://www.radioshack.com/products/spdt-pushbutton-switch
- TFMini Plus Lidar Sensor: https://amzn.to/3jhUZWh
- PX4Flow Optical Flow Sensor: https://amzn.to/40hONhu
All of the links above are Amazon affiliate links. I receive a small commission for every product purchased at absolutely no cost to you.
3D PRINT INSTRUCTIONS:
.STLs are included in the 'Files' section of this page with required quantities listed in their file names. PLA, PETG, or ABS plastic will work just fine. The back cover may be printed in LW-PLA to reduce weight.
Chances are, the phone_interface piece will not fit your particular phone / phone case. This is why it was designed as a separate part, so you...Read more »