A Pick Up the Trash FSA
As another example of how to construct and apply an FSA, consider the PickUp the Trash task. Assume that the robot is a small vehicle, such as the ones
used by Georgia Tech shown in Fig. 5.7 or the Pioneer shown in Fig. 5.10,
with a camera, and a bumper switch to tell when the robot has collided with
something. In either case, the robot has a simple gripper. Assume that the
robot can tell if the gripper is empty or full. One way to do this is to put an
IR sensor across the jaw of the gripper. When the IR returns a short range,
the gripper is full and it can immediately close, with a grasping reflex. One
problemwith grippers is that they are not as good as a human hand. As such,
there is always the possibility that the can will slip or fall out of the gripper.
Therefore the robot should respond appropriately when it is carrying a can
or trash and loses it.
The Pick Up the Trash environment is visually simple, and there are obvious
affordances. Coca-cola cans are the only red objects in the environment,
and trash cans are the only blue objects. Therefore visually extracting red
and blue blobs should be sufficient. All objects are on the floor, so the robot
only has to worry about where the objects are in the x axis. A basic scenario
is for the robot to start wandering around the arena looking for red blobs.
It should head straight for the center of the largest red blob until it scoops
the can in the forklift. Then it should try three times to grab the can, and if
successful it should begin to wander around looking for a blue blob. There
should only be one blue blob in the image at a time because the two trash
cans are placed in diagonal corners of the arena. Once it sees a blue blob,
the robot should move straight to the center of the blob until the blob gets a
certain size in the image (looming). The robot should stop, let go of the can,
turn around to a random direction and resume the cycle. The robot should
avoid obstacles, so moving to a red or blue blob should be a fixed pattern
action, rather than have the robot immediately forget where it was heading.
The behavior table is:
The FSA also hid the role of the avoid behavior. The avoid behavior was
always running, while the other behaviors were asynchronously being instantiated
and de-instantiated. It is difficult to show behavioral concurrency
with an FSA. Other techniques, most especially Petri Nets, are used in software
engineering but have not been commonly used in robotics. The avoid
behavior was not a problem in this case. It was always running and the output
of the avoid potential field vector could be summed with the output of
whatever other behavior was active.


No comments:
Post a Comment