Am I going up? The drone HUD can finally answer that
A pilot told us something that turned out to be four separate problems in one sentence: "When I'm flying the drone it isn't always clear whether I'm going up or down — the camera angle can be different and the horizon bar doesn't show anything."
The last part was literally true, and for a reason that is slightly embarrassing. The green horizon line was positioned with a fixed constant of four pixels per degree of pitch. That is not how a camera works. A direction θ off the camera axis lands focal_length · tan(θ) pixels from the centre of the screen, and at a normal field of view on a 1080p display the focal length in pixels is around 900 — so at 20° of pitch the real horizon is about 340 px from the centre and we were drawing our line at 80. It also ignored the recon zoom, which changes the field of view every frame you hold X. The line was never on the horizon. It was a green stripe that moved vaguely in the right direction.
Second: the line was computed from the FPV camera basis, but the HUD is drawn in every view. In chase-back it was offset; in chase-front — where the camera looks back at the quad — it was mirrored. Third: one bare line has no scale. Five degrees and forty degrees look identical when there is nothing to compare against, and when the line slid off the edge of the screen it simply vanished with nothing in its place.
But the real problem was choosing the wrong instrument
Fix all of that and the pilot's actual question still goes unanswered, because on a multirotor, attitude does not determine trajectory. On an aeroplane the two are linked: nose up, you climb. A quad pitched thirty degrees forward with the throttle above hover is accelerating and climbing. A quad sitting perfectly level with the throttle below hover is sinking. There is no artificial horizon in the world, however correctly drawn, that can tell you which.
That is why every real FPV stack ships vertical speed as its own element rather than trusting the horizon. Betaflight has an altitude element, a vario and a numeric vario. INAV draws a small ladder of up/down arrows, plus a symbol beside the altitude that lights while you are changing height on the throttle and goes out when you level off. The DJI goggles list "V.S" among the standard OSD fields. We were computing vertical speed every single frame — the trick detector for freestyle used it — and never showing it to anyone.
What is on the HUD now
A V/S gauge, next to the throttle bar on the left. The bar grows upward from the centre when you climb and downward when you sink, so you get the direction before you read the number, with the exact rate in m/s underneath. It is smoothed the way real variometers smooth, because raw vertical velocity in acro jitters too much to read. Green for a climb, amber for a descent, red past eight metres a second down.
A trend arrow beside the altitude, INAV's trick, which costs no screen space at all and removes the second of staring a bare number needs before it admits which way it is moving.
An AGL readout that appears when the ground is within 120 m. Over the Alps "1800 m" tells you nothing; next to a rooftop, height above the surface is the only number that matters. We had already been computing it.
A real pitch ladder instead of the single line: rungs every ten degrees with their angle labelled, solid above the horizon and dashed below it, end ticks always pointing toward the horizon — so even one visible rung tells you where level is. That is standard climb-dive ladder symbology, and it exists precisely because pilots need to recover from attitudes where the horizon is off-screen. When it does leave the screen, a chevron now parks at the nearest edge pointing at it, with the pitch angle beside it. And the whole thing is computed from whichever camera is actually rendering the frame, with a proper tangent projection, so it sits on the horizon you can see — in FPV, in chase, at any zoom.
A flight path marker — the small winged circle. This is the velocity vector from aviation head-up displays, and it is the direct answer to "the camera angle can be different". The centre reticle shows where the camera points. The flight path marker shows where the aircraft is actually going. Above the horizon bar, you are climbing; below it, you are descending; and because it is projected through the render camera, a tilted FPV lens or a chase view does not lie to you. It hides when you are hovering, because a velocity vector at walking pace just spins.
An optional audio variometer, off by default in Settings → Sound. Glider and paraglider pilots have used this for decades: beeps that climb in pitch and quicken as you rise, a low steady tone as you sink. The stated point of it in soaring is that it lets you keep your eyes outside the cockpit — which is exactly what you want in FPV. It is off by default because a real FPV rig doesn't have one; this is an assist, not a simulation detail.
And if you fly with a transmitter, you can see your sticks
Plug in a radio and two small gimbal pads appear at the bottom of the drone HUD, with a dot each tracking where your sticks actually are. This is the FPV "stick cam" that every sim and most FPV videos carry, and it is the other half of the loop the vertical-speed gauge started: the HUD tells you what the quad is doing, the sticks tell you what you asked for. Watching both at once is how acro is learned.
It has a second, less glamorous use. A channel mapped the wrong way round is currently something you discover by crashing — the pads make it obvious before you take off. The dots follow the physical stick, with no expo and no deadzone applied, so what you see is where your thumb is; the deadzone is drawn as a faint band instead, which explains the "I'm moving it and nothing is happening" moment rather than hiding it. Which pad is called left follows the ⇄ setting in controller calibration — the mapping genuinely cannot tell us which hand holds the throttle, since Modes 1 and 3 put it on the right and 2 and 4 on the left.
The pads only exist while a controller is connected, and there is a checkbox in Settings → Flight if you want a clean frame for recording.
The seagull is untouched. This was a drone problem, and the drone got the fix.