CS 148 is an introduction to core topics in the modeling and control of autonomous robots. This course focuses on the development of “brains for robots”. That is, given a robot as a machine with sensing, actuation, and computation, how do we develop programs that allow the robot to function autonomously? Such programs involve the robot's perception of its world, decision making towards some objective, and transforming decided actions into motor commands. These are functions commonly used in modern robotics, such as for the PR2 (below).
Thursday 1-3 (when not conflicting with travel)
Monday 3:00-5:20 (M Hour) in CIT 368
Any one of the following: CS15, CS17, CS19, or permission from the instructor
CS 15, 17, or 19 should provide an adequate programming background for the projects in this course. In addition, motivated students who have taken CS 4 should consult with the instructor before enrolling in CS148. Interested students who have not taken any of these courses at Brown, but have some other strong programming experience should consult with course instructor.
Highly Recommended: Linear alegebra
Recommended: Differential equations, Computer graphics, Computer vision, Artificial Intelligence I will do my best to cover the necessary material, but no guarantees. Linear algebra will be used extensively for representing 3D geometric transforms. Computer graphics is helpful for under-the-hood understanding of threejs. Computer vision and AI share common concepts with this course. Differential equations are used to cover modeling of motion dynamics and inverse kinematics, but not explicitly required.
O'Reilly Media / Yahoo Press, 2008
Principles of Robot Motion
Howie Choset, Kevin M. Lynch, Seth Hutchinson, George A. Kantor, Wolfram Burgard, Lydia E. Kavraki and Sebastian Thrun
MIT Press, 2005
Projects and Grading
There will be 8 projects in CS148: 7 programming assignments and 1 oral/written assignment. CS 148 projects are graded as “checked” (completed) or “not checked” (incomplete). To receive an A grade in the course, you must have all assignments checked by the end of reading period. For a B grade, 6 assignments must be checked. Less than 6 checks will result in no credit for the course. The timing and due dates for these projects will be announced on an ongoing basis. Git repositories will be used for project implementation, version control, and submission. Project implementations are submitted as branches in your assigned repository. These branches must be submitted prior to the due date for each assignment. Your implementation will be checked out and executed by the course staff. You will be notified by the course staff whether your implementation is sufficient for checking off the assignment. If your assignment is insufficient for receiving a check, your group is allowed one regrade (per assignment) with 2 weeks of notification. If deemed necessary, the course staff may require an interactive demonstration of your implementation and/or a web-based written report.
All grading will be finalized on May 11, 2015. Regrading of specific assignments will be done upon request during office hours. No regrading will be done after grades are finalized.
The course staff will provide a git repository (through github) for each student group to check in project source code and reports, unless you request using separate service or repository. Please refer to this tutorial for an in-depth introduction to git and version control. Although it has a coarse language choice, this is also a great and accessible tutorial. We expect students to use these repositories for collaborative development as well as project submission. It is the responsibility of each student group to ensure their repository adheres to the Collaboration Policy and submission standards for each assignment. Submission standards and examples will be described for each assignment.
Do not submit assignments late. The course staff reserves the right to not grade late submissions.
CS148 cannot be taken for 200-level (graduate) credit. Please direct questions about policies and procedures for graduate credit to the CS Director of Graduate Studies.
This policy covers all course material and assignments unless otherwise stated. Course material, concepts, and documentation may be discussed with anyone. Assignments may be discussed with the other cs148 students at the conceptual level. Discussions may make use of a whiteboard or paper. Discussions with others (or people outside of your assigned group) cannot include writing or debugging code on a computer or collaborative analysis of source code that is not your own. You may take notes away from these discussions, provided these notes do not include any source code. The code for your implementation may not be shown to anyone outside of your group, including granting access to repositories or careless lack of protection. You do not need to hide the screen from anyone, but you should not attempt to show anyone your code. When you are done using any robot device such that another group may use it, you must remove all code you have put onto the device. You may not share your code with others outside of your group. At any time, you may show others the implemented program running on a device or simulator, but you may not discuss specific debugging details about your code while doing so. Should you fail to abide by this policy, you will receive no credit for this course. Brown also reserves the right to pursue any means necessary to ensure compliance. This includes, but is not limited to prosecution through Brown University’s Student Conduct Procedures, which can result in your suspension or expulsion from the University.
Tentative Schedule (subject to change)
- Assignment 1 out: Getting started
- Week 2: Linear alegbra refresher, Lagrangian equations of motion for simple pendulum, numerical integrators, Proportional-Integral-Derivative control Slides
- Assignment 1 due: Getting started
- Assignment 2 out: Simple pendulum
- Week 3: Particle dynamics with constraints, Relaxation with spring and ground constraints Slides
- Week 4: No class. Long weekend break. Slides
- Assignment 2 due: Simple pendulum
- Assignment 3 out: N-link planar arm
- Week 5: Robot kinematics, URDF, 2D transforms, 3D transforms (Chapter 2) Slides
- Week 6: Forward Kinematics, Matrix Stack (Chapter 3), Quaternions; Not covered: D-H notation Slides
- Assignment 3 due: N-link planar arm
- Assignment 4 out: Forward kinematics: draw robot
- Week 7: Inverse kinematics, Geometric Jacobian, Pseudo Inverse (Chapter 4) Slides
- Week 8: Motion Planning, Probabilistic Roadmaps, RRT Connect (Chapter 5)
- Handout: RRT-Connect: An Efficient Approach to Single-Query Path Planning by Kuffner and LaValle, ICRA 2000.
- Assignment 4 due: Forward kinematics: draw robot
- Assignment 5 out: Forward kinematics: quaternions
- Week 9: No class. Spring Break.
- Week 10: Simple collision detection, Potential Fields (Chapter 5), Lagrangian multipliers
- Assignment 5 due: Forward kinematics: quaternions
- Assignment 6 out: Inverse kinematics
- Week 11: Monte Carlo Localization, Simultaneous Localization and Mapping, Range Sensing, 2.5D Point Clouds, Moving Least Squares
- Week 12: Newton-Euler Dynamics, Robotics Lab Demos, Quad Rotor Helicopters, Mobile Manipulation
- Assignment 6 due: Inverse kinematics
- Assignment 7 out: Motion planning
- Assignment 8 out: Best use of robotics?
- Week 13: Regrading and makeup session
- Week 14: Student presentations
- Assignment 7 due: Inverse kinematics
- Assignment 8 due: Best use of robotics?
- Week 15: Regrading and makeup session
Slides from this course borrow from and are indebted to many sources from around the web. These source include a number of excellent robotics courses:
Assignment 1: Getting familiar with 3jsbot
Due 9am, Monday, February 2, 2015
In this assignment, you should clone the 3jsbot_stencil repository as your working repository for the course. 3jsbot_stencil contains a code stencil for this assignment as well as all projects in the course. If you open "home.html" in this repository, you should see the jittering disconnected pieces of a robot (described in "robots/br2.js"), similar to the follwing snapshot:
To ensure proper submission of your assignments, please do the following:
- email the course instructor (ojenkins addrsign brown) with your name, email address, and pointer to your repository,
- ensure the course instructor knows what repository you are using, and your branch is created and not modified past project deadlines
- ensure the instructor has read/commit access to your repository, which can be confirmed/addressed through email or office hours
For turning in your assignment, create a branch in your repository labeled "Assignment-1". The "Assignment-1" branch is essentially a tag and should not be merged back into the master. You should work from the master.
Assignment 2: Simple pendulum
Due 9am, Monday, February 16, 2016
To get a sense of physical dynamics and control, your task is to implement a physical simulator and servo controller for a frictionless simple pendulum with a rigid massless rod, and then control this system as a 1 DOF robot with a single motor. The code stencil for this pendulum example has been placed in the 3jsbot_stencil repository.
For physical simulation, you will implement two numerical integrators (Euler's Method and Velocity Verlet) for a pendulum with parameters specified in the code stencil. The numerical integrator will advance the state (angle and velocity) of the pendulum in time given the current acceleration (generated from the pendulum equation of motion). If implemented successfully, this ideal pendulum should oscillate about the vertical (where the angle is zero) proportional to the pendulum's initial angle.
For motion control, you will implement a proportional-integral-derivative controller to control the system's motor to a desired angle. This PID controller should output control forces integrated into the system's dynamics. You will need to tune the gains of the PID controller for stable and timely motion to the desired angle for pendulum with parameters: length=2.0, mass=2.0, gravity=9.81.
For user input, you should be able to use the 'q' and 'e' keys to decrement and increment the desired angle of the 1 DOF servoed robot arm, and hold down the 's' key zero the robot's controls and allow it to swing uncontrolled.
For turning in your assignment, create a branch in your repository labeled "Assignment-2".