I still don't have a name for my AVC Robot. Got any ideas? Post them in the comments!
With the gyro, GPS, and SD card integrated with the Arduino, all the electronics stuck to a platform bolted to the RC chassis, and with code to grab the data and log it, all that was left was to strap down the GPS and take the truck out for a spin.
And that's just what I did. Even though it was 10:00pm...
You can see the GPS strapped to the back, the SD card up front, and the Arduino in the middle. I strapped the cheap LED flashlight I used in the picture above onto the front of the truck so I could see it in the dark.
I'm happy to report that I successfully collected logs that evening! I repeated the experiment the following day around noon. I wrote some simple perl scripts to parse the CSV files off of the robot's MicroSD card.
Here's the track plot from the next day (via GPS Visualizer and Google Earth). The GPS was reporting 15-25 feet accuracy. I have to say, the tracks are actually fairly close to reality.
But not close enough that the robot can rely on the GPS alone. You can see below that the tracks generated during bad GPS fixes are too far off for the kind of precision navigation required to circumnavigate the Sparkfun building.
After this real world experience, it's even more abundantly clear to me why the AVC was hard for so many robots.
Incidentally, the GPS only updates at a 2 Hz rate instead of a more normal 1Hz rate. That's because it takes more than one second to send all the NMEA-0183 strings at 4800 baud. I can't change the baud rate, either.
Meanwhile, here's a plot of the speed as reported by the GPS during one of the daytime runs. If it's to be believed, the little RC truck can do about 18mph on a fresh battery. Cool!
The plot below shows mph on the y-axis and milliseconds on the X axis.
Here's the heading data from the GPS from one of the four daytime runs. Looks about right: I did a number of north-south runs, with quick turns in between. Note that the two outliers near 360 degrees are only a few degrees off from their neighboring points in the 0-10 degree range.
This is a plot of gyro data from another of the day runs. Wow. That is really noisy. I doubt I can use that kind of data for precision navigation!
The x axis plots time in seconds. The y axis is the gyro data, captured every 20-30ms and converted to degrees per second in this plot. The data looks like a mess.
You can see the truck was pointing in one, static direction up until about 6 seconds, then the heading rate change bounced all over the place, probably at the same time I started accelerating the vehicle.
Is the noise caused by mechanical vibration? Electromagnetic noise? Both? Something else?
Yup, it's another cliffhanger! You'll have to tune in next time to find out.