Welcome to RobotBox!

RobotBox is a community for robot builders to show off their projects. Add yours today.

Features of RobotBox

  • Showcase projects
  • Make new friends
  • Rate other's robots

Note: Facebook Connect temporarily disabled. Go here to login without it.

Data Bus: 2011 Sparkfun AVC

See all images in the Gallery
Category: Rolling
Progress: In Progress
Cost: 550.00
Time to Build: 5 months

The Sparkfun Autonomous Vehicle Contest (Sparkfun AVC) pits flying and rolling robots against each other in a timed race around the Sparkfun building in Boulder.

I'd been itching to compete since we saw the contest in April of 2010 and I took the plunge on a budget-friendly, reasonably swift RC truck as the chassis: an ElectrixRC Circuit.

The robot's brain is an NXP mbed, a 32-bit ARM Cortex M3 on a DIP-40 board with many features and a lot of power, running at 96MHz.

Sensors include an ADXRS610 300°/sec rate gyro, Honeywell HMC6352 two-axis compass, real wheel encoders, and two GPS modules (I've yet to decide which to stick with... or if I want to use two!): a MediaTek-based Locosys LS20031 and a Sirf Star III-based Pharos iGPS-500.

The rate gyro is attached to a 12-bit National Semiconductor ADC128S102 8-channel analog to digital converter communicating via SPI to the mbed. The compass communicates over I2C, while both GPS are serial, as expected.

The robot features several custom circuit boards I created from design to final assembly including both through hole and SMD components. All circuit designs, board layouts, software, and engineering documentation will be made available in accordance with the Open Hardware definition.

Data is logged to the mbed's built in filesystem. Data is being plotted with GPSVisualizer.com and a Perl script the processes data and launches gnuplot automatically, generating an HTML webpage with the featured plots.

The RC truck chassis features a 20T 550 motor, Traxxas XL-5 ESC, 6-cell 3600mAH NiMH battery pack and has a top speed of about 18 mph. The truck is tuned for the parking lot event with custom Traxxas Anaconda street tires on 2.8" black chrome All Star wheels and upgraded ElectrixRC 'stiff' springs.

Software is still in development; autonomous operation is yet to be implemented. GPS data is captured. Waypoints are configurable via text file on the mbed filesystem. The software calculates bearing and distance to waypoint using the haversine algorithm, suited to shorter distances. Compass readings are corrected for declination specified in a text configuration file. Sensor filtering and fusion is in the works, most likely using a Kalman filter to estimate heading, position, and velocity based on sensor inputs, supplemented by GPS position and possibly heading/speed data.

As the 2011 AVC now features obstacles as well as other vehicles on the track, obstacle avoidance is going to be important!  My plans are rather poorly formed at the moment. I'm considering the use of long range (5m) sonar and Sharp infrared sensors for forward detection, and shorter range sharp IR sensors for sideways curb and vehicle detection. Though unlikely, if time permits I'll take a crack at machine vision approaches for long range obstacle detection, which might permit the robot to safely run at higher speeds.


Videos: 
See video
See video

Comments

bot-thoughts's picture

Been very busy on the robot.

Been very busy on the robot. I've updated the page to reflect the robot's current state.  I've switched over to mbed, with all the custom boards built and populated. GPS module(s) installed and tested, gyro, compass have been added. Just added wheel encoders this evening. The hard part is still left: the code to estimate vehicle state (position, velocity, heading, etc) and the code to proportionally correct heading (steer) and accelerate/brake/decelerate as needed for cornering, etc., not to mention the very hardest part: obstacle avoidance!

bot-thoughts's picture

Scratch the phone idea.  I'll

Scratch the phone idea.  I'll be using individual sensor boards: 1-axis gyro, accelerometer board, GPS, interfaced to a microcontroller.

For now, Arduino but I'll soon be migrating to an mbed which features an ARM Cortex M3 with lots of peripherals, memory, and speed for the money.

I've mounted the prototype electronics onto the RC chassis along with an eTrex Legend GPS (for testing purposes).

I'm now logging gyro and gps data to an microSD card which is really easy to interface to an Arduino; it uses SPI and there are FAT filesystem libraries readily available.

Did some late nite data gathering after getting all of this together...

Now it's a matter of wrapping my thick head around Kalman filtering (or some other algorithm) so I can fuse sensor data and get this truck to navigate itself somewhere.