Showing posts with label fyi. Show all posts
Showing posts with label fyi. Show all posts

Monday, August 26, 2013

Monterey 3.0 Crash on Windows

Just a quick warning that Monterey 3.0 is crashing on some Windows systems (win7 32bit AND 64bit) with a VC++ runtime error, which is weird because I compiled it with Mingw32 and I get no errors on my system.  I can, however, reproduce the error on another machine in my house.  I'm working with the person who found the bug to fix it and I'll post the fixed release as soon as I can.

Monterey was compiled with MinGW 4.8 32bit with Qt 5.1.0(mingw48_32) from the Qt SDK on Windows 7 64bit.

Sorry about this,

Chris

Tutorial: Adjustable UI with QSplitters


Monterey version 3.0 now has an adjustable UI!  Not only is the window itself able to be scaled, but now you can apportion the UI how you'd like.  If you want, you can make the graphs taller or shorter (even hide them), and you can adjust the widths of both side panels.  Upon closing, Monterey saves your window geometry so when you open it again, the UI is setup the way you like.

Here are the relevant pieces of code:
As you can see, it's all pretty simple and easy to do.  The default values are set using QSplitter::setStretchFactor(int index, int value), which uses the relative weight of each stretch factor to adjust the sizes.

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

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.

Wednesday, May 16, 2012

Update: QML, Monterey and Source Code Analyzer

I've been pretty busy lately working on a few things (other than school and AP exams, of course!).  Other than menial updates to Catalina (my robotics team's topside application), I've written plenty of C++ and QML code for my team's Android/Windows/OSX/Linux application for this year's MATE competition (someone else on the team is working on the iOS version).  I'd say that it's looking pretty sharp so far!  Here's a screenshot!



The iOS developer made that ROVotics logo and he also came up with the color scheme for our team, so I used them for the Android (and Windows/OSX/Linux) application.  I got that compass backdrop and outer ring from the QFlightInstruments project.  I made my own ROV image for the center of the compass.  On the right hand side of the application, there is an "About Us" button that switches the UI's state to the "about" QML state, which has instructions, a team photo, website URL and a scrollable text field that loads text from a plain text file to display.  Underneath the "About Us" button are some lights that change based on values sent from Catalina.  The communication light turns orange when ROVotics establishes communication with Catalina (and turns back to the current grey when the communication is lost).  The relay indicators are going to have real labels ("Lights" instead of "Relay0") when this application ships.  On the right, there is the mission timer which is updated by Catalina and turns orange when the time is up.  Underneath the mission timer is a "Vector Decoder" (creative name, huh?) that takes the motor values sent from Catalina and adds them up as vector values to show how the ROV will respond to the joystick input.  It's really handy for debugging incorrect motor code!  That little white bar between the compass and the vector decoder is the vertical thrust value indicator.  It simply shifts up and down depending on the applied vertical thrust.  Finally, on the far right is the depth indicator.  Catalina sends ROVotics the maximum depth of the pool as well as the ROV's current depth.  ROVotivs takes that value and calculates the depth of the ROV as a percentage of the maximum depth.  The orange bar then slides up and down to the correct percentage value, which gives the user a graphical representation of the depth.

The entire UI is scalable (although there is a minimum screen resolution), so it should work on everything from phones to tablets to laptops with varying screen resolutions.  Let me tell you... Making a UI that scales across that wide variety of screens with this many elements is a pain.  It's simple to do (just a little math), but it's still a pain to have to set all of the x, y, width, and height values for each widget added.

Overall, I've really enjoyed working with QML so far, so I do plan on writing more UI's with it.  As a bonus over normal QWidgets, QML forces me to have better form with programming because it makes it harder to store variable values in the UI.  I'm taking what I've learned from this and applying it to Monterey to make the code top notch.

Speaking of Monterey, it's coming along nicely so far!  I still have to add joystick support (with optional bilinear reading).  I'm going to avoid mapping buttons and hats right now because in my experience, it's easier just to reach over and tap a keyboard shortcut.  However, if people ask for certain joystick mappings, I'll add them.  I am still planning on hitting my June target date!


Finally, I found out about this really awesome Qt application called cppcheck which is a very useful opensource C++ source code analyzer.  It catches those mistakes that the compiler won't catch (like not assigning a default value to a variable).  I've already gone through much of my code with it and have used it to help me spot errors.

Thanks for stopping by!

Chris K

Tuesday, May 1, 2012

Git Client on Android

I like to make sure that my code is well backed up.  Also, since I am the head programmer of my robotics team, I like to keep track of the changes that my teammates make to their code no matter where I am.  Awhile ago, I downloaded the Android application called Terminal IDE just for fun. I never actually tried it out until a day ago.  To my surprise, when I typed in "git" the help text came up.  A few minutes later, after becoming root ("su"), I had made a directory on my sdcard and was proceeding to download my team's private repo over ssh from Sourceforge! I was pretty happy about that!

For those of you who want a full featured git client (and editor with nano and vim), check out Terminal IDE.  I mean, hey, it's free!

So what are you waiting for?

Chris K

P.S. It works best with the Hacker's Keyboard download from Google Play because that exposes the tab, ctrl, esc and arrow keys.