raspiHUD - Ground based HUD without FPV

Being able to see what the autopilot is thinking in real time is a valuable tool for tuning autopilot behaviour.  FPV is normally used for this but I can't use it on my aircraft.  A good solution is to use minimOSD on the ground driving a video monitor.  I have had a few flights with this and it works very nicely.  minimOSD is amazing but still limited in what it can do.

The raspberry pi is very cheap, has a composite output and a good graphics accelerator.  I need the composite video for the pirate eye monocle I use. Using a laptop and HDMI->composite converter is not reliable and very poor quality.  To get a reasonable frame rate (~20fps) the openGL ES2 3d graphics capability of RPi needs enabling.  The amazing pi3d python library was the obvious choice.  It will also run on an x86 linux machine running x so development time is quick.

There has been a bit of optimising to get reasonable performance.  The resulting python module is a functional proof of concept but it is a way from finished.  At 20fps it consumes 70% of the processor time.  That leaves plenty of capacity for drawing all of the status items and some capacity for drawing more 3d objects.

I do have my own plans to add to the raspiHUD.  What would you put on the display?  Proximity warnings with 3d position?  Ground elevation map?  Local weather conditions?

With some advanced fiddling RPi might be encouraged to put its camera output on the background, then it would become a proper (but large and heavy) in flight FPV HUD.  I don't plan to do this myself.

More raspiHUD details and documentation available here (LINK FIXED)

Learn more about pi3d here

paya tech video monocles

The pirateeye monocle from paya technology.  HUD flying without the need for a buddy.

ps. if anyone else thinks my hud design looks like it is smiling face then you are not alone.

Views: 1239

Tags: HUD, OSD, opengl, pi3d, raspberry

Comment by evilmacaw on August 2, 2014 at 8:58am

I have been using the Eyetop Centra  http://www.vrealities.com/products/featured/eyetop-centra

set up ,it is cheaper  lower resolution but diopter adj  with dial and low profile .

Comment by Matthew Coleman on August 2, 2014 at 12:26pm

That should work with raspiHUD.  The fonts may need to be larger but they are all scalable.   It might be a more readable alternative to minimOSD at that resolution.

Comment by GliderUAV on August 2, 2014 at 11:18pm

Hi Matt,

That's a nice layout for a HUD. I may want to switch to this setup as well.

What would I put on the display?

- Altitude in M

- Climbrate in M/s

- Airspeed Km/h

- Motor on or off

- Battery voltage in V

- Flighttime (starts with motor on)

- LOGO subroutine name

Regards,

Kees

Comment by Alain on August 3, 2014 at 12:38am

Hi Matt,

Very nice and interesting project! Thanks for sharing it.

I wonder if it would be possible to build a Ground Control Station, something like the ardustation (https://code.google.com/p/ardu-station/), added with your HUD ?

I am thinking of hooking up a LCD screen (like here or maybe better here ) which would be used to access and tune the autopilot, as with the ardustation, and using your HUD for flight monitoring.

Regards

Alain

PS: It seems there's something wrong with the first link provided at the end of your post, I end up in the same page as the 2nd one (the Pi3d documentation)

Comment by Matthew Coleman on August 3, 2014 at 4:01am

@Alain,

Since the RPi is running linux it can run mavproy and mavproxy modules.  This is much more powerful than the ardustation.  You would need a keyboard but that makes it easier to use.  raspiHUD should sit on top of mavproxy ok.  raspiHUD still needs much work before it becomes public usable.  Configuration is not so clean as minimOSD.

Thanks for pointing out the broken link.  I will fix it later.  Got to go flying now.

Comment by Matthew Coleman on August 3, 2014 at 4:10am

@GliderUAV

All those items are possible or already in progress.  It is quite quick to add new things but it is not nicely organised yet.  Configuration files is one thing I need to figure out. Ideally the HUD module has no hard configuration coding and everything is flexible. 

I do like the idea of a flight timer including a total motor runtime.  It should be easy to do a flight timer based on minimum airspeed.


Developer
Comment by Bill Bonney on August 3, 2014 at 1:56pm
To improve efficiency don't draw. In APM Planner 2.0 we use svg graphics. They are converetd to a bitmap on loading into the PFD, and then the graphics card handles it. No extra work as this is a supported feature in QtQuick. You can also use Qt/QtQuick on RPi, so maybe you can use that as part of a HUD solution. There basic groundwork for overlaying on video. Its just not completed yet. QtQuick also allows web like development, akin to OpenFPV without the browser support challenges (That said... Qt on mobile platforms for video objects is better supported than desktop as each desktop platform is different in the codecs that are licensed licensed, ie VLC/gtreamer/QuickTime/Windows. Its quite irritating, RPi is probbaly much simpler) I should get a digitizer and complete that feature in AP2.
Comment by Matthew Coleman on August 3, 2014 at 11:52pm

@Bill,  I agree about not doing draw every frame.  That was the disaster that I tried first before going for openGL.

There is a style choice on how to create the graphics. SVG is nice but someone still needs to draw it.  I decided to write the python code to draw vector stuff which is also parametric. For example, on the roll indicator the radius, teeth spacing and tooth length are parameters the user can modify to taste.

The code draws the parametric shapes to an off screen texture.  The texture is then attached to a Sprite (giving it position in 3d space).  The sprite/texture combination is drawn onto a layer which is also an off screen texture.  Different layers get their content redrawn at different intervals. All layers are drawn to the main screen on every frame.  The result is a minimum number of shape draws per screen frame.

I did look at Qt5. People have added opengl support but it looked messy and  I was not convinced by following any of them.  pi3d is getting great support, installs easily and has proven performance.  Qt might have the edge in terms of performance but that is no good if it doesn't run on RPi

Comment

You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2014   Created by Chris Anderson.

Badges  |  Report an Issue  |  Terms of Service