15-494 Cognitive Robotics Spring 2007 |
|
Part I: Localization With the Particle Filter
In this part of the lab you will start with a pre-specified world map.
You will use the MapBuilder to look around and build a local map, and then use
the particle filter to localize the robot on the fixed world map.
Start with the file Lab6a.h. Arrange three plastic easter egg halves in an L-shape, with the two outboard easter eggs 100 mm from the central one. Make sure the colors of your eggs agree with the colors in the workd map set up by your code. Load the posture file STAND.POS so the dog is standing up; this increases its field of view and also makes the ground plane calculation more accurate. Run the Lab6a behavior and observe the robot performing a visual search for the landmarks. Examine the local map to see what the MapBuilder found. Examine the world map to see what the particle filter concluded about the robot's position. Then move the dog to another location. Stop the behavior and start it again to process the new location. Hand in snapshots of your local maps and corresponding world maps. (You can use the "Save Image" button in the SketchGUI to save a picture of the local map or world map.) Part II: Find and Knock Down A Soda Can
The Pilot can be used to search for an object by performing a map
building operation. If the desired object isn't found, the Pilot can rotate
the body and try again. Since the Pilot doesn't know what we're
searching for, we must supply an exitTest() function to tell it when to
stop searching. In this exercise we're going to look around for
orange blobs, and then try to run over the biggest one.
Start with the file Lab6b.h. Use an upright orange soda can as your search target. Try starting the dog close to and facing the target, and see how well it can do at knocking it over. Then try starting the dog facing away from the target, and see if it can find it. Part III: Gates of Heaven
Define a world map with two orange pillars (blobs) 35 cm apart,
forming a "gate". Your task is to get the AIBO to walk through the
gate without touching either pillar. To do this, you should define a
Shape<PointData> on the world map that is a bit "outside" the
gate. If you can get the AIBO to that point at the proper
orientation, then you can use dead reckoning to proceed through the
gate. You should first localize yourself on the world map, then use
the Pilot's gotoShape request to travel to the gate entry
point. Then use the Pilot's walk request to travel forward far
enough to pass through the gate.
Note: gotoShape currently only navigates by dead reckoning and
therefore doesn't work well enough to complete this exercise unless
you're already very close to the shape you're trying to reach. So for
now, focus your effort on localizing the robot and then printing out a
message indicating the distance and direction from the robot to the
gate entry point you defined; don't worry about executing the
gotoShape request.
Dave Touretzky and Ethan Tira-Thompson |