\section{The Goals of the Course and the Schedule}

The main goal of the course is to learn how to create an
\emph{intelligent} robot, using the AIBO robot as a concrete example.
We want the students to understand how {\it to program} the robots to
perform tasks. Our aim is to {\it demystify} robot programming so that
it becomes clear and accessible to all of our students. A parallel
goal of the course, and mainly our own goal, is to move from our
research code in robot soccer to modular code that can be used for any
general robot task. We aim to provide course materials that are
modular and well structured so that people at other universities can
use the materials in their own courses. We further believe that
reorganizing and cleaning up our robot soccer code will have several
additional positive effects, namely facilitating both our own future
research and the initiation of new students in their research.

The AIBO is a remarkable piece of commercially-available robotic
hardware.  An AIBO has fifteen degrees of freedom (DOF) in its legs
and head, a color CCD camera that can process images at 25-30
frames/second, a 3-axis accelerometer for body pose estimation,
buttons on its back, head, and footpads, LEDs for visual debugging,
and a wireless ethernet (802.11b) card for inter-robot communication.
AIBOs are programmed using a free SDK called OPEN-R (found at 
http://openr.aibo.com/) which lets one compile control code on a
workstation with a MIPS cross-compiler (available for GNU Linux,
Microsoft Windows, and Mac OSX).  The AIBO's low cost (approximately
\$1,600 US) allows an instructor to purchase several of them for the
price of a more traditional research robotic platform.

% Insert annotated picture of an ERS-7 and an ERS-220

We designed the 15-week course along several main components:

\begin{description} \itemsep 0pt

\item [Behaviors:] The primary purpose of this course it to
familiarize the students with the concept of behaviors for robot
control.  Every component, from sensors to localization, is caste in
the framework of how a mobile robot can use those techniques in its
behaviors.  We teach students about behaviors at several places in the
course since behavior is a basic component of virtually robot
task. Initially, we introduce finite-state machines and incrementally
address more complex behavioral structures, such as hierarchical
behaviors and planning.  Figure~\ref{behavior-fig} shows an
illustrative example of decompositional and sequential behaviors used
in the class.

% Include picture of behavior hierarchy
\begin{figure}[ht]
\centering
\resizebox{\columnwidth}{!}{\includegraphics{behavior.jpg}}
\caption{Description of a behavior hierarchy}
\label{behavior-fig}
\end{figure}

\item [Sensors and actuators:] Robots perceive the world using their
\emph{sensors} and they affect their environment with their
\emph{actuators}. All interactions between the robot and its environment
are mediated by sensors and actuators; they are equivalent to
input and output operators in robot programming. This component of the
course introduces students to the idea of acting in the face of
uncertainty. Unlike traditional programming where input values
are completely known, robots must perform with only limited,
noisy knowledge of their environment. Additionally, robots must
cope with noise and uncertainty in their actions; motors do not always
perform the requested movements and factors such as friction and
slip are difficult to take into account when predicting the
outcome of actions. Students must be introduced to the idea of
uncertainty, which is central to robot programming.
Figure~\ref{accel-fig} shows an example plot of the 3-axis
accelerometer data that students can use to determine what ``state''
the robot is in.

% Include picture of accelerometer data and a hysteresis picture
\begin{figure}[ht]
\centering
\resizebox{\columnwidth}{!}{\includegraphics{accel.jpg}}
\caption{3-axis accelerometer signature for a robot that starts on its
left side, is rotated to an upright position, and then is rotated to
its right side.}
\label{accel-fig}
\end{figure}

\item [Motion:] The AIBO robots offer an interesting and challenging 
platform for exploring robot motion. AIBOs are interesting because
they are a legged platform with fifteen degrees of freedom (DOF) in
their head and legs. Each of the four legs has three DOF
and the head has pan, tilt, and roll joints. This count only includes
the major joints. The tail, mouth, ears, and eye LEDs can also be
actuated to create more expressive behaviors. In this unit, we
introduce students to the ideas of forward and inverse kinematics.
We also include a practical introduction to our motion system
on the AIBO. We describe our parameterized walk engine which uses
approximately fifty numeric parameters to specify an entire gait
for the robot. These parameters include factors such as robot body
height, body angle, lift heights for each leg, and timings. We
also introduce students to the idea of frame based motion where
all joint angles are specified for a few \emph{key frames} and
the robot interpolates between them. This type of motion is
useful for scripting kicking motions for soccer, dance motions,
climbing, and other predefined motions.

% Include slide of walk parameters or frame-based motion
\begin{figure}[ht]
\centering
\resizebox{\columnwidth}{!}{\includegraphics{motions.jpg}}
\caption{The two motion systems used in the CMRoboBits code base for
  controlling the AIBO's limbs.}
\label{motions-fig}
\end{figure}

\item [Vision:] The AIBO robots use vision as their primary
sensor. Color images in the YUV colorspace arrive at a
framerate of 25hz. The vision unit of the course acquaints
students with the basics of robot visual processing. Students
briefly learn about the YUV color space, which is commonly used by
image capture hardware.  Real time color segmentation and
camera calibration are also discussed. Finally, higher level
concepts such as object recognition from the color segmented
images, including weeding out false positives is covered at
length. Students also learn how kinematics ties back to vision
for calculating the real world position of objects in the
vision frames.  Figure~\ref{rle-vis-fig} shows an example frame of
video that has been processed by the AIBO's real-time color segmentation
algorithm.

% Include slide of color-based images
\begin{figure}[ht]
\centering
\resizebox{\columnwidth}{!}{\includegraphics{rle-vis.jpg}}
\caption{An example frame of video from the AIBO's camera after
  color-segmentation post-processing.}
\label{rle-vis-fig}
\end{figure}

\item [Localization:] In order to act effectively, a robot
often needs to know where it is in the environment. Localization
becomes an essential component that interacts with perception,
decision making, and motion. This unit introduces the ideas
of probabilistic localization beginning with the basic ideas
of Markov localization and including different methods of
representing belief such as Kalman filters and particle
filters. We also cover ideas such as recovering from errors in
localization (e.g. the kidnapped robot problem) through sensor
based resampling and the various tradeoffs that may be made
between computational cost and resource consumption.

% Include a particle filter diagram?

\item [Multi-Robot Cooperation:] Once the students understand how to
program a single AIBO to do interesting behaviors, we teach them how
to use the AIBO's on-board 802.11b wireless ethernet system.  This
allows the robots to communicate between each other.  For the
remainder of the course, we teach the students how to solve problems
with multi-robot behaviors, discussing the challenges and presenting
several approaches for multi-robot communication and coordination.

% A picture of robots in the ball pit
\begin{figure}[ht]
\centering
\resizebox{\columnwidth}{!}{\includegraphics{cooperate.jpg}}
\caption{Students learn some of the challenges with programming
  behaviors for cooperative multi-robot tasks.}
\label{cooperate-fig}
\end{figure}

\end{description}

