Software Shenanigans

Posted by qwindelzorf on March 12, 2013

So, some time ago it became apparent that this whole thing would need a fair bit of processing power behind it to actually do anything cool, like track and fire upon a target.  Various options were evaluated, and eventually it was decided that using an old Android phone would be a good idea.  It has a camera to see the target, a sound system to play amusing Portal sounds, and it has a reasonably powerful CPU to do the image processing and such. This all sounded grand.

First, I procured a IOIO board to allow the phone to control the turret's pan and tilt axes, along with firing the guns and turning on and off the targeting laser.  Again, an evening later, I had the IOIO running and talking via I2C to the controller that runs the robot's mechanical bits.

Next, I decided to jump right into what I expected to be the hardest part, I started working on target tracking. I started by looking at the OpenCV library, which has a convenient Android port. This seemed ideal, since I could do the major algorithm development on a computer with a camera, and then just convert that to run on Android.

Algorithm development went smoothly, and by the end of an evening, I had a working target tracker running on my laptop. This was just way too easy.

Then came the part where it all had to run at the same time. That's where everything fell apart.  Converting the OpenCV code from the laptop to an Android native library proved to be a huge pain. And even once that was done, it was really slow, achieving only 1 or 2 frames per second. That was further exacerbated by the fact that it leaked memory so profusely that the application would crash after just a few seconds. And that was without any sound subprocesses running, and without the IOIO stuff.

So, that's basically where that lies. I have given up in frustration for the moment, and gone back to working on various remaining hardware issues. I built a new rear knee out of solid wood to improve the strength of that leg. 

Other than that though, the project is pretty much dead for the foreseeable future. We got pretty close, but motivation is lacking. Here's where the project stands, and here is where it will probably remain.



We can rebuild it...

Posted by qwindelzorf on March 12, 2012

A while back I bought a house. Obviously, that entails moving.  Specifically, moving this beast of a machine. 

That was an adventure in its own right. But all the parts made the move and have been sitting on the floor in my shop (I have a shop!) for the last several months.  I've finally gotten around to the reassembly process.

Previously this whole thing was built atop a wooden table.  At the time of construction, that seemed like a great idea.  In retrospect, not so much.  I was confident that I could overbuild the wooden table to such an extent that it would withstand the ravages of an 80lb gantry slamming back and forth.  Over time, the table top began to warp and bend, and eventually started to slide down the legs.  Which was intriguing, given the number of screws and the amount of glue that were used to join the two.  Needless to say, all these failings drastically reduced the system's accuracy, in turn necessitating constant recalibration.  It was far from an ideal configuration.

So, when I moved, I elected to ditch the wooden table, and instead build up a steel "table" to replace it.  As designed, it was not really a "table" as such, since it was without a top, which is really kind of a defining characteristic of all tables.  The plan was to build something along these lines:


So, just after Thanksgiving I went to my local supplier and bought $700 worth of steel.  A few weeks later, I got a call telling me that my order had arrived, and I needed to come get it.  I arrive at their facility, and discover that they had ordered the steel in the full 25-foot lengths that it comes to them from the factory, rather than the 8-foot lengths I had been expecting.  So, after some creative engineering and entirely too many ratchet-straps, I had all the steel affixed to my truck and precariously rolling down the road to my house.  

I was unable to return to the project for several weeks, but in January, I and a friend got serious about completing this project.  So, we spent a saturday cutting all the steel in preparation for assembly.


After mutch cutting, and lots of sparks, and surprisingly few fires, this was the result.  All the parts (theoretically) required to build my table.


Then began the task of welding it all together.  Sounds simple enough...


... Except for one critical flaw.  This was all welded up with my little MIG welder.  The emphasis there should be on the word little. It runs off a normal 110v 15A circuit.  The steel here is 3/16 thick.  It just doesn't have the juice to put down a durable weld.  Immediately after that picture was taken, I flipped the frame to weld the other side, at which point the whole thing promptly fell apart.  I would be needing a bigger welder to make this work right.

Enter my father, who is a professional gas pipeline welder.  He has several welders just setting around.  And he was conveniently scheduled to come out for a visit at the end of January.  So, I called him up and he agreed to bring out a more powerful unit.

I don't have pictures of the rest of the welding.  We got wrapped up in the process and got the whole table structure built in a Saturday.  At that point, we patted ourselves on the back, my father went back home, and I took a couple weeks off this project.  

I came back around to this in late February, with intentions to paint the structure before reassembly.  So, I got a couple friends together one Saturday morning and we all went at it with brushes and some red Rustoleum.  We then left it to dry for a week.

This weekend, I and my compatriots began reassembling the gantry on th enew base.  Here are the results:


As it stands now, all three axes move and the system is operable.  The limit switches need to be reconnected, and the router needs to be installed, but it is almost ready to go.  Hopefully, next weekend, I can build a new, slightly less disreputable box to house the control electronics.  I also intend to put a swivel arm on one of the corners to hold the keyboard and monitor.  We'll see how those plans pan out.


Yet more delays

Posted by qwindelzorf on January 21, 2012

Owning your own home is a lot of work.  There are an endless number of things that come up and need work done.  Needless to say, this has cut into my time for crazy projects.

So, after the move, I decided that the wooden base for the CNC router was insufficient.  It had been slowly falling apart due to the weight and shock load it was continually subjected to.  So, I am building a new table from 2-inch steel box tube.  So, I got all the plans figured out, ordered the steel, got it home, cut and drilled everything, only to discover that my little Lincoln MIG welder is not up to the task of welding 3/16 mild steel.  

So, now I'm working on coming up with a new welder.

But, progress on the sentry has not been stalled in this time.  We have spent some time working on the electronics, and RedPesant has been figuring out the software for the Android phone that will be the robot's brain.  Initially, we were going to use Qualcomm's QCAR library to do the target recognition and tracking. But that seemed like overkill, as it also does alot of 3D rendering stuff we don't need.  Happily, OpenCV has been ported to the Android operating system. As of today, we have the OpenCV samples compiled and working.  RedPeasant also got the IOIO board talking to the custom controller we built for the pods. So, the phone can now control all the electronics in the robot.  He also got the sound clips out of the game assets, and onto the phone.  

All the individual parts of the software for the robot are done, now they have to all be tied together.  And we actually have to finish building the robot...

Here is where the physical chassis stands:


And again, but with the pods extended:



Posted by qwindelzorf on November 7, 2011

So, the project has been on hiatus for a few months. This was due to a number of factors that all coincided at the same time. 

RedPeasant ended up taking an extended trip, so he was unavailable to work on the robot for a couple of months.  Then, I bought a house, and had to move all my stuff. All of this together has meant that there has been virtually no progress on the robot in the last three months. Hopefully, that will be changing shortly.  I've gotten the shop at the new location set up, and we should be able to resume work within the next month or so.

This project is not dead, really!


Posted by RedPeasant on July 6, 2011

It's been a while since our last update. If it weren't for trivial things like work, we'd get a lot more done on this project. Since we last updated the build log, there has been sporadic work on the sentry. The last log ended with a shot of all the pieces. Now, we've been working on getting them all put together and made decent progress.

To start, we got the legs together. The knees were originally constructed with fiberglass pieces for all the curved surfaces with MDF as the flat side to give it some structure. We realized that this left us with nothing structural to attach the other leg parts to. We had decided we were going to fill the body with two part expanding foam to give the shell a strong backing, so we decided that we might as well do the knees while we were at it. We embedded a piece of angle aluminum into the foam connecting the bottom and top connections for the knee, then filled the whole thing with foam to hold everything in place.


This method ended up working well, so that finished off the legs until we start working on surface finish. Then we got started on the time consuming task of filling the body and pods with foam.

One of our other realizations about a month ago was that the fiberglass shell wasn't rigid enough. If we tried to sand it, we'd just end up cracking the paint as it deflected. We decided to pick up some two part expanding foam and fill the body and pods with it to give us a nice rigid backing that we can sand on. The net result is the following:


It oozed out at a couple seams, but overall it's a lot more rigid and because the foam is pretty airy, it doesn't add all that much weight. The above picture also shows off a couple other new features. The body is finally together. We bolted it together before foaming and glued the eye in place. Figuring out where to cut the body pieces to get it to match the eye was a bit of a pain, but I'm happy with the result. After filling the body, we moved on to the pods. All of these were done as a a series of small pours of foam. We discovered that when pouring into confined spaces with semi-rigid walls, that if we poured a little bit, it would expand into the open air, but if we poured a bunch in there, it would have to expand in all directions and cause bulges in the fiberglass. Here you can see several of the layers of foam pours in one of the pods:


It's ugly, but it will all be hidden anyway. While waiting for foam to set, we have also been working on the leg mounting system. We just took pipe couplers of the appropriate size, drilled holes into the structure of the body, and epoxied them in place. Here's an in-progress shot of the bottom of the body while we were doing the mounting:


Leg mounts

After all the epoxy set up, we just had to put the body on and get a shot of the thing standing on its own three legs:

It stands!

The back leg is hidden by the body in this picture. Up next on the agenda is finishing foaming the front and back of the body (we only did the top and bottom before), trimming the foam and putting the sheet of styrene on the inner surface of the pods, and a bunch of finish work. Once the styrene goes into the pods, they'll be mechanically complete.

Hopefully we'll have less time between updates from now on.

It's not really a robot till it has legs

Posted by qwindelzorf on May 22, 2011

So, we're back, and have resumed work on the robot.  Yesterday, we mostly did cleanup on the existing parts. We trimmed the edges of all the fiberglass parts and added alot more epoxy to the whole thing to further solidify the bonds between the MDF skeleton and the fiberglass shells.

Adventures in Airsoft

Posted by RedPeasant on April 30, 2011

When we last posted an update, we had the basic skeleton in both pods. Now we have the gun boxes fully enclosed and have all the mechanical stuff packaged inside them. Here's a shot of what the insides look like right now:


In the bottom left is the cut-up remains of an airsoft gun with a gravity feed hopper in the bottom right. The black box in the upper right is the controller for the stepper motor, which is the green cylinder mounted in the center. The big black thing sticking up out of the middle is the rack and support bar that the pod will travel on. The belt drive and pinion are hidden by the support bulkheads and the clamp. For reference, this is the left pod and the left side of the picture will be up when the pod is upright.

The airsoft guns we used were cheap mini MP-5 look-alikes. We did a little bit of creative remodeling in order to get them small enough to fit in the pods and so that we can control them with the Netduino.


Also, I am proud to present the first event of this project worthy of video. Here's us test firing the airsoft gun in the right pod:

As always, there are more pictures over in my Flickr stream.


Posted by qwindelzorf on April 24, 2011

Today we cut out all the parts for the skeleton of the robot.  All of the internal supports for the pod and body have now been cut out.

Body Rib

The Last of the Fiberglass

Posted by qwindelzorf on April 21, 2011

We are finally done with the fiberglass layup!  Horray!

Even More Fiberglass

Posted by qwindelzorf on April 18, 2011

Our second attempt at the body mold proved much more successfull than the first. This was primarily due to the fact that we split each layer into 7 different pieces of fiberglass, put down over the course of 4 batches of resin.  Then, we did all that again for a second layer of fiberglass.