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: 2012 Sparkfun AVC 3rd Place Winner

See all images in the Gallery
Category: Rolling
Progress: Completed
Cost: 650.00
Time to Build: 2 years

The Sparkfun Autonomous Vehicle Contest (Sparkfun AVC) pits robots against each other in a timed race, circumnavigating the outside of the Sparkfun building in Boulder. The event features two classes: airplanes and ground vehicles.

I'd been itching to compete since we saw the contest in April of 2010 and I took the plunge and entered in 2011. By April I'd failed to pull together the sensor fusion software and the robot excelled only at crashing.

Finally in 2012, days before the event, everything came together and the robot was doing speed runs around the building time and again with incredible consistency.

The competition was another matter: the first and second heats the robot veered off and crashed due to jostling the starting ramp imparted on the gyro.

Finally dialing in a solution offered by a friend, Data Bus was back to its Thursday performance, ripping around the building in 37 seconds, earning a 3rd place victory.

The chassis is a budget-friendly, ECX Circuit equipped with a Tacon 3000Kv brushless motor and 4000mAH Gens Ace Lipo battery. Top speed is around 30mph. Suspension is tuned for the parking lot event with heavier shock oil, lower ride height, and stiffer springs. Custom Traxxas Anaconda street tires on 2.8" black chrome All Star wheels provide sufficent grip.

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

Heading is provided by an L3G4200D gyro on a Pololu MinIMU-9. A Venus638FLPX GPS provides additional heading data while dual wheel encoders with QRE1113 sensors and a custom SMT adapter board provide distance and speed measurements. 

The heading data is fused with a simple 1st order, two state Kalman Filter. The software compensates for GPS data lag, fusing historical gyro data then updating current heading and position information.The navigation system converts Google Earth waypoints to cartesian coordinates and manages waypoint heading error and waypoint switching.

The control system uses a PI controller for throttle and a simplified path following algorithm to correct heading errors. The sensor update, estimation, and control run on a 100Hz schedule, with estimation and sensor readings occuring every 10ms and control, GPS readings, and other activities occurring less often.

The software is open source:

mbed code
Data Bus Code Repository
Ranger Board Software
Analysis Software
Ground Control Software (such as it is...)

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 are available in accordance with the Open Source Hardware definition.

Eagle board and circuit files, etc.

Data is logged to a FAT-formatted microSD card. A configuration file is read at startup from the mbed's built in filesystem. Data is plotted with GPSVisualizer.com and a Perl script the processes data and launches gnuplot automatically, generating an HTML webpage with the featured plots.

More details about Data Bus


Videos: 
See video
See video
See video
See video

Comments

albertstone's picture

this is very in formative

this is very in formative post i like it very much. Seo Dubai

bot-thoughts's picture

Updated for the 2012 AVC

Updated for the 2012 AVC

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.