This robot was designed to be able to compete in a
RoboMagellan competition. I hope to
document the design, and the tools I used to create it.
The history log (below) starts with the most
recent entries. So, if you want to read from the beginning, start at the
bottom.
Camera - The camera
came from Mindsensors, but I wouldn't recommend it due to the
poor functionality, and lack
of technical support from the company. It took around 10 months
(and two replacement cameras) before it worked almost like I wanted.
(left to right) Voyager, Tom/Chad, Try-Crawler, Green
Monster
I got together with some other members of
the Robotics Posse and we drove our outdoor robots
around a large
"square" I mowed in my yard. (I didn't measure it, but it looks square)
John's Voyager was the first to complete the lap
(navigating using GPS) followed closly by my Green
Monster (using GPS) and my Try-Crawler
(using dead reckoning). Tom/Chad's robot used
timing to attempt the course, but didn't complete the lap.
Try-Crawler Prototype
I built this robot to test out a navigation
scheme. This is a very early version, so the finished robot
may
look much different. But it shows that the steering system should work very well.
This video clip shows GM exercising many of its abilities.
May 25, 2008
Obstacle Test
I've made many software changes, and a
couple hardware changes to GM. This video shows it driving
around our yard, avoiding a couple pallets of landscaping blocks (the same thing I was doing this day).
The US sensor works very well, but the camera does not.
March 12, 2008
Spring Test
The weather was finally nice enough to go
outside and test. This is a video of the robot driving around
my yard, driving to 6 points, before it wanders away. The video is about 5.5 minutes.
I've rewritten much of the code, to change how
it actually navigates. Now, instead of doing all the calculations
on GPS points, the GPS points are converted to cartesian coordinates, and all calculations are done on those
points.
That should make it easier to incorporate distance calculations
from the wheels.
September 22, 2007
Actual competition
I took the Green Monster to Robothon in Seattle. It actually did much like I expected.
Here's a map of the course, with a couple waypoints, and other
things marked on it.
In the first clip, the robot does fine for
about the first 50 seconds. Then, it got stuck in a loop,
because of some untested code I threw in at the last minute. The
code was designed to detect when it was stuck. But, I actually
forgot to reset the values, and they rolled over, causing it to think
it actually went backwards.
Don't bother watching the while 2 minutes. It never gets
unstuck
I like this clip, because you can see how many
people are following us.
In the second run, it did a little better, until it ran into the
wall around the fountain.
It actually got stuck on the tree stump, but it freed itself
after a few seconds.
Even if it had been able to detect the motors being stalled, that
wouldn't have worked, because the course was very slick, so the rear
wheels would not stall...
September 15, 2007
Automatic Connection
Thanks to RobotC, the robot is able to create the bluetooth connection to the GPS from within the program.
This clip shows me turning on the NXT, downloading the program, running the program, and watching the BT get connected.
RobotC has the ability to show the NXT display on the PC screen, which makes debugging even easier...
September 14, 2007
It
works!
I cleaned up the code a bit and found a boundary-condition bug,
which prevented it from stopping.
In this clip, you can see it actually stops
when it gets close to the final checkpoint. Of course, at the same time, it runs into
the awning.
The robot starts at point A, drives to point B, then C, before
returning to point A.
It still has a long way to go before it's finished, but this
pretty much shows that it can work.
This is a second trial run. Same course.
Ok, so there are many problems that still
need to be resolved. Right now, (today) it doesn't have the
ultrasonic sensors, which detect
obstacles. (like
tires)
I think one problem that it's running into is
that the robot moves faster than the GPS updates. So, once it
finds out where the target GPS waypoint is, the robot is in a new
location. That's why it's overshooting it's target. I
may need to adjust it so when it gets within a specific range, the robot will
pause for a few seconds, then continue.
Next week, I plan to take it to Robothon in Seattle. I
think it's working well enough to make a respectable showing.
September 13, 2007
A couple days ago, I got a version of RobotC that can read data coming
in from Bluetooth. This has been a problem for most software,
because the NXT requires data to be in a very specific format, and the GPS has it's own output format.
It just took me a short time to convert the code from Lua, but
now I have working code in RobotC. Last night, I was able to
take the robot out in the yard and let it drive around. I
discovered a couple things. There were a few bugs in the
code I still have to work out, and there are parts of my yard
that I need to mow.
I made a couple quick changes (my array was going beyond the
bounds, and crashing the program) and there are other things that
are yet to be resolved (like when the robot gets to the end of
the pre-programmed course, it should stop)
I don't know if you can see much in this
video. It was shot at about 11:00 pm. I had to run out
and test it, because it was working... :)
I still have a couple things on my to-do
list:
Function to determine if robot has stalled
Function to calculate distance traveled over ground
Ability to store GPS points in a file, for later
play-back.
September 05, 2007
I did some more "yard" testing. I think the hardware is fine.
With the pbLua software, I can:
Read the GPS via BT
Parse and reformat the data into a Lat & Long float.
Convert the current Lat/Long and target Lat/Long into a distance &
direction (direction formula not complete)
Read the Compass & compare direction
Determine when a waypoint has been reached & start looking for next
point
Incomplete:
Target direction calculation
Function to move robot in given direction (just untested)
Function to determine if robot has stalled
Function to calculate distance traveled over ground
I also want the ability to store GPS points (read GPS & store Lat/Lon)
to read them out later (to a PC). This way, I could "mark" GPS points, and have
the robot follow them at a later time.
August 31st, 2007
I have some videos from testing the robot. These were done by simply controlling the robot with a remote (another NXT)
August 28th, 2007
I did some testing in my yard. The GPS readings appear to be
pretty stable, and accurate. Right now, it will display on the
NXT, the distance and direction the robot must travel to arrive at the
target coordinate. Now, I just have to put it into the robot, and make it move...
August 24th, 2007
I've been working hard on the software for
the Green Monster this last week. I've ran into a few
problems. First, the final step in the
equations I was using required me to multiply a
very small number by 20,000,000 (20m) and the resulting value would
be in the range of a few hundred. However, I realized the
precision for pbLua only goes to 6 decimal places, so that set of equations wouldn't work.
Next, I found other Great Circle equations,
but again ran into problems with precision. My current plan is
to convert the coordinates into a flat plane, and run calculations
based on that. Over large distances, the calculations will not be accurate, however, as the robot approaches it's target, the accuracy of the distance and
direction will improve.
August 2007
Indoor test
Here's a clip of the Monster driving around my basement. I
was driving it around inside to see how well the steering
works. I think it will function well.
The tail does move back & forth. Both the head and the
tail can easily be removed.
August 20th, 2007
Over the weekend, I rebuilt the Green Monster.
I plan to take GM to various RoboMagellan events, and I expect to have to take
it on a plane. That means it will have to be able to travel. I took
the first version on a trip to Texas a week ago, and found it didn't travel
well. I had to take a lot of things apart to pack it. The current
version actually has better ground clearance, is a little longer, but
easily breaks down into smaller pieces.
I didn't get any new pictures with the head or the tail, but they both attach. I'll post pictures sometime.
August 17th, 2007
Created web page.
Current Status: Version 1 of the robot design is complete. I've tested the
robot, and it runs well outdoors, in the grass. I programmed it
to record a compass heading, and follow that heading. It drove over
grass & rocks, and corrected itself to follow the original compass heading.
The robot has three motors (all used to drive the robot), a compass, 2
ultra-sonic sensors, 4 large wheels, and a Bluetooth GPS. And, a dragon
head...
HERE is the program I wrote in
NXT-G to test out the compass, and make sure the robot could drive through the grass, and
continue going the same direction. It includes some other junk, but
worked fine for testing.
The main software is pbLua, which (at the time I did this) is the
only software able to communicate with a bluetooth GPS.
Previous History
I think all robots need a good name. I toyed around with a few names for
this. I was thinking about the Green Machine.
But then I picked up a Dinasour set, and decided the head and tail would make
good additions (removable accessories) to the robot. That turned it into
something of a monster...