"In the world ye shall have tribulation: but be of good cheer; I have overcome the world." –John 16:33

San Pedro Garza Garcia

Category: Software Page 1 of 5

GRIME2 testing in Brisbane

The volunteer Hydrology work I do with University Nebraska-Lincoln is starting to solidify now that I no longer have a formal position at UNL. Last night a researcher in Brisbane, Australia met online to work out the use of the GRIME2 Command Line Interface (CLI) libraries for measurement of water level at what could be over 100 separate locations if we can demonstrate capability. Then today, I met online with a graduate student who we hope will be able to extend the libraries to handle much smaller calibration targets for the purpose of crowd-sourcing imagery and placing small calibration targets at the top of garden variety staff gauges. What is great about this is that these people are starting to adopt and extend the libraries without my involvement other than to provide guidance to get them going and to help them when they get stuck.

Original GaugeCam research

The first “product” we developed when the GaugeCam project started back in 2009 at NCSU was called GRIM. That stood for GaugeCam Remote Image Manager. The name did not evoke a sense of positivity, so in the spirit of G.R.O.S.S. from Calvin and Hobbes (i.e. Get Rid Of Slimy GirlS), we added Educational and changed the software name to GRIME. A MUCH better name for people mucking around in the mud. Today, Troy sent me some of the accuracy research results for the project. We (and she) think it is Kelly’s handwriting, but we are really not sure. At the top of the page you can see GRIM VERSION: 0.1j. I looked at the appendix of my dissertation that holds the release notes for all the GRIME software I wrote and it says that it was released on July 30, 2009. It is cool that we have a record that shows we were doing the research from that far back.

Projector and screen in the media room

We pretty much had to trash our exercise room to get it done, but Christian and I got our new projector installed, hooked up to a NUC (mini-computer) and pointed at the screen on the back wall. The screen was the biggest part of the project, but it was truly a marvel of engineering. The combination of the projector and the screen are nothing short of amazing in terms of image quality, especially with respect to how much we had to pay for the thing. This is actually going to be a great place to even do things like take video conferences.

Spinning GaugeCam back up as an Open Source project

My PhD adviser, Troy, and I have decided to spin back up the GaugeCam software as an open source software project with a commercial friendly license for the GRIME2 program. GRIME2 stands for GaugeCam Remote Image Manager (Educational) version 2. It is planned as kind of a Swiss army knife for hydrology research. So far, it only has functionality for measurement of water level using a target in the water, but the code to do machine learning with a variety of image and non-image features has been tested out and works well as represented by this paper.

Xubuntu 20.04

I am a big fan of Linux and, more particularly, a big fan of Xubuntu Linux. This is not a review of Xubuntu but an acknowledgement of my biennial struggle about when to replace the previous Long Term Support (LTS) release, Xubuntu 18.04 with the new release 20.04 that is scheduled to drop on April 23. I do not think I have made it more than half a day before I bite the bullet and make the change. This will be a pretty straightforward deal with the computer I use for my PhD work and our home computers, but my day job machine is another story. We have lots of heavy lifting going on and the setup of a development computer of any stripe (Linux, Windows, or apple) for the kind of work I am doing is often a challenge and generally takes at least half a day if I am really lucky. I could just install over the top of 18.04, but that kind of defeats the fun and I like the idea of completely cleaning out cruft every now and then, so I plan to wipe the hard drive. I will continue to run into stuff I forgot for a few more days or even weeks. This is true even though I write down all the stuff I need. New thing just keep popping up.

I am all Linux all the time at both work and home. For the first time ever, I have no reason to ever boot to Windows and we avoid allowing the plague known as apple into the house. The guys at work mostly use Ubuntu, but I really like Xubuntu, mostly because its use changes only minimally. I always look forward to a new release and this one is no exception.

Development tools need to be more capable than deployment tools

A couple of days ago, I broke down and bought a refurbished laptop for the bean sorting project. It surely seems to be a smoking good deal at $243.09 plus tax. I have been working to get the thing running on a Raspberry Pi and that works fine, but is way more hassle than we need during the development stage. It was necessary to hook up a keyboard, a mouse, a monitor, and the camera which, during the development stage, needs to be moved around a lot. It is just easier to do it on a laptop.

The other really big benefit is that, for the Raspberry Pi, I needed to do my development and testing on my home laptop, commit the code to a repository, switch the camera from the laptop to the Raspberry Pi and rebuild the code on the command on the RPi. That was a hassle. Now I will be able to put the entire development environment on the laptop and send it off to the mechanical designer (Gene). We can get all the lighting and controls developed with a full blown computer, then switch over to whatever cheap embedded computer we pick when everything is working. In the meantime, when I get some new code for Gene to consume, it will be way easier for him to build it and test it out with duplicate systems.

Life after Google

I got a book for Christian at Christmas time. While he was with us, I read the preface. I liked it so much, I bought for Kindle on my phone. The premise is that the business model represented by Google will be supplanted by a business model with block-chain money that is fundamentally more secure and monetarily stable. I love the way the author, George Gilder, writes and I believe he is write on this. This is not the first time he rightly called a sea change like this would represent.

One of the things that was particularly interesting about it was that the technology underlying the functionality that will cause the change is precisely what Christian has studied and researched for the last four years for his PhD program: Information Theory

Recovering from the holidays

Kelly sent this photo of her and Christian yesterday. They had a pretty good time in San Francisco over the New Year. More than anything, I think they are pretty tired. Lorena and I had a quiet day at home because I was still suffering from the residual of a cold. We DID have a big steak with a grilled onion, and a baked potato. Also, I spent most of the day working on the bean sorting project. Gene has made really big progress, so I need to get an application going so that he can have a way to see what the camera captures as the beans drop. That will allow him to develop the lighting. It is a little more complicated than just creating a capture application. We really need to find a way for me to upgrade is program (running on a Raspberry Pi) over the internet. I have done this before, so it will be great to get a little more experience at doing this sort of thing.

GaugeCam update

It has been a month or so since I have provided an update on the Retirement PhD/GaugeCam projects–they are kind of tied to each other. Everything is not complete (I think we are about halfway there), but everything that is complete has been up and running for over a month on two separate computers: 1) A Raspberry Pi and 2) a plain vanilla Ubuntu Server. The plan for over the holidays was to jump back in and see if I could get the project to the point where we could do a beta deployment, but that was not to happen–suffered a minor setback due to a cold. So, now I am talking to my buddy John H. down in Arizona (well, up actually, if we are talking altitude and not global direction). Hopefully, I can get him on the project, partially because he is a profoundly better embedded programmer than me and partially because it is a lot more fun to do this kind of thing with a friend. We are still on a long slow approach to entry into a PhD program, but it is still on track. We have added two new sets of functionality that will be required for the GaugeCam work and John will be perfect for that if he has time to do it.

Retirement PhD: GaugeCam web server

If you click on the image (or here), you can see a live version of the new GaugeCam web server. Right now, the program is running on a Raspberry Pi in our house. The reason it is live web page is so professors at University of Nebraska Lincoln and North Carolina State University can critique the design and view adjustments as new features are implemented. There is on-going scholarly work associated with this software. One refereed journal article has already been published (click here) and two more are in the works. Click here to see an article on the early phases of the work on the web site of a commercial camera company (full disclosure–I wrote the article). The goal is to accommodate a variety of sensors that produce 2d and 3d images as well as point measurements and hyper-spectral images. Hopefully, this effort will continue on into my retirement both as a way to contribute and maybe even earn a PhD for this and previous work on similar projects.

Retirement PhD: Progress on GaugeCam Web Server

First pass of GaugeCam Open Source Water Level Measurement Web Server

I am still not full convinced I can or should do this PhD thing, but all the pieces are still in motion. I expect I should be able to make a decision to move forward or not by late winter or sometime in the spring. In the meantime, I continue to make progress on the GaugeCam reboot as Open Source software (free as in liberty and free as in beer). The video speaks for itself. We hope to present a journal article and make the beta software available for download by spring. The video kind of speaks for itself

GaugeCam spinup


One positive outcome of this new effort to get a PhD in my retirement years is the impetus it will give to the spinning back up of the GaugeCam project as a wholly open source project (free as in freedom and free as in beer, as they say). I will be doing the heavy lifting on the software end of the project, taking over the server part and maintaining and improving the client parts. I have started on a very basic web server to show the graphs of the water height and point to our blog and downloads and documentation. I have a bit of a learning curve on this, but am on my way (see above).

Now I just have to figure out a way to include the bean inspection in all this.

New computers are not as fun anymore

Our friend, Bonnie, picked up the computer that arrived at our house when we were off visiting in Boston and Tempe last week. Lorena met with her for lunch yesterday to pick it up. It is a beautiful, brand new, Dell 5491 14″ touchscreen, i7 laptop with all the requisite amounts of memory and drive space to work on the relatively large images with which I work in my job. I love the computer, but it is a hassle to switch all the work I have been doing on the personal computer I used while I waited for my work computer.

First, I am reminded of the invasive nature of Windows (not to suggest Apple is any less so–they are probably even worse). I work in Linux, so I have to install that, but leave the computer dual-booted because I write cross-platform software. Then, I need to install Qt, OpenCV, Boost, and a ton of tools like Gimp, ImageJ, Filezilla, the Brave browser, Git, VirtualBox, etc, etc, etc. AND then I get to do it all again so all this stuff is available on both Windows and Linux. It will be really nice when it is complete, but it will be a full day of work to be up and running where I was with the previous computer.

I am not complaining TOO  much–it will be really nice when I am up and running and I really do not mind the kind of brain-dead work, but I lose a day and there is a lot to do.

Pixel 2 XL: Stitching images for a panorama


I thought this was very cool. I took a set of pictures with my new Pixel 2 XL cellphone to make a panorama of our roof as it was getting installed. The picture in the previous post is from the sequence. Before I got to stitch it together, the camera did it for me without me even asking. It also made an animation. I was pretty impressed with the quality of the image stitching, too.

Reengaging with water research

Over the last couple of days, I had a couple of long and interesting talks with my old friend, Troy, with whom I worked on the GaugeCam project when we lived in North Carolina. Troy is an Assistant Professor at University of Nebraska right now with lots of interesting research going on. We discussed the idea of me reengaging on some of his research again when I started to approach retirement. Well, retirement is rapidly approaching and it looks like the stars might be starting to align. This is still just wishful thinking, but we have talked about a few specific ideas and I even called and talked to my old Masters degree professor, Carroll Johnson long retired from University of Texas at El Paso. We have hope we can make something happen.  If this idea comes to fruition, I hope to be writing about it here on a semi-regular basis.

Upgrade with Ubuntu Bionic Beaver

The new Ubuntu operating system (Bionic Beaver 18.04 LTS) came out yesterday and I installed it today. So far it is great. I had been using Xubuntu up until now, but have decided I am going to try Ubuntu for awhile and then Linux Mint (Cinnamon) when it comes out for awhile before I decide on where to the settle for the next few years. I am really glad Ubuntu went back to Gnome and a way from Unity. That was the main reason I switched to Xubuntu in the first place–so I did not have to deal with Unity. My good buddy, Lyle W. has been raving about Mint for quite a few years now as have many others, so I think I need to give that a try.

A “for personal use” 3D/RGB camera

I bought a RealSense 3d/RGB camera today from Intel. I have wanted to get one for awhile and try it out, but now I have an actual reason. I am working with a friend from an old job on a small project and we are actually using them in my day job. The camera takes aligned 2d and 3d images. It is (relatively) cheap and has an SDK that will allow me to pull the images into some fun environments where I can use OpenCV and the PCL on them. Looking forward to it, but the sad part is they are so popular it is on backorder. I will have to be patient.

Programming as a second career

I enter image description herehave a good friend who has had a long and successful career in a very specific kind of Information Technology Services. He is retired from that now as the constant travel and search for new consulting opportunities are fairly onerous. He is older, but does not want to retire completely, so he wants to deviate his career to something that allows him to use his skills and experience in a way that will not require. In talking, he mentioned he has some ideas for niche software tools for which only someone with his level of experience would even know there is a need. But there is a big hole to fill for this because, although he has programmed and been in that world for decades, he has never been a production programmer himself.

He called me and asked me how I would go about it if I were him. Since he has many of the SQL skills he needs to do the job, he really only needs something to glue his idea together. I suggested he needed, as a mechanism to learn, to build a rough prototype of his product in Python. Then, he needed to go learn best practices and rewrite the thing a couple of times and have some experienced programmers do code reviews on what he is doing from the ground up based on the code reviews.

I told him a good language choice right now is Python. I hope this was all good advice. He has time on his hands and can take a year (or more) if needed to put this thing together. It sounds like my kind of project and I am a little envious. The combination of skills he has to do this are things I don’t have–he has domain skills and has identified a specific real need and he has the background to program in that domain with some intense preparation.

Beansorter: GUI and live video up and running

The browser based GUI for the bean sorting project is now up and running and being served from the Raspberry Pi. I only have one camera running right now because I only have one camera, but it does all the things that need to be done. There is a lot underneath the hood on this thing, so it should serve as a good base for  other embedded machine vision projects beside this one.

In terms of particulars, I am using a Flask (Python3)/uWSGI/nginx based program that runs as a service in the Raspberry Pi. Users access this service wirelessly (anywhere from the internet). The service passes these access requests to the C++/OpenCV based vision application which is also running as a service on the Raspberry Pi. Currently, we can snap images show “live” video, read the C++ vision log, and do other such tasks. We probably will use something other than a Raspberry Pi for the final product with a USB 3.0 port and the specific embedded resources we need, but the Raspberry Pi as been great for development and will do a great job for prototypes and demonstration work.

The reason I put the “live” of “live” video in scare quotes is that I made the design decision not to stream the video with gstreamer. In the end applications I will be processing 1 mega-pixel images at 20-30 frames per second which is beyond the bandwidth available for streaming at any reasonable rate. The purpose of the live video is for camera setup and to provide a little bit of a reality check at runtime by showing results for each 30th to 100th image as a reality check along with sort counts. There is no way we could stream the images at processing rates and we want to see something better than the degraded streamed image.

Bean sorter–First image from the Raspberry Pi oCam combo

You can say a lot of things about this image–it is blurry, it is too dark, it manifests the starry night problem, etc., etc. Still, it is our first image out of the bean sorter cam connected to a Raspberry Pi. I am going to do some infrastructure stuff to be able to pull stuff down easily from the embedded computer, but I will be moving on to work on the lights Gene sent me within a few days. Of course those days extend out quite a bit because I have a day job. Nevertheless, one has to take their satisfaction when they can get it and this is satisfaction any engineer might understand.

Page 1 of 5

Powered by WordPress & Theme by Anders Norén