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