Mini-Grand Challenge Autonomous Project

Alex Sojda (EE), Alan Meekins (CS), Josh Watts (CS), Jason Stanislawski (CE), Ziyan Zhou (CS), Jose Torres (EE), Chris Kaczmarek (SE).
Introduction
The RIT Robotics Club has competed, on March 31, 2007 in the Mini-Grand Challenge. We are extremely happy with the turn out, we won the innovation prize.
Our competing in this competition is part of our long-term goal to have a fully autonomous platform. We are competing in the Intelligent Ground Vehicle Competition, IGVC, on June 8-11, 2007.
High Level Design
In addition to having a robot that "works", we have always had the idea of modularity. We are doing all of our code in C++. We developed an abstraction layer to allow for different sensors to be replaced. This also allows work to be done concurrently. We split up into four groups: Mechanical, Electrical, Software, and Image Processing. Our plan is to transition the sensor systems that we are developing to the IGVC project.
Program and Hardware Design
Mechanical - The mechanical portion of this competition is centered around a plywood robot we affectionate refer to as Amos (pictured above). It consists of 2 motors driving the two from wheels, and two casters being pulled behind. Amos was built with the idea that a quick test platform was needed while the "official" robotic platform is fabricated, this platform will not be completed for this competition, and we will use Amos. Additional pictures of the robot can be found here.
Electrical:
- Main Computer - All systems are controlled by the main computer which is an ITX motherboard. The PC is running Debian GNU/Linux. Since we are concerned that a hard-drive will not be reliable on this robotic platform, we are going to boot from a USB flash drive.
- Motor Controller - The motor controller is an ATmega168 the communicates with the PC over a USB to serial link. Simple text commands are sent to the motor controller which creates victor-compatible signals to drive the motors. In addition to the custom-made motor controller, we also have a phidget servo controller. These two controllers can be interchanged seamlessly because of our modular architecture.
- GPS - We have a differential gps that communicates over RS-232 serial, NEMA protocol. GPSd is used to communicate with the GPS.
- LIDAR - A LIDAR is a laser rangefinder. We are using it to detect obstacles in our path. We are very excited to have this, as most of the teams competing in the Darpa Grand Challenge used one or more of the same kind of unit we are using.
- Compass - We are using an I2C controlled compass to get the heading of the robot. Our research has lead us to be suspicious of the reliability of the heading given by GPS when the robot is not moving. Our ITX motherboard has an i2c interface on it that we are using. The motherboard has 3.3V signals, and the compass has 5V signals, we have fabricated a level shifter. As a backup we also have code working on a USB-I2C development board.
Appendix I: Program Listing
For the source, please email Alex: [alexs _at_ mdrc.rit.edu]. We're happy to share code with other people, but would like to know more about what other people are doing [We also don't like people using our code to pass their classes!].
Appendix II: References/ Useful Sites
SoftwareDebian - The Universal Operating System.
GPSd - a service daemon that monitors one or more GPSs attached to a host computer.
Electrical/Embedded
VIA EPIA MII Mini-ITX Mainboard - This is the mainboard that we are using.
IFI Victor - These motor controllers are very useful, easy to interface to, and very resilient.
TTL serial to USB - Made by acroname.
Compass Module - The compass module that we used is the CMPS03, it communicates via the i2c bus.
USB i2c/IO dev. board - This board is used to interface the compass (or any other I2C device) to the PC using USB.
I2C Level Shifter App. Note - This allows our 5V compass to communicate with a 3.3V master.
AVR-libc Online User Manual - This makes using AVR microcontrollers very easy.
ATmega168 datasheet - We used this microprocessor to control our motors.
4-Motor PhidgetServo - This is the phidget servo controller that can be used to control the motors.
Other
Sponsors:
(C) 2002-2008 MDRC

