All students must take the following three courses. For mechanical
engineering students, it is recommended to
take ME EN 6250 Programming
for Engineers before taking ME 6225 or either Perception or
- CS 6310/ME EN 6220 Introduction to Robotics (3,F). John
Hollerbach, instructor. Prereq: CS 1000, MATH 2250, PHYCS
- The mechanics of robots, comprising kinematics, dynamics,
and trajectories. Planar and spatial transformations and
displacements. Representing orientation: Euler angles,
angle-axis, and quaternions. Forward and inverse kinematics;
Denavit-Hartenberg parameters. Velocity and acceleration:
the Jacobian, singularities. Trajectory planning: joint
interpolation and Cartesian trajectories. Statics of serial
chain mechanisms: center of mass. Inertial parameters,
Newton-Euler equations. Recursive inverse dynamics.
- CS 6330/ME EN 6230 Introduction to Robot Control (3,S). Tom
Grieve, instructor. Prereq: CS 6310/ME EN 6220, ME EN
- Control of serial manipulators is examined. Topics include
control system fundamentals, sensors and actuators, joint
level control, centralized control, operational space
control, and force control. Projects provide hands on
experience controlling a serial link manipulator.
- CS 6370/ME EN 6225 Geometric Computation for Motion Planning
(3,S). David Johnson, instructor. Prereq: CS 1020, MATH
- Geometric computation is the study of practical algorithms
for solving queries about geometric properties of computer
models and relationships between computer models. Robot
motion planning uses these algorithms to formulate safe
motion through a modeled environment. Topics to be covered
are spatial subdivision and model hierarchies, model
intersection, distance queries and distance fields, medial
axis computations, configuration space, and motion
- CS 7939/ME EN 7960-001 Seminar in Robotics (1,FS).
John Hollerbach, coordinator. Prereq: none.
- The Robotics Seminar is intended for all robotics students,
and for students wishing to learn more about robotics and
robotics research at Utah. New students in the robotics
track should thake this seminar in the first year. The fall
session deals with research: current student and faculty
preentations, readings and enrollee presentations. The
spring session deals with professional development.
Students must take one course from each of the following three
- CS 6320 3D Computer Vision (3,S). Guido Gerig, instructor.
Prereq: CS 3505, MATH 2210, MATH 2270.
Image formation and image models: projective geometry, modeling
cameras, projection matrix, camera distortions and artifacts,
camera calibration. Early vision: geometry of muliple views,
stereo vision, epipolar constraints, disparity, shape from
stereo, correspondence. Shape from X: reflectance map, shape
from shading, photometric stereo, shape from optical flow,
rotating camera, light stripe encoding, laser range systems.
High level vision: model-based vision, aspect graphs, tracking,
finding templates and recognition.
- CS 6640 Image Processing (3,F). Guido Gerig, instructor.
Prereq: CS 2420, MATH 2250.
- Basic principles of processing digital signals and how those
principles apply to images. Sampling theory, transforms, and
filtering. Basic image-processing problems including
enhancement, reconstruction, segmentation, feature detection, and
- CS 6300 Artificial Intelligence (3,S). John Hollerbach,
instructor. Prereq: CS 3505, 3130, 4150.
- The basic ideas and techniques underlying the design of
intelligent computer systems. A specific emphasis will be on the
statistical and decision-theoretic modeling paradigm, with
applications ranging from diagnosis to game-playing to
robotics. This course is built around several multi-part
programming projects, based on the game of Pacman.
- CS 6360 Machine Learning (3,S). Vivek Srikumar, instructor.
Prereq: CS 3130.
- Introduction to the basic ideas and techniques underlying
the design of learning computer systems. Topics include linear
algebra, Gaussian statistics, regression, Kalman filters and
smoothers, expectation maximization, classification, clustering,
support vector machines, and neural networks.
- CS 6380 Multi-agent Systems (3,F). Tom Henderson, Instructor.
Prereq: Knowledge of Matlab or C, data structures, processes,
- Covers fundamental notions of (1) software agents, including
autonomy, communication, persistence, and intelligence; (2)
multi-agent systems, including communication standards,
cooperation, competition, and coordination. Methods will be
applied to a practical application.
- ME EN 6240 Advanced Mechatronics (3,S). Mark Feldberg,
instructor. Prereq: undergraduate mechatronics or embedded
systems course; course in basic electrical circuits; and course
in C programming (or permission from instructor).
- This course gives students an experience in integrating
electromechanical systems by utilizing a commodity
microcontroller. Students will review basic electronics, and
then focus more directly on the basics of microcontrollers,
learning to interface a PIC microcontroller with a broad
variety of peripheral devices including motor drivers, LCDs,
shift registers, DAC and encoder chips among others. The
course will also emphasize the basics of serial
communication, including wireless serial communication. The
course will culminate with a biocentric themed group term
project. Students will leave the course with a broad set of
skills necessary to build custom embedded systems through
the use of a microcontroller and off-the-shelf
- CS 6360 Virtual Reality (3, not currently offered). David
Johnson, instructor. Prereq: CS 6310/ME 6220.
- Human interfaces: visual, auditory, haptic, and locomotory
displays; position tracking and mapping. Computer hardware
and software for the generation of virtual
environments. Networking and communications. Telerobotics:
remote manipulators and vehicles, low-level control,
supervisory control, and real-time
architectures. Applications: manufacturing, medicine,
hazardous environments, and training.
- CS 7310/ME 7230 Robot Mobility and Manipulation (3,F of
odd years). Mark Minor, instructor. Prereq: CS 6310/ME
- This course will examine grasping, rolling, and sliding
manipulation from two perspectives; (1) manipulating the
pose of an object with an end-effector via grasping,
rolling, and sliding manipulation, and, (2) manipulating the
trajectory of a mobile robot via the rolling and sliding
contact of wheels, feet, or curved exoskeletons and the
- CS 7320/ME EN 7220 System Identification for Robotics (3,S
of odd years). John Hollerbach, instructor. Prereq: CS 6310/ME
EN 6220, CS 6330/ME EN 6230.
- Modeling and identification of the mechanical properties of
robots and their environments. Review of probability and
statistics. Parametric versus nonparametric estimation.
Linear least squares parameter estimation, nonlinear
estimation. Specific identification methods for kinematic
calibration, inertial parameter estimation, and joint
friction modeling. Scaling, observability, and rank
- ME EN 7960-07 Haptics (3, not currently offered).
William Provancher and Jake Abbott, instructors.
Prereq: CS 6310/ME 6220, ME 5200/6200, C programming.
- This course will give students a broad overview of the topic
haptics, which is the study of touch: touch sensing,
perception, cognition, and feedback. The course is
organized into two halves where the first half of the course
aims to rapidly bring students up to speed with the basics
of haptics through lectures, homeworks, readings on
classical and current topics in haptics, and lab exercises.
Through lab exercises, students will learn to program basic
feedback behaviors with a haptic device. The focus of the
second half will be a term project; however, students will
continue to meet during class for additional lectures and to
discuss readings. Through readings and conducting their own
projects, students will learn to think critically about
prior work presented in the haptics literature as well as
their own work and begin to abstract ideas from prior work
to form their own research hypotheses. See the course
website for more details.