Autonomous Vehicle - Part 5 - Race Day

Spent a fantastic weekend in Boulder for the 2nd annual Sparkfun Autonomous Vehicle Competition 2010. We went to the 2009 AVC and had a blast, but this year we entered a vehicle and saw a whole new dimension of the event through a competitor’s perspective. We were “Team Buzzcut” and my wife named our vehicle “Roscoe”.
DSCF5057
“Roscoe” - the ESawdust Team Buzzcut autonomous vehicle

We came in 6th for ground vehicles out of 13 ground vehicle teams which actually started the race. Numerous teams dropped out at the last minute as they were debugging right up to the first heat - there were 30 entrants including ground vehicles and UAVs.

Think of the Sparkfun AVC as the DARPA Grand Challenge on a mini (affordable) scale. Sparkfun AVC has two categories, ground vehicles and UAVs.  I have to say the UAVs stole the show this year with some picture perfect autonomous landings and one even performed a vertical autonomous takeoff with some autonomous aerobatics.   It's really quite a spectacle for the geek-minded.

There were vehicles built on all kinds of physical platforms including a beer cooler, an electric wheelchair, kiddy cars, and some truly dangerous looking stuff that had no name and probably should have been in battle-bots instead.   There was one team who entered but for some reason couldn't come, but they had built their autonomous vehicle based on a riding lawn mower. That would have been a hoot to see - too bad they couldn’t come.

Teams came from all over, including Great Britain.  The best UAV team was from the University of Arizona engineering school...they were simply awesome but all the UAV teams were really fantastic.

My son, Nakoa, helped me out with Roscoe and this is a shot of Nakoa taken by my friend, Oleg Mazurov (circuitsathome.com), on race day. Nakoa’s setting the vehicle down on the starting line for heat #2:
cox01
Here’s another shot taken by Oleg of the vehicle, Roscoe, just after launch:
cox02
We were on the standby list of competitors until after the first of April as some teams couldn’t produce the requisite video showing their vehicle in autonomous motion or dropped out for other reasons. So, fortunately, we got moved up and into the competition but rather a late start for serious development - especially for the navigation code.

I’ve been writing this series on autonomous cars and even a week before the competition thought we’d be going with an 1/18 scale R/C car but changed horses mid-stream and it’s been a frenetic pace to try to get everything running for the competition - not much blogging about it, just heads down trying to get it done.

The horse we changed to was a 1/10th scale Losi Rock Crawler (model “Night Crawler”). The reasons were several-fold. 1) the 1/18th scale only had about a 1/4” of clearance once I had everything installed on it. 2) even the slowest speed I could make the car go was too fast for getting things debugged. We were so close to the event I didn’t have time to mod the car, so I looked for a naturally low-geared vehicle and thought about the crawler. It was the fast way to a robust mechanical platform for the race and had the added benefit of handling some curbs.

I had to move the autonomous electronics platform from the Team Associated car to the Rock Crawler. Found out first thing that the Losi signals for forward and backward were reverse from the Team Associated. It was an easy fix in my firmware, and after that it wasn’t long before I had the new vehicle moving.

Ours was about the only vehicle that didn't have wires and poles poking out of it like a porcupine - turned out to be a good thing because the 3rd heat was ran in the rain so we had a good lid. All the firmware was written in C.  Was up late every night last week trying to cram it all together...felt like a senior design project in engineering school.

Here's a shot of me in the team pit area inside Sparkfun:
DSCF5073
The vehicle communicates diagnostic data and also takes the start and kill commands from the MacBook via an XBee Pro 900. I wasn’t sure if I was going to see interference from other XBee users and had the system live for about 45 minutes before the start of the race when I saw my first evidence of someone on my channel. I quickly reprogrammed the XBee radios for a different channel and did not see any further interference.

Here’s a shot of the general pit area inside Sparkfun before it got completely filled up:
DSCF5071
Our second heat on the 2nd leg, Roscoe headed for a curb, climbed the curb with its front right, then back right wheel and drove half the length of the building with two wheels on the asphalt and two wheels on the curb.   The second milestone was at the end of the drive along this curb, so I thought maybe he'd gotten lucky and would ride the rail all the way to the 2nd checkpoint. Here’s a video of Roscoe riding the curb until he dumped on his lid:



The electronics sat on top of the aluminum cage that houses the motor and transmission.  Not sure if you can see it in this picture, but I put a piece of black non-conductive foam layered between the board and the battery.  Then, on each corner of the board I attached a spring to the cage.  So, the board could move around, but was pretty secure.  
DSCF5066
(I only noticed later after taking this picture the “Fresh Step” in the background. Thought it actually fit this picture pretty well :-)
The picture below you can make out the springs that fastened the electronics to the metal cage.
DSCF5069DSCF5053
Because the board added extra height to the chassis, we punched new holes in the body to lift the body above and protect the electronics.  So, when the vehicle rolls, the electronics aren't touched.  You can see the cotter pins in the body in the new holes with the old holes about an inch above them.
DSCF5056DSCF5055
DSCF5049
I think he looked pretty handsome on race day - one of the few bots that didn’t look like Jetson’s Rosie: - We were not bristling with sensors (to a fault - we only had GPS.)
cox02
I spent at least two nights working on two different Sparkfun digital compass modules, but unless I mounted them very high, the motors perturbed them so much I couldn’t use them. I had all my navigation code written to use headings and GPS waypoints. The digital compass wasn’t accurate when it was attached so closely to the vehicle, the crawler goes slow enough that GPS heading isn’t accurate, and I simply ran out of time, so I ended up ripping all my heading based compass code out and going with a very simple steering algorithm.

Each leg of the journey had a different rule set for steering. It more or less worked but it was 1am of the morning of the competition and I ran out of gas trying to refine it further. I was in my brother’s garage near Sparkfun the night before doing mission after mission refining an algorithm based on relatively inaccurate GPS data.

I’ll go into the steering algorithm in a different blog post as well as present code for communicating with at least two of the Sparkfun digital compass modules.

It was a blast - stressful fun, actually - to come up with something that wouldn’t flop in front of a couple hundred spectators.

We’ll definitely be back next year - wiser, smarter, and possibly more Rosie-looking.

Team Buzzcut Rosoe the Rock Crawler on Heat #1:

Heat #2

Heat #3


Landon Cox
www.ESawdust.com

Other articles in this series:
Building Bots with Kids
Autonomous R/C Car - Part 1 - Reverse Engineering Signals
Autonomous R/C Car - Part 2 - Taking Control
Autonomous R/C Car - Part 3 - GPS
Autonomous Vehicle - Part 4 - Mechanical, Firmware

asdfasdf