title.jpg (20464 bytes)

Albert Menu:        

 buttblue.jpg (750 bytes) Albert Project Home
The Albert Project Homepage.
 buttblue.jpg (750 bytes) Project Log
Follow Albert's progress.
 buttblue.jpg (750 bytes) Long Term Goals
Read the long term project goals.
 buttblue.jpg (750 bytes) Short Term Goals
Read the short term project goals.
 buttblue.jpg (750 bytes) Gallery
Enjoy pictures of Albert, taken during development.
 buttblue.jpg (750 bytes) Albert's Five Ears
Read this report about Albert's sonar sensors.
 buttblue.jpg (750 bytes) Albert Programming
Read this report about Albert's low level and high level code.
 buttblue.jpg (750 bytes) Speak, Albert, Speak
Read this report about Albert's text-to-speech ability.
 buttblue.jpg (750 bytes) Mood-Based Behaviors
Read this report about Albert's "Mood Matrix".

Albert's Five Ears
4/15/99

I've received several comments and questions about Albert's five sonar sensors.  This report will document some of my plans, theories, and ideas prior to any actual experimentation.  Most of the concepts you will read here are based on website research, scientific articles, posts to the comp.robotics.misc newsgroup and e-mails from the Seattle Robotics Society mailing list.  (Special thanks to Dr. John Piccirillo for sending me an informative article about a multi-sonar robot called Dervish.)

Sonar Placement
Many commercial robots, such as the Nomad line from Nomadic Technologies, employ a ring of evenly spaced sonar sensors.  I can see certain advantages to this placement, but it does leave gaps -- especially high and low -- that shouldn't be ignored in real world environments.  Albert's five sonars provide coverage to the front and sides, and also low in the front.  The picture below shows their exact locations: 

alsonars.jpg (21465 bytes)
Albert's five sonar sensors

The side sonars (#4 and #5 in the picture) will be used for wall following.  Albert can turn perpendicular to a wall, and use these sensors to follow it.  (I'm also hoping to use the side sonars to detect open doorways and adjoining hallways.  For example, if the left side sonar readings are fairly consistent, but then become  larger for a short period of time, it might indicate an opening of some kind.)  In a hallway, I should be able to use both side sonars to keep Albert moving straight down the hallway, equidistant from either side.

The #3 sonar will be used to supplement the readings from Albert's "eyes" (sonars 1 and 2), and also to detect sleeping dogs, feet, the bottom stair, and anything else too low for the top sonars to see.  I noticed, while playing around with a Trilobot, that it routinely bumped into the bottom step.  After a little analysis, I realized that the bottom step was below the front mounted sonar, and thus couldn't be detected.

Alwall.gif (2055 bytes) I chose to use two sonars for the front of my robot, because I felt they would give me a stereoscopic effect, and with a little trigononmetry (better pull out my old math books) I should be able to look at a wall and determine Albert's angle to it.  (See diagram at left.)  The sonar sensors I'm using have a 15 degree "cone" of error, so my angle calculations will only be approximations, but this should still simplify my wall following algorithms.  (When Albert thinks he has located a wall, he could turn in the direction of the closest reading, and keep turning until both readings are approximately the same.)

Technical Details
I'm not going to spend a lot of time discussing the technical details of how my sonars are hooked up, because this is not my area of expertise.  I can tell you that I purchased them for $49.95 from Zagros Robotics
, and that they are Polaroid 6500 series instrument grade electrostatic transducers, and Polaroid 6500 ranging modules.  The multiplexer board, that allows me to connect the five sonars together, was built by AJ Neal at Zagros, and it was all hooked up by my friend Chris Hostetler.  I've included some pictures:

multboard.jpg (41794 bytes)
Here's a close shot of the multiplexer board
(Note: The red and green wires in the front are connected to my light sensor)

sonarclose.jpg (37760 bytes)
Albert Front:  You can see the multiplexer board and parts of three of Albert's sonars

Note that Chris and I decided to mount the transducers using a single "L" shaped bracket.  (I circled the bracket in the upper left corner of the picture above.)  This holds the units secure, but also allows me to rotate them left or right as I see fit.

Programming
I've been researching sonar navigation methods and I'm pretty intrigued by Certainty Grids and Virtual Force Fields (Borenstein).  Properly implemented, these require pretty sophisticated vector calculations, but I think a simpler (though probably somewhat less effective) execution is also possible.

For those who aren't familiar with these concepts, the basic idea is that objects detected by sonar readings will repel the robot away at intensities proportional to their distance (and the certainty that the object detected is really there and is non-passable.) In simpler terms, imagine that the robot has magnets instead of sonars, and that all the obstacles in the environment are magnetized such that they will repel the robot away from them. The closer an object gets, the harder the robot would be pushed away. Using this scheme (and those two side sonars), Albert would automatically center himself while moving down a hallway, as he would move to equalize the forces pushing on both his left and right sides.

I'm going to start my experiments in this area by simply having the two front sonars dictate the speed of the drive wheels.  The larger the distance, the faster the wheel on the opposite side will move.  In other words, let's say that each motor has 10 speeds ranging from 1 (no movement) to 10 (fastest speed).  I'll take sonar readings for the left and right, round the readings to whole 'feet' (7 feet 3 inches = 7 feet) and use this figure as the speed for the motor on the opposite side.  Anything greater than 10 automatically becomes 10.  So if Albert is in the middle of a large room he'll just start moving straight ahead at maximum speed (because both motors are set to the highest speed), but if someone suddenly dropped a box four feet in front of his left sonar, Albert would turn sharply to avoid the obstacle (because his left wheel would be turning more rapidly than his right wheel).  The following diagrams should help illustrate this more clearly:

sonardemoleft.jpg (8433 bytes)sonardemoright.jpg (9728 bytes)         

I've seen a lot of robots that simply 'stop' when they encounter an obstacle, then turn, then continue moving forward.  I'm anxious to implement a navigation scheme similar to the one above because it should allow Albert to move continuously and smoothly.

To Find Out More
For further reading on the topic of using sonar sensors for autonomous robot navigation, I highly recommend the work of Johann Borenstein, an associate research scientist in the Department of Mechanical Engineering and Applied Electronics at the University of Michigan.  His website contains links to many articles and reports he has written, and even has the full content of one of his books!

 


Copyright 1999-2000, John Cutter.
For feedback, problems, questions, or to share your own stories or ideas, please contact john@home-robot.com.
Last updated: October 25, 1999.