Showing posts with label rov. Show all posts
Showing posts with label rov. Show all posts

Sunday, July 13, 2014

Monterey 4.0 Feature Preview: ROV Configuration File

Time permitting, I'm planning on posting little blog entries about each of Monterey's new major features.  Since Monterey 4.0 is still in progress, any of these features may change before the final release.

ROV Configuration File
A problem with Monterey 3.0 and earlier is that in order to customize the ROV configuration, you had to re-compile Monterey from source.  Well, that is a ridiculous requirement for such a common operation.  With Monterey 4.0 and on you will be able to use a JSON file to configure your ROV.

rov.json configuration file
The configuration file is located in the same folder as Monterey, although default settings can be loaded if the config file cannot be found.  Because it is a simple JSON file, it is easy for humans to read and edit it, so there is no configuration application.

Relays
With the relay JSON objects, you can specify a name that will be used in the UI.

Servos
With the servo JSON objects, you can specify a name, minimum value, maximum value, and a default (starting) value.

Sensors
With the sensor JSON objects, you can specify the name of the sensor and the units.

Motor layout
This is where you specify if your ROV is a vector or a tank ROV.

Max depth
This is where you specify the max depth of your ROV.  The units for this measurement are the same units for your depth sensor.

The UI is automatically configured to display the right amount of buttons, sliders and sensor displays based on your config file.  Also, the received UDP packet format is based on your config file.  The order that Monterey expects the sensor values to be in is specified in the order of the sensor JSON objects (in this case, Monterey would expect to get depth, voltage, current and heading in that order).  Monterey automatically adds any needed values to the sent packet (motors, relays and then servos, in that order).

Certain UI elements, like the depth and heading tickers, are only updated from their respective sensors.  The look for sensors labeled depth and heading, respectively.  If you don't have those sensors in your ROV config file, the UI will still display the widgets but they won't update with useful information.

Thanks for stopping by!

Chris

Friday, June 20, 2014

First update in a LONG time (Spoiler: ROV-Suite updates)

Hey!  It's been a LONG time since my last post (too long for my taste), but I've been pretty busy.  I finished up my freshman year of college well.  I had a great time!  I've also learned a lot about programming and CS in general since the last time I worked on one of my projects so the quality of my work should be increasing.

For this summer, I'm interning at a large software development company in NYC.  I just moved in recently but I've been having a great time so far!  It's very cool to live in a big city and the company's work seems really interesting.

I've also been planning improvements, features and bug fixes for Monterey for months now.  I didn't have time while in school (and I barely have time now that I'm working from 9-5), but I'm trying to get some updates for Monterey pushed out as soon as possible.  The biggest change that I'm currently working on is allowing people to configure their ROV from a simple JSON file and having Monterey's UI and networking code take care of the rest.  See here for more information.

Another big improvement for Monterey that I have planned for this summer is unit testing.  Yes, one of my big goals is get Monterey set up with a unit testing framework.  More on that later!

Thanks,

Chris

Friday, January 31, 2014

Monterey v3.0 Video Streaming Fix

When I updated the Windows release for Monterey recently I forgot to add the image format plugins required by the web browser to see the video feed from the Raspberry Pi.  I have since updated the release on Github which you can grab here.  I apologize for the error!  Monterey would start up just fine without the plugins but it would display a question mark instead of an image on any web page shown (i.e. the RPi video feed webpage).

Friday, January 24, 2014

Monterey 3.0.0 - Windows Executable Released!

Hey!  It's been a while since I last wrote an article.  I've been kept pretty busy with school work (2 CS classes, a math class, physics and a job on the side).  Anyway, I received some incredibly nice emails and PMs the past few days from some users from the Homebuilt ROV Forums thanking me for working on Monterey and releasing it for free.  They had some feedback for making Monterey easier to use, and I've taken their feedback to heart.  The most pressing issue was that there wasn't a compiled version of Monterey for Windows for new users to download (Windows is by far the largest target audience according to my Sourceforge download stats).  It has been months since I last looked into fixing the deployment issue that Monterey faced with the switch from Qt 4.X to Qt 5.1.  I sat down tonight after finishing up some math homework and tried getting Monterey to work with the help of QuantumCD.  Here's what happened.

(Quick note: Since I did not have access to another Windows machine, I would rename my QTDIR so that any applications trying to reference it would not be able to find it.)

I tried getting some Hello World Qt apps to "deploy on another Windows machine."  I got that working and QuantumCD verified that it worked on his system, too.  Then, I tried Monterey.  Monterey ran just fine before I renamed my QTDIR.  However after renaming it, Monterey would fail to launch and even fail to display any warning or crash dialogs. That meant that Montery was trying to load up something from my QTDIR.  So I went through and copied mingw48_32/bin into Monterey's directory.  Then changed my QTDIR... and crash.  So that's obviously not all that I have to do.  I kept experimenting, but this time, instead of changing my QTDIR's name, I would rename subfolders in it until Monterey would crash, signifying that Monterey needed something in that directory.

After about 10 minutes of this, I figured out the one folder that Monterey needed that I had never copied over to Monterey's directory before (and NO online tutorials or forum posts said to copy this over). I figured out that QTDIR/mingw48_32/qml/QtQuick.2 was needed for Monterey to run.  After copying that directory into Monterey's directory, I figured out that qtquick2plugin.dll and qmldir were both required. Bam, deployment problem solved!

RootDir
-platforms
    -qwindows.dll
    -qminimal.dll
-QtQuick.2
    -qmldir
    -qtquick2plugin.dll
-icudt51.dll
-icuin51.dll
-icuuc51.dll
-libgcc_s_dw2-1.dll
-libstdc++-6.dll
-libwinpthread-1.dll
-Monterey.exe
-Qt5Core.dll
-Qt5Gui.dll
-Qt5Network.dll
-Qt5OpenGL.dll
-Qt5PrintSupport.dll
-Qt5Qml.dll
-Qt5Quick.dll
-Qt5Sensors.dll
-Qt5Sql.dll
-Qt5V8.dll
-Qt5WebKit.dll
-Qt5WebKitWidgets.dll
-Qt5Widgets.dll
-SDL.dll
-sdl-config

I'm happy to have finally fixed that issue!  Now I feel as though work on Monterey can continue this summer.  I won't promise anything before then because I'm kept pretty busy here.  I'm hoping to score a software development internship for this summer, which would be incredibly fun and educational.  The UC system is looking at having us start even later than we already do, which means that I'd have almost a month after my internship to work on Monterey.

When I do work on Monterey this summer I want to focus first on making it more polished, and then adding features.  I want to make it easier to customize (probably using config files) and QuantumCD and I have been talking about making it themeable.  Stay tuned for more information!

You can grab Monterey 3.0.0 here.

Thanks for stopping by!

Chris Konstad

Monday, August 19, 2013

Monterey 3.0 Status Report

Good news!  Monterey is coming along nicely!  It is due in 13 days and it looks like we'll be able to make the release date.  There are still a few minor bugs left, but those are being worked on and progress is being made quickly.  The last "feature" that we have left to implement is the addition of a few more graphs along the top of the video display.  Then, Monterey should be ready to ship!  The bottomside code might experience some updates/changes to accommodate any changes in hardware , but Monterey itself will be ready.  And keep in mind, there will be periodic updates to Monterey after the 3.0 release that address any additional bugs and add features that were not able to be packaged with this release. 

I am incredibly excited about this release of Monterey as it will be a HUGE improvement over every previous version.  The addition of video capabilities is a key part of that!  

Thanks for stopping by!

Chris

Friday, August 16, 2013

Monterey 3.0 Status Report

This is a screenshot of the most recent version of ROV-Suite's Monterey ROV control application.  There is now a working HUD and a newer, nicer theme thanks to QuantumCD's Dark Fusion palette.  As of right now, there are 12 open issues between Monterey 3.0 beta and Monterey 3.0 stable, but they should all be fairly easy to take care of.  A few of theme are graphical changes (removing those LEDs and replacing them with nicer status indicators) and some of them fix bugs.  Check here for more information.

Now I also have an important announcement to make.  Monterey has been shifted from my personal Github account to an ROV-Suite organization account.  You can find all repos and releases relating to Monterey at http://github.com/rovsuite.  I really do apologize for moving ROV-Suite around so much, but I do think that it's for the better.  I also wanted to make this change before releasing 3.0, which is a huge milestone for Monterey.

Please note that in it's current state, Monterey does not compile on Linux or run on OSX.  Both of those bugs are being looked at (I have already fixed the Linux issue but I still need to push it) and will be addressed soon.  Monterey will NOT be a Windows-exclusive.

Thanks for stopping by and I'll post some more information regarding changes to Monterey soon!

Chris Konstad

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

Monday, June 24, 2013

MATE International ROV Competition 2013

The past week, I was in Tacoma, Washington at the MATE International ROV Competition 2013.  My team, Jesuit Robotics, took first place in the collegiate level ("Explorer" class)!  There were many awesome teams there with fantastic ROVs!

I'd like to take a moment to thank the team at MATE for putting on this incredible competition.  Through my time competing in the MATE ROV competition, I have learned much about machining, 3D CAD, electronics and software.  In fact, MATE is what introduced me to programming.  In college, I plan to do some research into ROV control systems, and I'd love to take a trip on a real research vessel.


The two pictures above are of the Bauman Moscow State Technical University's ROV control system.  That TV built into the TCU (see the upper picture) is a 3D TV with a view of the ROV's fully articulated arm.  Using an XBox360 controller to control the arm was easy, precise and intuitive thanks to the 3D vision!  Depth of field when operating underwater with a normal 2D camera system is non-existent.  I found the 3D vision system to be really useful!  Also, they mounted a touchscreen monitor between their joysticks to act as an instrument panel.  I think they have one of the coolest control systems at the MATE competition.  I would like to implement some of their features in my own software along with some other ideas I've been thinking of adding (an IMU for total position hold, for example).

Thank you, MATE, for putting on such an awesome competition!  Also, I'd like to thank the mentors of my robotics team, especially my dad, for putting so much time and effort into helping teach high school students about everything from NTSC video signals and composites to CNC mills and User Datagram Protocol packets.  Everyone involved in the MATE competition (administrators, judges and mentors) is helping the next generation of engineers learn how to be professional engineers in a fun and exciting field.  To everyone involved, thank you!

Thanks for stopping by,

Chris Konstad

Tuesday, March 5, 2013

Important: Fixed Monterey 2.0.3Beta Download for Windows

So I found out over the weekend that my zip archive on SourceForge for Monterey was lacking one DLL that caused Monterey to not function.  I just fixed the issue and uploaded a new zip.  You can find it here.  I feel really embarrassed for letting such a glaring issue slide by for so many months.  Sorry if I caused any problems!

I'm thinking about shifting rov-suite from SourceForge to Github because I like Github's social features and Github is just generally more polished.  If I do that, the executable binaries will be hosted elsewhere, maybe in the public folder of my DropBox, and linked to the Github page.

Thanks for stopping by,

Chris

Wednesday, July 18, 2012

Raspberry Pi

I'm pretty excited!  I finally got my Raspberry Pi in the mail today!  I played with one at a friend's house, and so I'm pretty excited to get started with this one!  I have a few interesting projects in mind....


  • Turn my TV into a weather, news, information, etc display
  • Raspberry Pi based ROV...
I will admit, I'm most excited about the second option.  It'll be interesting working with Nick to make some custom circuit boards that can expand on the Raspberry Pi's GPIO (and buffer it AND bring it up to 5v from 3.3V).  It'd be nice to be able to write both the topside and the bottomside in Qt as well.  As much as I love the Arduino, Qt's language is much nicer and the whole Qt environment is much easier to program in (once you've gotten used to a full-fledged IDE, that is).  One cool idea that I've had as far as Raspberry Pi based ROVs go is a debug GUI.  Think about it.  You can have your ROV and give it a composite video link in a easily accessed spot.  When you need to check on statuses of different systems of your ROV, check on it's configuration or change it's configuration, you can just fire up the GUI and change it from the ROV.  I personally think that'd be a pretty awesome feature.  I'm just going to have to learn more about Linux now than I ever have before...

In other news, I'm finally going to get around exposing the joystick buttons and hats in Monterey.  I want you to be able to map them to the different relays and to the servos.  Sometime while I'm doing that I want to continue trying to port Monterey over to Android.  I think it would be totally awesome to be able to drive your ROV from an Android tablet.  After I get that done, I need to talk to Nick about getting an IP camera set up so that I can start writing and testing a more pilot-oriented GUI with a nice overlay (or something like that).  

Thanks!

Chris Konstad

Monday, July 16, 2012

ROV-Suite: Bottomside 1.1.0 Released


Great news!  I just uploaded the first revision of ROV-Suite's bottomside code to the repo and to the downloads page.  This new version supports a depth sensor, a voltage sensor and a digital compass.  Please note that while the libraries have been used (my robotics team used those very libraries to get 3rd place in the MATE ROV competition) and tested, the entire setup has not been tested yet.  Since it is late here tonight, I'll do some bench top testing tomorrow.  

Here's the setup:
Compass (HMC6352) hooked up to the Arduino's A4 and A5 (I2C) pins.
Voltage sensor (Phidgets P1135) hooked up to the Arduino's A1 analog input pin
Depth sensor* (Phidgets P1115) hooked up to the Arduino's A2 analog input pin

Now the depth sensor's setup is a little tricky at first, but it is really robust in practice.  In fact, in our testing, we found that the library was accurate to within a centimeter!  Since the P1115 is really just an air pressure sensor, you must use the water to compress a volume of air that must then compress the pressure sensor.




The flexible diaphragm is pushed inwards (towards the P1115) as the water pressure increases.  That causes the volume of air inside the sealed container to decrease, and since the container is sealed, the pressure then increases.  From there, the P1115 reads the absolute air pressure inside the sealed container and converts that to a depth reading.  I will admit, this is not my design.  A mentor on the team, Jay Isaacs, came up with it.  The only downfall of this setup is the maximum depth of the pressure sensor (as it can only have 36 PSI atmospheric on it, only 21.3 PSI of water pressure can be applied before it exceeds it's maximum pressure rating).  According to some calculations with the help of Engineering Tool Box, it's maximum depth is 49.2 feet of water.

I hope to test out this code more fully soon so that I can catch any bugs it's hiding.

Thanks for stopping by!

Chris Konstad

Thursday, June 28, 2012

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!

Thanks!

Chris K

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

Monday, June 25, 2012

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 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 sourceforge.net/p/rov-suite, 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.

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

Tuesday, May 29, 2012

ROV-suite: Monterey 2.0.0 Beta

Great news!  The beta release of Monterey version 2.0.0 is finally here!  This is the moment that many of you have waiting for since the end of 2011.  I have to say that because of the new features, better UI and cleaner code, the wait was well worth it!  Since I got this application ready earlier than expected, the bottomside code to compliment it and the documentation for both are going to be released sometime in the June and July time frame.  Since the source is available online on the repo, you can get all of the documentation you need from there (for the time being).  Also, feel free to compile it from source if I haven't uploaded a binary for your system by the time you read this!  I'll put the Windows binary up first (I'm in that OS at the moment) with the OSX binary soon following.  After that, I'll get around to putting up the Linux binary.  So far, I've only tested this in Windows and OSX (I haven't done much development work in Linux), so it might be a few days until I have the Linux binary up.

Also, I'm already coming up with more ideas to implement within ROV-suite.  For instance, how about using a wireless Xbox360 controller to pilot the ROV with an Android tablet application as your UI (due to joystick libraries Monterey would have be running on a laptop on the network)?  This could aid debugging and normal operations by increasing portability and flexibility.

But before I go off and start adding more features, I do want to put out some top-notch documentation and a complimentary bottomside firmware so that using an Arduino with Ethernet support (either Arduino Ethernet or an Arduino with a shield), you can have an operational ROV as quickly as possible!

Thanks for stopping by and expect more information (and posts) on ROV-suite soon!

Chris K

P.S.  I'm pretty tired tonight so this is kind of a brief post that doesn't go into too many details.  You can expect more technical details later.  Also... Happy 20th post!!!!!