Tuesday, July 16, 2013

Setup Your Raspberry Pi to Run an ROV (along with an Arduino and Monterey)

Big news!  I spent some time today writing some scripts that will install all of the necessary software to configure a fresh Raspbian install to stream video, uptime and CPU temperature to Monterey.  Check it out at GitHub!  More features will be added later.  Right now, it downloads all dependent packages, compiles MJPG-Streamer and setups up autorun scripts.  All you have to do is put the scripts at /home/pi/ and run setupscript.sh.  It'll take care of the rest!  An internet connection is required.

I have a few extra features planned for Monterey now that the Raspberry Pi setup script is working.

  • Autoload video stream based on RPi's IP address
  • Arduino firmware loading (script still needs to be written)
Thanks for stopping by!

Chris Konstad

Monday, July 15, 2013

ROV-Suite: OpenROV Compatible Bottomside

Here's the wiring diagram showing how to wire up the Arduino and Raspberry Pi (powered by a uBEC of your choice).  It's missing ethernet and the webcamera (along with any sensors of your choice), but those are easy to figure out where to plug in.  The webcamera plugs into the Raspberry Pi's second USB port (the Arduino is in the first one).  The ethernet might need to go to a small networking hub, but both the Arduino and the Raspberry Pi should be plugged into the ethernet.  Unlike OpenROV, which uses the BeagleBone as the only attachment point for the network which then forwards the command packets to the Arduino over serial, the Raspberry Pi in this setup doesn't act as a forwarder.  Instead, the Arduino gets the packets directly from Monterey.  The Raspberry Pi is there to forward the webcamera video, allow for remote Arduino firmware flashing, etc.  It is also used to power the Arduino, but that could also be done using the uBEC and the Arduino's VIN pin.

Thanks for stopping by!

Chris Konstad

Sunday, July 14, 2013

Monterey Update

Good news, everybody!  I've successfully gotten video to stream from a webcamera to Monterey through my Raspberry Pi!  Here's a picture of Monterey's GUI, with me sitting at my computer (a custom built desktop with dual 21.5" 1080p monitors, K70 mechanical keyboard, G500 mouse, etc) as an example IP video stream.

I set up my Raspberry Pi following this tutorial.  I used the official OpenROV spec'd webcamera, a WideCam F100.  Everything about it works pretty well!  My only complaint is a slight bit of lag, but it should be useable, especially for observation missions.

I want to add the ability to take high-res still photos with the ROV and send them up to the topside, as requested by Marcus.

Here's the latest commit in the HUD branch.

If you'd like to see features added to Monterey, or if you find any bugs, please open an issue with your request here.

Thanks for stopping by!

Chris Konstad

Thursday, July 11, 2013

Monterey v3.0 BETA in the works!

An early, ugly and pre-alpha build of Monterey v3.0.
Here's a screenshot of the latest version of Monterey, which is very much still a work in progress!  I've shifted hosting the latest version of the code from Sourceforge to Github because Github is a better service, in my opinion.  To keep updated, please look to the Github page (http://github.com/chriskonstad/monterey).  I've finally gotten video to work (kinda) by streaming the video feed from a USB webcamera using a Raspberry Pi and MJPG-Streamer, following this tutorial (the Google hompage is just a QWebView acting as a placeholder for the video feed).  +Eric Stackpole wrote a blog post on OpenROV's blog detailing his thoughts regarding OpenROV's UI and UX, and I'm not going to lie, it really influenced how I think Monterey should look.  Themeing Monterey is less important than getting features working, though, and I have some really cool features in the pipeline!

  • Remote flashing of ROV software using a Raspberry Pi
  • IP video via Raspberry Pi
  • HUD
  • PID algorithm for position holding
  • Exponentially weighted moving averages for smoothing sensor data
  • Vertical speed indicator
  • Tailored for OpenROV electronics and hardware (with the exception of replacing the BeagleBone with a Raspberry Pi)
  • An awesome theme borrowing heavily from Eric's mockup
I've already done some work the past two days on Monterey, bringing much needed improvements to the package.  I've learned more about proper software architecture and UI/UX design since I last worked on Monterey, and I hope it'll show in my new work.  While adding features to Monterey, I'll also be refactoring the older code to made it cleaner and easier to work on.  Also, Monterey 3.0 will link with the Qt5 libraries and use QQuick2 for some of the widgets (see the depth-tape for an example).

Features/bugs already worked on:
  • DiveTimer has been moved to it's own class and now automatically starts and pauses when the ROV enters and leaves the water.
  • Monterey now has a fullscreen mode!
  • The UI is now scalable, meaning Monterey now works on netbooks with 1024x600 displays through laptops with 1080p monitors.  This feature was long needed, and I'm glad I've gotten good enough at layouts to add this functionality.
Thanks for stopping by!

Chris Konstad