Yes and no. The math here is useful, albeit not required. It is not specialized PhD material; it's linear algebra. (And not the abstract quantum mechanics/chem kind!)
What I mean by not required is, I've written drone firmware and didn't directly use this; the core can be done with a PID for rate controls (Compare measured rate along each axis with commanded; nudge motor power proportional to the diff), and commanding attitudes can be done with fundamental quaternion operations, as a slower outer loop.
I would skip the Tait-Bryan stuff in the article, in favor of pure quaternions. Actually, I'm kind of floored the word "quaternion" doesn't appear in the article.
I always found it interesting that basic quadcopters work on nothing but a gyroscope which measures angular velocity in 3 dimensions, and optionally an accelerometer for auto-levelling, with 3 dimensions of acceleration.
Then of course you can add on GPS for absolute position and route planning in 3 dimensions, and a ground height sensor for auto-landing, then you can add distance sensors on the sides for obstacle avoidance... it's all incredibly intuitive from a game programmer perspective. Then you can add in some signal filtering to mask out the range of vibrations from the motors and props being imperfectly balanced.
The hard part seems to be smooth rapid vertical descent. It's impossible to predict how the prop wash will interact with the wind and push the drone around as it descends into its own turbulence. I was tracking betaflight development for a while and was wondering if we'd ever see some kind of prop-wash calibration. Is there some adjustment of PID gains while descending through prop wash that could improve stability?
> The hard part seems to be smooth rapid vertical descent. It's impossible to predict how the prop wash will interact with the wind and push the drone around as it descends into its own turbulence. I was tracking betaflight development for a while and was wondering if we'd ever see some kind of prop-wash calibration. Is there some adjustment of PID gains while descending through prop wash that could improve stability?
The phenomenon is called Vortex Ring State* and it's not a problem that can be solved with a better calibration/control. A basic description of the problem is the prop moves into it's own prop-wash replacing happy lift with sad turbulence. The solutions are to:
1. Don't descend vertically, always have a reasonable degree of lateral motion.
2. Descend vertically slowly, how slow is vehicle specific
3. Angle the propellers so that their thrust angle is off vertical.
4. Descend with no power at all, thus avoiding the creation of prop-wash entirely, halting the descent will require the use of 1-3.
If you do happen upon a solution that can be applied to traditional helicopters there's probably a good deal of money in it for you.
You could, but once you need to turn around and thrust upwards to avoid hitting the ground, you'll need to run the motors HARD, which will make a lot of turbulence right below you, which you then fall into. So you're falling into wind that is already blowing towards the ground, so you need to push it down even faster, and so on.
Ducted fans might help a little, since they can send the turbulence further away faster, but then you have the additional mass of the ducts, and the inefficiency of accelerating the air to higher speeds, since larger slower props are more efficient (but less responsive), to the point that this is possible: https://www.youtube.com/watch?v=emK-qIbuJ-k
I wonder if, for autonomous (or semi autonomous) flight, there's a way to make the drone flip and "power dive" then fly a carefully configured/programmed half-loop at the bottom? Seems there might be scope that way to have an autonomous "reduce altitude as rapidly as possible to 5m" function on a button that'd fly a full power j shape and compensate for the semicircular radius of the "deceleration without flying through your own prop wash" part of the maneuver? Similar (but more complex) to the "flip" and auto land functions on "toy" drones?
(I wonder if the drone people from Ukraine already have this? I suspect it'd make drones even harder to defend against with anti aircraft system designed and optimised to shoot down fighter/bomber planes instead of swarms of inexpensive drones.)
My intuition is that you don't want to touch your gains/tuning for external disturbance. The tuning should be the most aggressive that maintains stability margins. The external input doesn't matter because you're looking at open loop stability margins (See: https://en.wikipedia.org/wiki/Nyquist_stability_criterion ). All this assumes linear systems and such but as as general principle.
The main anti prop wash thing in BF seems to be using a good frame design so that you don't get frame resonances below ~100+ Hz and that allows you to raise the lowpass gyro filter threshold high enough to let the PID loop handle propwash.
You'd be right to be surprised by lack of mention of quaternions. I (blog author) was not too familiar with them when I did the work this post is based on. With the benefit of hindsight, I may yet revise the post.
Hello, blog author here. I agree the math appears overkill. I wrote this as a learning aid for myself with the benefit of hindsight of having worked with some drone sims. I wanted to dispel any doubt in my mind that I could derive drone physics from basic principles, instead of copy-pasting state equations. I went further and tried to motivate transport theorem, rotational analog of F=ma etc from scratch.
In summary: I take F=ma and extend it for rotational motion. (1) Calculating linear motion when the vehicle containing sensors is rotating. (2) Calculating rotation of the vehicle itself due to thrust/yaw force acting about its center of mass.
I'll echo what the other commenter said: this is no way PhD math. It may appear so - but I'm only being verbose with simpler concepts like cross products and rotation matrices.
Ok man, for me it's PhD math. Waaaay above my high school level math.
Perhaps you will write a version for layman like me, without advanced math and rather with more verbal explanations and animations.
What I mean by not required is, I've written drone firmware and didn't directly use this; the core can be done with a PID for rate controls (Compare measured rate along each axis with commanded; nudge motor power proportional to the diff), and commanding attitudes can be done with fundamental quaternion operations, as a slower outer loop.
I would skip the Tait-Bryan stuff in the article, in favor of pure quaternions. Actually, I'm kind of floored the word "quaternion" doesn't appear in the article.