Description
This quadcopter does not use gyroscopes for stabilization and is controlled by changing the RPM on each of the four motors. Its feature is the use of software PID controllers that provide smooth and stable control.
How does this work?
The figure above shows a simple flowchart of the program. Each engine receives control signals generated by PID controllers, of which there are four in total: PID controller for vertical speed, pitch, yaw and roll.
The first controller seeks to maintain a given vertical speed of the drone (read below), the other three generate signals directly to control the drone.
The throttle axis is represented as Slider 1, now you don’t need to hold and adjust the throttle value to make the drone hover, it’s enough to deflect the slider for vertical maneuver and return it to 0, the drone will tend to keep the vertical speed equal to 0. But this is not altitude hold, because at least vertical speed and tends to 0, but can take small negative values, so the drone will slowly descend. It just makes it easier to control the drone. If you want to keep the flight altitude constant, use AG 2, the algorithm will link the vertical speed and altitude (more precisely, the difference between the required and current altitude).
Controls
– Use Slider 1 as the Throttle Axis (see point above).
– Pitch, roll and yaw are set to standard axes by default.
– Use AG2 to hold the flight altitude, AG3 to light.
Pay attention
– The program is designed to work with a fps value of 60. If your fps value is different, the drone may behave incorrectly.
– Due to the peculiarities of the functioning of electric motors in the game, the drone cannot perform sharp maneuvers, so the control may seem too "sluggish".
This is just a prototype, I'm glad to hear your comments, advice and wishes.
P.S. This version of the drone is outdated.
15 Comments
- Log in to leave a comment
-
-
4,697 sacr3dbac0n0
@DreaPods I've tried the fixed time step, it could work, but it is hard to tune. However, it's still sensitive to FPS lower than 60. Any other ideas? I can't think of any other Vizzy tools we could use to fix this.
-
2,408 DreaPods
@sacr3dbac0n0 Hi! Thanks for the idea, I'll definitely check it out. I also had the idea of polling the PID controllers through a time constant slightly larger than the frame time (0.1...0.035 s) to reduce the impact of frame time instability on the system. But this requires very precise tuning for balance between responsive control and stable behavior of the craft.
-
4,697 sacr3dbac0n0
Hello, I've been working on a PID-stabilized VTOL spaceplane and used your quadcopter as the inspiration and foundation for the code. I just wanted to say that I've found the solution for unwanted oscillations during physics timewarp. It's surprisingly simple: change nothing with code except dividing the PID gains by the timewarp multiplier amount. You can keep integrating and deriving with frame delta time without inducing oscillations. The gains scale with the time multiplier. Although I'm not sure how the frame rate issue could be fixed.
-
2,408 DreaPods
@Jerba This code contains 4 PID controllers that provide stable and smooth control by changing the speed of the engines. It is by changing the coefficients (you can easily see them before the P-I-D components) that you can adapt the program to any craft that is controlled in this way. However, there is a problem that I described above - this code is only a prototype and does not work perfectly. I have some ideas to improve the algorithm.
-
550 Jerba
Just wondering, where and how would I edit the code to be compatible with a much larger and heavier craft?
-
-
-
2,408 DreaPods
@Jerba Thanks, the drone can sometimes be unstable, next time I will try to improve its stability (control through the pitch of the blades should improve the situation), I also have ideas for introducing some flight modes, and improving the program
-
550 Jerba
I love how stable it is and how well it can stabilize itself, do you plan on making a more stunt/fpv style drone? I’d love to that be able to possibly make a vizzy driven car and then follow it with the drone. I live the stability of this but it doesn’t turn too well, especially at higher speeds and doing something like a 180 turn using both roll and yaw upsets the drone. Would love if you could make a more performance based variant of the code! Great job on the vizzy too, really surprised at just how simple and small the code was considering how well it flies.
-
2,408 DreaPods
@Morty Thank you very much, I'm just learning. I have some ideas to improve the program, I hope I will implement them in the future
-
-
-
Your perfomance feedback, bug reports, questions and tips are welcome!