MicroRover is a practice drone for competing in the RoboMagellan competition. Basically, it is a simple outdoor robot that will allow me to debug my autonomous control software while waiting for my brother Dave to finish the real robot, Orion.
Note that the software that runs on MicroRover is the newest version of my autonomous controller software. It is designed to run on both land-based robots, and underwater robots. Hopefully when the summer is here, I will be able to get the same software running on MicroSeeker, my autonomous underwater vehicle. This software is designed to be very vehicle independent, with pluggable sensors and actuators, and pluggable motion metaphors for different robots.
Update (Jan 26, 2006): After some trouble with floating point on the gumstix, my brother built a new version of the VM with the right options, and MicroRover is fully autonomous and operational. A simple movie of its one of its first mission runs is here (2 MB)... Note that I replaced the original movie with a new one that is a little brighter.
See the top picture below for an updated look at the gumstix-equipped robot. MicroRover is the second robot I have built that runs off Smalltalk (MicroSeeker being the first).
Update (Jan 18, 2006): I have the gumstix from my brother, and I've got my new autonomous controller running on it. I have bluetooth working, so I can set up a wireless SSH session into the gumstix from my laptop. Very cool stuff. I also have the wheel encoders built and working, and I have successfully run a simple mission from my laptop, with the rover on my desk (with the treads off). This simple mission was just following a pair of waypoints in a straight line, but the mission was defined using the mission editor, and saved to a mission file, and launched from that. The robot is using encoder-based dead reckoning, with periodic heading corrections from the compass.
Next up is to build a serial cable for the gumstix to hook it up to the master PIC on my hardware board. The gumstix already has my squeak image with the new autonomous controller on it, and I can start it in headless mode and watch it log messages as it attempts to connect to the PIC over the serial port (which fails, because it isn't there). I also need to build a power cable with a private 5-volt regulator for the gumstix, build another serial cable so I can plug in the GPS, and I'll be good to start running more complex missions.
For anyone wondering about the wheel encoders, it turns out if you use a 6.8K pullup resistor on a QRD1114 sensor, it produces what amounts to a digital signal (about 0.15 volts for white, 4.95 volts for black).
Update (Jan. 4, 2006): I suffered a setback with MicroRover -- while trying to plug my PDA into the console port, I made a stupid mistake and plugged my 3-pin TTL serial cable into the wrong 3 pins of the 4-pin console header. The result put 5 volts down the ground line of my PDA, which appears to have completely fried it. On the plus side, my brother has agreed to sell me one of his gumstix boards, so I should be back in business soon...
As of now, the new autonomous controller (written in Squeak, and running on my laptop) can control both drive motors and the turrent servo, and can read and understand data from the compass and the sonar sensors. Next up is a pair of encoder disks to enable rough dead reckoning. The autonomous controller can also read and parse sentences from the GPS directly, and produce GPS coordinates when it is plugged in.
Update (Dec. 29, 2005): I made a simple movie of MicroRover moving across the floor. It is using the big 12 volt battery from MicroSeeker (2.2 amp hours), and right now just has an on-off switch to hook the motors directly to the battery. I'm impressed with how it moves, and how straight it tracks. You can see the movie here (1.62 MB).
Below are a few pictures of my progress (you can click on these pictures for bigger versions):
|Here's a picture of what it looks
like now. The sonar is hooked up and working, the encoders are hooked up and
working. The autonomous controller software is running on the gumstix, and
it is working also. This simple movie (2.0
MB) shows MicroRover rolling across the
floor on its own, following the mission in the picture below this one. The
mission was defined in the Mission Editor, and saved, copied to the MMC card
on the gumstix, and run from a headless Squeak image there.
The small black box in front of the gumstix is a power box - the gumstix needs 5 volts to run, so I put an LM2940 inside the box, and added a power indicator LED and a switch.
|This is the mission editor again, with the sample mission I defined loaded. This mission basically tells the robot to move to a pair of waypoints, the first one about 1 meter from the start point (the start point is at the bottom right, where the grid lines intersect), and the second about 2 meters from that, on a bearing of about 305 degrees West Northwest. So the total distance traveled is about 3 meters, which is about how much clear floor space I have in the room I'm testing in. The grid lines are 10 meters apart, if you're interested.|
|Its pretty much hardware complete
at this point. The only thing missing for an operational robot is to hook up
the sonar sensors to one of the PICs (there are 3 of them). The compass
tower is installed, and the compass is inside the black box, and hooked up
where it used to be (if you compare this image with the one immediately
below, you can see the compass isn't there anymore, and has been replaced by
a small connector).
You can't really tell in this image, but the power is actually on -- the flash from the camera overwhelms the blue LEDs. I'm still working on the software conversion on the PICs to handle the new autonomous controller, and after that I should have some video of this thing rolling around under its own control, and reacting to its environment.
|Okay, it's almost done. The
hardware board from MicroSeeker is mounted, with the power board underneath
the platform, beside the battery. The GPS and PDA need to be strapped down,
and I need to build a proper cable for the GPS, and hook up the two sonar
sensors. Once those two tasks are done, its just software after that to get
a functional robot.
I haven't done the encoders yet, or the IR range finders on the front. I also haven't done the compass tower (the box on a pole at the back of the CAD model below).
You can see the front of the compass sensor on the bottom board in this image.
|Here's a back view of the robot.
You can see the battery, and the main power switch. The power switch
replaces the magnetic switch I have for MicroSeeker, and it switches a
MOSFET to cut off power from the battery.
And one other thing - I need to pin the four idler axles in place, so they don't slide out.
|Here's an updated picture, with the top beveled to clear the tracks, and the battery mounted on the bottom, with the motors hooked directly to the battery via an on-off switch.|
|And here's a picture with the sonar head mounted...|
|Okay, a few updated pictures... Here it is, with both track assemblies done, and with the motors mounted and attached. I have to cut the bevels on the top plate at the front (see CAD model image below), but then it will be ready to move around.|
|Here's a side view of the same thing.|
|Here's the bottom, showing some detail of the motor mounts.|
|Here's the basic CAD model, which
I make for every robot I design. The flat aluminum plate that makes up the
main platform is 9" long, by 8" wide (6.5" wide at the front where it
The motors are the same as MicroSeeker has, from here. Sensors include a pair of sonars on a pan head, a pair of IR range-finders, a pair of wheel encoders, a 3-axis digital compass with a 2-axis tilt chip (also from MicroSeeker), and a Garmin Geko GPS.
The treads and wheels are from an old Radio Shack Bedlam R/C car I got a long time ago.
|Here's a picture of the sonar head. The sonar sensors are from Robotshop.ca, and are mounted on a cross-beam which is mounted to a standard hobby servo for panning from side to side.|
|This is the left side tread assembly, minus one idler wheel. Not much to see here, just a piece of 2" x 1/4" aluminum bar with a bunch of holes drilled through it.|
|Here's the mission editor
software, which allows me to plan out a mission in very little time. It has
a bunch of short-cuts for creating complex goal sets, unlimited undo, and
allows dropping in of any satellite image to form the basis for the map.
Cone locations can be entered either by clicking on a location on the map, or entering a GPS lat/long pair.