Skip to content
bobulisk edited this page Oct 11, 2012 · 8 revisions

Welcome to the GPS-Guided-Rover wiki!

The following is the contents of my notebook kept diligently throughout the project.

Bill of Materials:

<title>Sheet1</title><style>html {overflow:visible};</style><style>.tblGenFixed td {padding:0 3px;overflow:hidden;white-space:normal;letter-spacing:0;word-spacing:0;background-color:#fff;z-index:1;border-top:0px none;border-left:0px none;border-bottom:1px solid #CCC;border-right:1px solid #CCC;} .dn {display:none} .tblGenFixed td.s0 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-top:1px solid #CCC;border-right:;border-bottom:;border-left:1px solid #CCC;} .tblGenFixed td.s2 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-right:;border-bottom:;border-left:1px solid #CCC;} .tblGenFixed td.s1 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-top:1px solid #CCC;border-right:;border-bottom:;} .tblGenFixed td.s9 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:right;vertical-align:bottom;direction:Context;white-space:normal;overflow:hidden;border-right:;border-bottom:;border-left:1px solid #CCC;} .tblGenFixed td.s7 {background-color:#ffff00;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-right:;border-bottom:;} .tblGenFixed td.s8 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:Context;white-space:normal;overflow:hidden;border-right:;border-bottom:;} .tblGenFixed td.s5 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-right:;border-bottom:;border-left:1px solid #CCC;} .tblGenFixed td.s6 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;text-decoration:none;vertical-align:bottom;direction:Context;white-space:normal;overflow:hidden;border-right:;border-bottom:;border-left:1px solid #CCC;} .tblGenFixed td.s3 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:right;vertical-align:bottom;direction:Context;white-space:normal;overflow:hidden;border-right:;border-bottom:;} .tblGenFixed td.s4 {background-color:white;font-family:arial,sans,sans-serif;font-size:100.0%;font-weight:normal;font-style:normal;color:#000000;text-decoration:none;text-align:left;vertical-align:bottom;direction:auto-ltr;white-space:normal;overflow:hidden;border-right:;border-bottom:;} </style>

.

Part name Part # Quantity Price Total URL Supplier

.

Pololu Dual VNH5019 Motor Driver Shield for Arduino 2502 1 59.95 59.95 http://www.pololu.com/catalog/product/2502 Pololu

.

Pololu Wheel 90x10mm Pair - Black 1435 2 9.95 19.9 http://www.pololu.com/catalog/product/1435 Pololu

.

Pololu 37D mm Metal Gearmotor Bracket Pair 1084 1 7.95 7.95 http://www.pololu.com/catalog/product/1084 Pololu

.

29:1 Metal Gearmotor 37Dx52L mm 1443 2 24.95 49.9 http://www.pololu.com/catalog/product/1103 Pololu

.

Pololu Universal Aluminum Mounting Hub for 6mm Shaft Pair, 4-40 Holes 1083 1 7.95 15.9 http://www.pololu.com/catalog/product/1083 Pololu

.

NiMH Battery Pack: 12V 3800 mAh (Trail-Tech Female plug) for Bike Light with Fast Smart Charger & Bag 3099 1 69.95 69.95 http://www.batteryspace.com/nimhbatterypack12v3800mahtrail-techfemaleplugforbikelightwithfastsmartchargerbag.aspx Batteryspace

.

.

Metric Multipurpose Aluminum (Alloy 6060) - 6mm tube 1681T23 1 10.72 10.72 http://www.mcmaster.com/#aluminum-alloy-rods/=icg5ci McMaster

.

TETRIX Axle Set Collars W739092 4 3.95 15.8 http://www.legoeducation.us/eng/product/tetrix_axle_set_collars/1618 Lego

.

TETRIX L Brackets W739062 2 4.95 9.9 http://www.legoeducation.us/eng/product/tetrix_l_brackets/1589 Lego

.

GPS Scotland

.

Arduino UNO R3 - - - - - Already have extras.

.

Total: 259.97

.

.

293846662804970
<title>Rover Engineering Notebook: Andrew M.</title><style type="text/css">ol{margin:0;padding:0}.c5{max-width:468pt;background-color:#ffffff;padding:72pt 72pt 72pt 72pt}.c3{color:inherit;text-decoration:inherit}.c0{direction:ltr}.c2{text-decoration:underline}.c1{height:11pt}.c4{color:#1155cc}.title{padding-top:24pt;line-height:1.15;text-align:left;color:#000000;font-size:36pt;font-family:"Arial";font-weight:bold;padding-bottom:6pt}.subtitle{padding-top:18pt;line-height:1.15;text-align:left;color:#666666;font-style:italic;font-size:24pt;font-family:"Georgia";padding-bottom:4pt}li{color:#000000;font-size:11pt;font-family:"Arial"}p{color:#000000;font-size:11pt;margin:0;font-family:"Arial"}h1{padding-top:24pt;line-height:1.15;text-align:left;color:#000000;font-size:18pt;font-family:"Arial";font-weight:bold;padding-bottom:6pt}h2{padding-top:18pt;line-height:1.15;text-align:left;color:#000000;font-size:14pt;font-family:"Arial";font-weight:bold;padding-bottom:4pt}h3{padding-top:14pt;line-height:1.15;text-align:left;color:#666666;font-size:12pt;font-family:"Arial";font-weight:bold;padding-bottom:4pt}h4{padding-top:12pt;line-height:1.15;text-align:left;color:#666666;font-style:italic;font-size:11pt;font-family:"Arial";padding-bottom:2pt}h5{padding-top:11pt;line-height:1.15;text-align:left;color:#666666;font-size:10pt;font-family:"Arial";font-weight:bold;padding-bottom:2pt}h6{padding-top:10pt;line-height:1.15;text-align:left;color:#666666;font-style:italic;font-size:10pt;font-family:"Arial";padding-bottom:2pt}</style>

Andrew M.

July 2012

Project Description:

A small rover is designed to drive directly to a GPS waypoint. Critical to the project, a small GPS unit is mounted on the rover’s surface. Location data is converted to a usable form and a path calculated. The car makes an estimate of how far to turn, then re-calibrates its location. This process continues until the car has reached its destination.

The project utilizes the haversine formula to calculate the distance between two latitude and longitude points. Using the heading determined by the GPS proved highly inaccurate; I chose to mount a compass module to the car, reducing the need to constantly re-calibrate to correctly estimate the car’s heading.

        


Motors and Driver:

Motors: http://www.pololu.com/catalog/product/1103 

Two 37D metal gear motors were used in the project. The motor driver can easily power the motors despite the motors’ high stall current. The motors were purchased without encoders as they are unnecessary for the project; all location and distance data is supplied by the GPS.

Driver: http://www.pololu.com/catalog/product/2503 

Pololu suggests soldering a jumper to the board to supply power to the arduino and motor controller from the same sources; instead, I connected a single wire from the VIN screw terminal to the VIN pin on the shield. This allows the arduino to regulate power and retains the voltage protection circuits on the shield.

Compass module: http://www.sparkfun.com/products/7915 


Notes:


July 15th, 2012:

Achievements: An arduino program to successfully generate a path from one latitude and longitude to another has been completed. It interprets the incoming serial data and calculates the distance using the Haversine formula (http://www.movable-type.co.uk/scripts/latlong.html). Using the vertical (latitude) and horizontal (longitude) distances, the arduino essentially constructs a right triangle. The ratio of latitude to longitude is the tangent of the necessary angle, allowing the device to calculate a precise heading to turn to.

July 18th, 2012:

Achievements: The preliminary programming has been completed for both the rover and processing sketches. The processing sketch utilizes two the library modestmaps to display google maps data; the guicomponents library is also extensively used.

Issues: Proper interpretation of the serial data was a particular challenge. The arduino programming environment does not contain a simple way to split strings. Furthermore, decimal points proved another hurdle for the arduino to interpret.

Fixes: The microcontroller searches for parentheses and spaces, automatically ignoring them. As new characters of serial data are sent, they are added to a string (latitude). If one of these characters is a comma or indicates a newline, it moves to another string (longitude).

July 19th, 2012:

Achievements: The GPS unit was successfully tested, and its data is now converted from DMS (degrees, minutes, seconds) into the more usable decimal format.

Issues: Converting the GPS data seemed a simple task using this formula (http://andrew.hedges.name/experiments/convert_lat_long/). Problems arose concerning the data types the arduino uses and, after completing a fairly math heavy, complicated formula to convert data, I posted my situation on the adafruit forum and was given assistance (http://forums.adafruit.com/viewtopic.php?f=25&t=30776).


Fixes: The new program does not differentiate between minutes, seconds, and milliseconds: instead, it uses minutes, tenths, and hundredths of a minute in a single multiplication.

July 20th, 2012:

Achievements: The polycarbonate sheet was prepared to use with the motors and arduino. The arduino, GPS, and motor mounts were successfully screwed onto the surface.

Issues: Accuracy is paramount when creating any hole in the polycarb; careful planning was necessary. Another principal problem arose upon my discovery that screws were not included with many of the necessary parts. Luckily, I found appropriate screws and nuts.

Fixes: The battery was ultimately mounted on the underside of the polycarb.

July 21-22nd, 2012:

Achievements: Hours of testing were completed, the driving and GPS programs were wholly redone.

Issues: The GPS often supplies inaccurate heading data. Although the rover frequently reached the target, it rarely navigated the most direct path. The front wheels also demonstrated difficulties when turning.

Fixes: A magnetometer may be necessary to provide accurate direction data. I am also considering using a ball caster wheel to provide smoother turns.

July 23rd, 2012:

Achievements: An omni wheel was mounted on the front of the robot, making turns far easier.

Issues: After experiencing numerous issues when uploading programs, I discovered that a screw mounting the arduino to the acrylic sheet was causing problems. The TX and RX lights no longer flash but programs still upload.

Fixes: I removed the damaging screw from the board. The wheel hubs would fall off continually as the small black screws inside them would break. To combat this, I used full size screws to mount them to the motors.

July 24th, 2012:

Accomplishments: More acrylic was mounted between the forward and rear portions of the rover, strengthening the connection between the front omni-wheel and the rear. A sketchup file was created with three boxes to contain the various parts of the project; the boxes will be 3d printed.

Issues: The battery cord would not stay attached to the bottom of the rover; the battery itself was not strongly attached to the vehicle.

FIxes: The battery mount required further screws, and a small acrylic rectangle was mounted to the bottom of the rover to secure the battery cord.

July 25th, 2012:

Accomplishments: The compass was tested successfully. After placing a battery in the GPS to power the real time clock, I discovered that one of the vias on the board had been cut.

Issues: The GPS is still functional, however the fix LED no longer blinks.

Fixes: I attempted to repair the GPS, but I could not find a solution to the cut traces.

July 26th, 2012:

Accomplishments: The car was tested with the new compass code; many of the bugs were worked out.

Issues: The compass sometimes transmits incorrect heading data. In attempting to mount the compass to a suitable location on the car, I damaged the sensor, rendering it useless.

Fixes: The compass remains unusable.

July 27th, 2012:

Accomplishments: A new compass was tested and wired onto the arduino. I wrote a calibration sketch but realized that the compass was outputting fallacious data, probably because of its close proximity to the magnetic motors. I raised it above the car and can now turn successfully to a specific heading.

Issues: Metal and magnetic objects interfere with the compass reading.

Fixes: The compass must be repositioned to be properly used.

Clone this wiki locally