Monday, June 11, 2012

Update: ROV-suite (short)

Hey!  I'm super tired right now, so this post will be pretty short even though it covers some good material.  I'll go more in depth into these topics at a later date.  First, check out the latest screenshot of Monterey!  Like the new compass?  It's my first time embedding a QML widget in a QWidget application.  I personally like it, although the ring around the compass has a few rough spots that I need to (and will) take care of soon.  Nothing a little Pixelmator can't handle.

Also, Monterey is now multithreaded!  Yay!!!  You'll see a smoother, more responsive UI now on systems with a slower clock speed but with multiple cores.  Granted, Monterey currently doesn't take up *that* much power, but who knows how intensive it'll be in the future.  Monterey is admittedly my playground for learning about new technologies and new techniques.

If you haven't checked out OpenROV, check it out!  It's a pretty awesome open source (hardware and software) ROV project.  I'm working on making an Arduino binary that can act as a bottomside software for Monterey that is compatible with the current OpenROV setup.  That way, if you get that hardware, you can still use ROV-suite.

A friend of mine, Nick Sopwith, who is a whiz at electronics (although I will have to take some credit for helping teach him some C++), has recently taught me how to etch my own circuit boards in my garage using a laserjet printer, an iron and some ferric chloride.  He and I have a few surprises up our sleeves for our robotics team's ROV next year (he's a year younger than me and he's on the team).  Can you say Arduino Mega 2560 Ethernet plus lockable breakouts for sensors, ESCs and more?  With a built in digital video switcher?  And some IP addressable cameras?  It'll be fun stuff!  Speaking of robotics, when this current season is over, I'm gonna post some articles about the awesome control application that I've been working on for the team.  It's just about 5,000 lines of code and can help the ROV pilot itself.  I won't open source it (the code is kinda messy because I wrote the foundation code before learning much about how to split up my code into classes), but it has some interesting features and though processes behind it.

Woah.... I just realized that I still have features to add to Monterey before I can feel comfortable removing the "beta" tag.  That's after heavy testing, of course!  I need to link it better with Tahoe and just make sure it is polished.  I need to add more information to the debug tab as well.  I'm thinking having a grid of squares and progress bars that show motor value percentages, servo percentages and relay states.  Maybe I'll even through in a QVectorDecoder widget so that you can try your hand at coming up with a vector drive formula and be able to test it entirely within Monterey's UI.

Finally, I'd like to welcome my friend, Nick Sopwith, to the ROV-suite crew!  Like I said earlier, he is quite talented with electronics (custom PCBs, homemade Arduinos, etc), so he will be able to help us develop an entire control system based on ROV-suite's software and his circuitry!  Welcome aboard, Nick!

Thanks for stopping by,

Chris K

P.S.  I'll post some pictures of our PCB etching and describe the process in more depth at a later date.


  1. Nice. Looking forward to the documentation. This will go nicely along with my openROV

    1. Thank you, Guldberg! I'm glad to see that you're interested in ROV-suite. Since I don't have an OpenROV, I need someone to test out the setup. I just wrote the bottomside Arduino code that should work with Monterey (based on the code from the OpenROV software git repository). If I send you some Arduino code and a Monterey binary (and instructions), would you be willing to test it out?

  2. Sure. Only that my openROV is not finished yet:-) I will get right on to it, when its done. You should consider a video interface. Would be an real nice addition, I made an interface for another robot quite similar, with an sdk it wasnt much of a hassle (my coding is really at a low hobby level). Here is a pic of the GUI

    1. That's okay! It's further along than my hardware (or lack of it). ;) Yeah. I've been thinking about how to get the video feed into Monterey. I'm not too familiar with video technologies, so I'd have to look into it. For instance, should I use an EasyCap to take video from RCA and display that in Monterey or should I just add an interface that works with an IP camera? The library that I'll use for the video display is OpenCV. It's cross platform so I could even get the video to display in Tahoe (the Android app).

      TLDR: Which should I work on supporting first? RCA through an EasyCap or an IP camera?

  3. Hmm, now that I re-read your posts I can see that you aim for a cross platform tool. That maybe rules out the SDK. Video would still be nice though.