Project
I work in the field of robotics, and my focus is on getting robots to
learn aspects of a task by demonstration. The goal of this
research is to have a user control a robot with a joystick or other
control device, directing it to complete some task. After this
demonstration is complete, the robot will then apply a learning program
to the data it collected during the demonstration and store important
information on how the task was carried out for use at a later time.
The robot I am working with is a Pioneer 3DX, made by ActivMedia.
I am using the Player/Stage robot software suite for interfacing
with the various devices (camera, laser rangefinder, sonar transducers,
gripper, and motors) on the robot. The controller itself is
behavior-based and written in C/C++, and it uses the potential fields
methodology, wherein objects in the world generate "force fields" that
affect the robot while in their proximity. For example, when the
laser rangefinder detects an obstacle in front of the robot, the
obstacle avoidance behavior generates a vector that points away from
the obstacle while a wall-following behavior generates another vector
that points toward (or tangential to) the object. Input from more
than one behavior at a time is summed through simple vector addition,
and the resulting vector can be thought of as the force on the robot.
If the vector points forward, then the robot will move forward,
if it points to the left, then the robot will move to its left, etc.
The learning aspect comes in as it relates to the relative weights of
these behaviors. If the user is scraping walls, speeding, and
doing power slides around corners as he controls the robot, then one
would hope that any learning algorithm implemented would pick up that
the obstacle avoidance behavior shouldn't be as important as, say, a
goal-attraction behavior. If the user is being very cautious and
keeping a wide gulf between the robot and the obstacles in the
environment, the learning algorithm should also learn to be more
cautious by weighting the obstacle avoidance behavior much higher than
the others. Then, when the vectors generated by the behaviors are
added together, the result will be affected more by those behaviors
with a greater weight than by those whose weight is lesser. In
this way, the robot can learn different modalities of execution of a
particular task. The original learning algorithm proposed (see Publications
for more info), while successful, only learned the relationship between
two concurrently running behaviors at a time. Other, more complex
learning algorithms currently being implemented and investigated will
be designed to learn the interrelationships between an arbitrary number
of behaviors, so that as more simple behaviors are added, more complex
behavior can be observed.
Back to Homepage