MinimOSD-Extra is the open source arduino software that takes mavlink data from ardupilot and creates an on screen display on top of your real time video to give you a clue where you are, which direction you should go to fly back to home, how much battery you have left, altitude, airspeed, and artificial horizon if you're flying IFR, at night, or your camera being displayed (I have 3, one rear facing) does not give you a proper horizon you can refer to for hand flying.
Sadly, the device it runs on only has a measly 32KB of flash space, and with all the code it needs to interface with mavlink/ardupilot, talk to a video chip, and do calculations before displaying the result, you can't add much of anything to the current codebase. For reasons that I do not understand, I have not found anyone making an OSD board that would be compatible with the current code while providing more storage for new code.
While I'm not a big fan of the closed source commercial Vector flight controller, it has a really good OSD compared to ardupilot and minimosd. In the meantime, though, I needed minimOSD to be able to rotate my OSD screens without burning an extra switch on my transmitter. I need to rotate screens because I'm doing 3D FPV flying and it's distracting to have OSD data in one eye when you're trying to get a 3D effect from 2 images :)
The way you can do this without burning an extra RC channel is to use rotation swiching on an existing channel (you can also use rotation switching on the APM mode switch, but that never worked reliably for me), but the released code rotates forever as long as your switch is not in the down position, making the switch not usable for anything else.
Thankfully it's open source, so I was able to take the arduino code and improve it to do what I needed. Now, with my custom branch I can rotate the OSD screen by simply flipping any selected switch to any position and then back. This works with the mode switch too if you'd like (sadly the channel number is hardcoded to only be 5 to 8).|
You can get my version from https://github.com/marcmerlin/MinimOSD-Extra (only compiled for plane, but you could port the code to copter if you wish). I've also cleaned up all the compilation warnings in the code, and removed a bit of dead code I found.
Pre-built binaries for plane: https://github.com/marcmerlin/MinimOSD-Extra/tree/master/Released/FW%20%26%20Char
Here are some screenshots from my OSD configuration:
60 degree pitch up, 82% power, 41A, 533W used
The OSD horizon comes in handy when switching from the FPV camera to the bottom and rear facing cameras:
stall speed 27kph under near full throttle
OSD screen #2
This is also useful for debugging and filing bugs. Guided mode was supposed to take over at 70m (it did), and fly back up (it did not, it pitched down, went up to 80pkh while pitching down and losing altitude down to 26m before I took over for manual flight):
OSD screen off to allow for a proper 3D view