15-494 Cognitive Robotics
Spring 2007
Course Links:  Main Lectures Labs Homeworks

Tekkotsu Links:   Tutorial Resources Bugs CVS

Cognitive Robotics: Lab 10

Part I: Grasping and Transporting an Object

  1. In your project directory, install the following files in ms/data/motion/bone:

  2. Modify StartupBehavior_SetupModeSwitch.cc to add a menu item for GraspDemo.
  3. To run the behavior, first place an AIBone somewhere in front of the dog, and place an orange cone at a location further from the dog.

  4. Get the body into normal walking posture by using the Walk Remote Control to walk forward a few steps. Use the HeadPointer Remote Control to point the camera at the AIBone. Remember to turn off the remote controls before proceeding, so they don't interfere with GraspDemo.

  5. Activate the GraspDemo behavior, and watch as the dog approaches the AIBone, grasps it, looks around for the orange landmark, and then pushes the AIBone to the landmark. Stop the behavior when the dog reaches the landmark.

Part II: Analysis

Read the code for GraspDemo and construct an annotated state machine diagram explaining how the behavior works. (Note: this code was written before the Pilot, so it does everything with a simple state machine. It should be rewritten to use the Pilot and Lookout.) First draw all the state machine nodes and transitions. Then, for each node, write a sentence or two to indicate what it's doing, how it does it, and under what conditions the node is exited.

Finally, analyze the Aibo's grasp and manipulation of the bone. Is there form closure? Force closure? Explain your answers. Also, list all the forces acting on the bone.

Hand this in at the end of today's lab.

Part III: Extensions

  1. Come up with a suitable stopping test for the dog so that it stops when it's close to the orange cone. For example, you might use the height of the orange blob bounding box, or the area of the blob, as a stopping criterion.

  2. Add additional states to the state machine so that when the dog reaches the landmark, it releases the AIBone and backs away from it. One way to do a release is to use the bone/acquire.mot motion sequence to splay the front legs out. Then set up a walk using bone/acquire.prm (so that the arms stay spread out) and walk backwards for a few hundred millimeters.

Turn in your analysis today. Turn in your code for Part III by Friday, April 11.

Dave Touretzky and Ethan Tira-Thompson