Thursday, June 28, 2012

Monterey 2.0.2Beta

Great news!  Monterey 2.0.2 Beta has just been released on OSX and Windows!  You can find the binaries here.  The update is fairly minor.  The biggest and most important change is the auto updating (well, mostly auto).  Now, when there is an updated version of Monterey, you will alerted by Monterey and it will provide you with a download link.

Thanks to the Fervor library for making this possible!

Thanks for stopping by and don't forget to update!

Chris Konstad

Monterey: Updater

(images from the author of the Fervor updater library)

I love adding new features to ROV-Suite to make it the best application for driving ROVs that you can find. I really do.  Since most of the base functionality is down (I still need to work on IP camera support and more debugging options), I'm starting to play around with new libraries to add useful features.  For instance, I'll be adding a library soon (shown above) that will alert the user when a newer version of Monterey is available and it will show the user a download URL.  I've been looking at the download numbers at ROV-Suite's SourceForge page, and it looks like most people aren't updating their older versions of Monterey to the latest version.  Maybe it's because they grabbed it early and used the Dropbox link that I put out, or maybe they just haven't checked back in with the project yet.  Either way, by adding this updater (which can be disabled from the preference pane), the user will be alerted to any newer versions, which often include bug fixes and awesome new features!

In other news, ROV-Suite has been well past the 100 downloads mark (56ish due to NetworkingTest alone) for quite a while now.  Monterey is pulling close to that threshold with 80 downloads so far (as of today)!  I'm looking forward to posting about the 100th download of Monterey which I have a feeling will be pretty soon!

Also, I'm not sure if I mentioned this already or not, but the early version of the bottomside software is already on the SourceForge page!  You can view it in the repo here.  Since it's a fairly simple setup, I'm not going to put it in the downloads page.  I'll start doing that later when I have a bunch of 3rd party libraries included with it.

If you have used Monterey to drive an ROV already or if you have any feedback, please let me know!  I'd love to post a quick blog entry with photos and a story or two. And, as always, feedback is very welcomed!


Chris K

Edit:  Apparently there have been 92(!) downloads of Monterey at Softpedia!

Tuesday, June 26, 2012

NetworkingTest on Google Play!

Great news!  I finally got Networking Test out on Google Play!  It took some learning on my part, but I finally found out how to use layouts properly to make a fully scalable GUI using QWidgets.  The desktop versions of NetworkingTest will be receiving that feature soon (on Windows and OSX).  I'm really happy to have consolidated the codebase for the Android and desktop versions!  Now features and bugs that are fixed for one version don't have to be replicated for the other version.  

You can find the Android version on Google Play for $1.00.

Android app on Google Play

As a side note, today Nick, Alex and I etched a circuit board (to make own our Arduino) using nothing but muriatic acid and hydrogen peroxide.  It turned out great!  I'd post some pictures of it but Alex has them.  I'll upload some later.

Thanks for stopping by!

Chris K

Monday, June 25, 2012

Update: Monterey v2.0.1Beta (Windows)

Just an update to let you know that the Monterey v2.0.1Beta for Windows is up in the Sourceforge downloads page.  You can find that here.

Thanks for checking it out!

Chris K

International MATE ROV Competition

Great news!  The robotics team that I am a part of, Jesuit Robotics (a 17 member high school robotics team), just got 3rd place overall in the Explorer class (collegiate level) of the MATE International ROV Competition!  Out of many universities from several countries, only a team from Russian and a team from Perdue beat us!  On the team, my main responsibility was the software.  I'm very happy to say that we did not have a software problem at the competition!  I wrote the topside software and taught two guys, Alex and Nick, how to write Arduino code so that they could write the bottomside software.

Here's our ROV ("Triton").

I'd just like to say thanks for the guys of Jesuit Robotics for a great year, a great ROV and great friendships!  Also, I'd like to thank our mentors for their many, many hours of work and supervision that makes our program possible!

Thanks for stopping by,

Chris K

Wednesday, June 20, 2012

Monterey 2.0.1 Beta

Hey!  I'm down in Florida right now for the MATE ROV competition, but I just thought I'd throw up a quick post about Monterey.  If you want to download the latest version, please check here.  I have binaries there for Windows and OSX.  I have written some documentation that once I go over another time or two I'll put online.  It goes over the code layout of Monterey and the normal operations of Monterey and Tahoe.

Thanks for stopping by!

Chris K

Friday, June 15, 2012

Monterey 2.0.1 Beta on Windows!

It's late here and I have to go to bed, but here's a quick announcement about the release of Monterey v2.0.1 Beta for Windows!  It's been out on OSX for a little bit, but I've finally gotten around to rebooting into Windows and compiling it (even fixing a Windows-specific bug in my code)!  Here's a screenshot as proof!  I tried to upload it to SourceForge's servers, but it wasn't letting me upload anything today (servers seem to be having a permissions issue), so I'll post a different download link in the meantime.  You can find it here.  I'll get it posted to the SourceForge page as soon as I can!  

In other news, Tahoe was finally released onto the Android Marketplace (I hate calling it "Google Play") today!  Check it out if you have Monterey!

Finally, I have decided that the first video feed type I'll support is IP cameras.  I'm going to make a separate piloting GUI application that displays the video (with fullscreen support) with a fancy overlay that shows system states.  I'll post more about this soon!

Thanks for stopping by!

Chris K

Wednesday, June 13, 2012

New Graph for Monterey! (and other minor changes)

Great news!  Qwt is no longer needed to compile Monterey!  That may not seem like a huge deal at first, but now the code base for Monterey is much smaller and that is one less external dependency required to compile and run Monterey on *each* and every system it can run on.  That makes my job easier!  Also, I have added the blue tint to the graph to make it easier to see at a glance.  Also, earlier today I slightly modified the main window's title to display the curent version of Monterey.

Let's see..... Oh yeah!  I also changed some of Monterey's backend so now any commands sent from Tahoe to the ROV show up in Monterey's UI.  Now I just have to see if I can get Tahoe's commands to sync with Monterey.  I wouldn't bet on getting that to work just yet, though, because the communication between Tahoe and Monterey is UDP based.  I am hoping to switch that to TCP later this summer so that I can take advantage of event-based communication between Tahoe and Monterey.

Also, I need to add an LED to Monterey to show that Tahoe is indeed connected to it.  And of course, I need to finish up Tahoe.  When Tahoe is completed, I'll upload to Google Play.  I'm thinking of having a free version and a paid version, but don't worry!  Both applications will be the exact same and both will have their source on the SourceForge page.  The only difference will be that if you buy one of them, then you donate money to me.  If you buy the other, you don't.

I have no intention on making ROV-suite closed source or a paid application suite.  Let me rephrase that:  ROV-suite will never be closed source and you will never ever EVER have to pay even a dime to use the latest version!  This has been a FOSS project and it will always be FOSS.  The only exception to this are Android and (possible) iOS applications.  Those can be (read: not necessarily) paid apps to help offset development costs (paying to be a developer, etc).  But any part of ROV-suite necessary for normal functionality is, and will always be, free (the mobile apps are not key parts of ROV-suite.  They are more like plugins or addons)!  Keep in mind, all parts of ROV-suite (even the paid apps) will have their source at, so you can always compile your own binary (it's easy!) if you want it for free.

Until I got my early-2011 MacBook Pro, I had an older Dell Inspiron E1505 that I ran XP on until I was in the 6th or 7th grade.  Then I started off with DreamLinux and eventually found Ubuntu.  From then until early-2011 (a couple of years), I used Ubuntu as my main OS (I tripled booted with XP and Vista).  I love free and open source applications and I have always wanted to do *something* to help give back to the open source community.  Now, I finally have my chance.  I have experience in this field because of my team and I have finally matured my programming skills enough to be able to be a passable programmer.  I would say that's the only reason why I do this, but then I'd be lying.  I love programming, but I only enjoy it when I have a goal, a project, an objective.  ROV-suite gives me that.  Plus, it's fun and I get to learn a lot about new techniques and new technologies (e.g. QML).  :)

Thanks for stopping by!

Chris K
P.S.  Sorry about the depth of this post near the end.

Tuesday, June 12, 2012

New Graph for Monterey?

I don't like linking to external libraries (DLLs, etc).  I avoid them at all costs.  Why?  Well, when trying to share source code, it's hard to make sure that everyone has everything that they need to have to both compile and run the code.  I use SDL for joysticks because, well, I kinda have to.  If I could do it all from within Qt or from raw *.h and *.cpp files, I would.  I found this QCustomPlot awhile ago when I was working on an Android application (written in Qt, of course) and it worked great!  Now that it's matured even more, I'll probably get rid of the current Qwt code and replace it with this QCustomPlot.  It's just one less library to link to and one less linkage that could cause someone compiler errors.  On windows, it's one less DLL to include in the folder.  On OSX, it's one less framework to bundle.  On Linux, I assume it'll be one less shared object to link to (I have yet to build Monterey on Linux).

Anyways, if all goes according to plan, I'll change out the graphs seamlessly tonight and then hopefully improve Tahoe's integration with Monterey.  Then maybe I'll get some sleep.  We'll see.  ;)

Any comments, questions or concerns?  Anyone know of a good way of getting USB joysticks to work in Qt on Android?  Feel free to ask/answer in the comments!

Thanks for stopping by!

Chris K

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.

Sunday, June 10, 2012

ROV-suite: Tahoe

I've been working recently on the portable (tablet and netbook) UI for Monterey, and here's a screenshot! How does this work?  Simple!  Once running Monterey, join the same network (ad-hoc should work) with your tablet and then start up Tahoe!  The two will communicate over UDP and Tahoe's controls will operate the ROV.  Right now, Tahoe isn't complete, so this is just a sneak peak at things to come.  When finished, Tahoe will also display all of the sensor values with sensor names and units.  Even the relay names will sync with Monterey!

There are a few issues at the moment that I will need to work out.  First (not really an issue) is that Tahoe isn't completed yet.  I still need to add the code that displays the sensor values (even the code for my awesome compass that I got the background and outer ring from the QFlightInstruments project).  Also, my goal is to make a seamless sync between Tahoe and Monterey.  When a value is adjusted in one, it is adjusted properly in the other and also sent to the ROV.  Currently, Tahoe just overwrites anything that Monterey does, and Monterey does not display the change in its GUI (unless you check the debug window's packet display).

There's still work left to do on Tahoe, and same with Monterey.  But!  Thankfully the beta release of Monterey is out and since it's release, there have already been 20 downloads!  I am still working on getting out the documentation for Monterey and, of course, I'm working on writing and Arduino firmware that will act as the ROV's firmware ("bottomside code") for ROV-suite.  And as always, feel free to write your own!

Thanks for stopping by!

Chris K