CSCI 3302 -- Introduction to Robotics


The overarching learning goal of this class is to create an appreciation for the tight interplay between mechanism, sensor, and control in the design of intelligent systems. This includes (1) formally describing the forward and inverse kinematics of a mechanism, (2) understanding the sources of uncertainty in sensing and actuation as well as to describe them mathematically, (3) how to discretize the robot’s state and reason about it algorithmically, and (4) experiencing 1-3 on a real robotic platform.

Meet the Team

  • Fall
    • Instructor: Bradley Hayes
    • Teaching Assistant: Aaquib Tabrez
  • Spring
    • Instructor: Alessandro Roncone
    • Teaching Assistants: Shivendra Agrawal and Anuj Pasricha


  • Articulate challenges in building autonomous systems
  • Experience a hands-on introduction to the theory and practice of fundamental ideas in robotics
  • Generalist’s exposure to interdisciplinary nature of robots, including an introduction to sensing, estimation, planning, control, architectures, implementation, and validation
  • Improve technical communication and team-based development skills
  • Formulate descriptions of technical problems
  • Take ownership of an interesting robotics problem and provide a solution via a team-designed and team-developed project.


Homework (30%), Lab (40%), Final Project (25%), Attendance/Participation (10%)

Yes, we are aware that the above sums to 105%! Please see below in the section named “Spring 2021 Considerations” for further information.


“Introduction to Autonomous Robotics” by Nikolaus Correll [LINK]

Topics Covered (in loose chronological order)

  • Odometry
  • Forward and Inverse Kinematics
  • World Representations and Mapping
  • Path Planning
  • Sensors and Sensor Selection
  • Feature Engineering and Navigation
  • Applied Machine Learning for Robotics
  • AI for Game Solving
  • Mathematical Models for Handling Uncertainty
  • Debates

If time allows:

  • Introduction to Interactive Machine Learning and Human-in-the-loop Systems
  • Activity Recognition and Segmentation
  • Natural Language Processing for Robotics
  • Robot Architectures
  • Socially Assistive Robotics


For Spring 2021, we will welcome a class that has double the amount of enrolled students and double the amount of teaching support. In order to maintain the same high standards of quality we had in past semesters, a number of special considerations and arrangements are needed to allow the class to proceed smoothly during the semester:

  • Please favor Piazza over email for your communications. Most of the technical questions are shared among the broader student population, and asking them on Piazza will guarantee swift processing of your request. Also, be aware that you can (and should) use Piazza to reach out to the team of instructors in private!
  • To speed up communications and solve issues and concerns swiftly, please address your communications to the whole team rather than a specific instructor or TA. That is, if you have an email that you would normally send to a TA, please send your email to both TAs and have both instructors in Cc. If some concern needs to be elevated to the attention of your instructors exclusively, please send an email to both instructors.
  • Please remember that, while lectures are with the whole class, you are assigned to only one of the two lab sections and you are expected to attend that specific section.
  • Attendance is not mandatory but recommended. While lectures will be recorded for your perusal, we want you to attend class synchronously and engage with the content and the instructors. For this reason, we have decided to put even more emphasis to attendance and participation in your grade. In short:
    • If you attend class (both labs and lectures) regularly you will get 5% in participation
    • If you attend class regularly AND ask questions, help your classmates, and contribute to the quality of the class and your own pedagogy, you will get 10%—which will become an extra credit opportunity for you!
  • Lectures will have semi-regular quizzes. Your answers to the quizzes won’t be necessarily part of your grade, therefore please try to answer them to the best of your capabilities and without using online resources to get the answer right. However, we will use quizzes to automatically record attendance.
  • Despite the title, this is not an introductory class. It is meant to be a gentle introduction to a very complex topic, and as such you should expect the level of difficulty to be somewhat reflective of the complexity of the pedagogy. From our past experience with teaching this course, the most successful students were those who participated proactively and worked regularly throughout the semester, and our recommendation is to try to anticipate any lacuna in your preparation (which we will be happy to help you fill) or issue with the material. We are here to help you be successful in this class!

# Exercises

We have developed a series of exercises in Webots. This list is constantly growing and can be recombined into different curricula ranging from basic mobile robotics to robotic manipulation classes. Many of the exercises come with autograders, Webots Supervisors that automatically execute the students’ code and test whether their world and controllers reach a specific state, making this curriculum suitable for larger classes.

## Lab 1: Reactive Behaviors and State Machines


I rock

  • Basic reactive behaviors such as attraction and avoidance
  • How to compose multiple behaviors into more complex ones
  • The notion of state and basic ways of implementation

## Lab 2: Line following and odmetery

  • Implement the forward kinematics of a differential wheel robot on the ePuck platform
  • To experience and quantify sensor noise from wheel-slip, discretization, and timing violations
  • To understand the concept of “loop closure”

## Lab 3: Inverse kinematics and feedback control

  • Understand how to calculate the wheel speed given a desired velocity and/or position
  • Implement basic feedback control
  • See the need for higher-level reasoning / path-planning

## Lab 4: Mapping with Lidar

  • Implement a basic discrete map representation
  • Use coordinate transforms to map sensor readings into world coordinates
  • Understand discrete and algorithmic aspects of mapping

## Lab 5: Path planning

  • Understand the challenges of map construction
  • Implement a shortest-path finding algorithm (Dijkstra’s algorithm or A*) on a grid map
  • Use path planning to generate a discrete set of waypoints for a robot to follow and demonstrate it in the Tiago environment

## Lab 6: Inverse kinematics on an industrial arm

  • Understand the internal representation of kinematics (URDF)
  • Use external IK solvers (ikpy) to find IK solutions
  • Develop a complex robotic application and draw images from SVG files