Table of Contents
- Course Aims
- Learning Outcomes
- Optional Textbooks
- Course Websites
- Inclusion Statement
- Getting Help
Robotics as an application draws from many different fields and allows automation of products as diverse as cars, vacuum cleaners, and factories. This course is a challenging introduction to basic computational concepts used broadly in robotics. Topics include simulation, kinematics, control, optimization, and probabilistic inference. The mathematical basis of each area is emphasized, and concepts are motivated using common robotics applications and programming exercises. Students will participate in a series of projects over the course of the semester, in which they will implement algorithms that apply each of the topics discussed in class to real robotics problems. This course prepares students to take CS 4752/MAE 4750: Robotic Manipulation and MAE 4180/CS 3758: Autonomous Mobile Robots, among others.
By the end of this course, I will understand the basic concepts and theory governing the programming of robots that perform autonomous tasks such as navigation and manipulation.
After this course, I will be able to:
- describe the different physical forms of robot architectures.
- kinematically model simple manipulator and mobile robots.
- mathematically describe a kinematic robot system.
- analyze manipulation and navigation problems using knowledge of coordinate frames, kinematics, optimization, control, and uncertainty.
- compute forward and inverse kinematics for a small serial kinematic chain.
- consider trade-offs among position control, velocity control, and force control when solving a robot control problem.
- perform stability analysis of a controller-robot system, and describe why it is important.
- model uncertainty in robot processes.
- program robotics algorithms related to kinematics, control, optimization, and uncertainty.
(MATH 1920 or MATH 2220) and MATH 2940 and (CS 1110 or CS 1112) or permission of instructor. That is, multivariable calculus, linear algebra, and introduction to computing.
There are two optional corequisites. The first is CS 1133, which is a half-semester course designed to teach Python for students who learned Matlab in CS 1112. We strongly encourage you to take CS 1133 if you don’t know Python. The second is CS 3220, which provides a rigorous foundation in the mathematical background concepts used in the course.
There are no required textbooks for the course. The following is a list of optional but useful references for different parts of the course.
- Lentin Joseph, Robot Operating System (ROS) for Absolute Beginners, Apress, 2018.
- Brian Gerkey, Morgan L. Quigley, and William D. Smart, Programming Robots with ROS: A Practical Introduction to the Robot Operating System, O’Reilly Media, 2015.
- Mark W. Spong, Seth Hutchinson, and M. Vidyasagar, Robot Modeling and Control, Wiley, 2006.
- Kevin M. Lynch and Frank C. Park, Modern Robotics: Mechanics, Planning, and Control, Cambridge University Press, 2017.
- John J. Craig, Introduction to Robotics: Mechanics and Control, Addison-Wesley Publishing, 1989.
- Alonzo Kelly, Mobile Robotics: Mathematics, Models, and Methods, Cambridge University Press, 2013.
- Sebastian Thrun, Wolfram Burgard, and Dieter Fox, Probabilistic Robotics, MIT Press, 2005.
- Bruno Siciliano and Oussama Khatib, eds. Springer Handbook of Robotics, Springer, 2016.
- Coding Projects (5 total): 25%
- Problem sets (10 total): 25%
- Reading quizzes: 10%
- Prelims (2 total): 20%
- Final exam: 10%
- Participation: 9%
- Completing course evaluation: 1%
Regrade requests will be handled through the course CMS website. All regrade requests must be submitted within 10 days of receiving the grade. When submitting a regrade request, you must provide detailed reasoning as to why you feel you deserve a regrade. Please be advised that due to the additional scrutiny we will give your submission as a result of the regrade request, the score you received might increase, decrease, or remain unchanged.
Extensions will be granted only in exceptional circumstances, such as documented illness, not for situations such as job interviews or large workloads in other courses. Direct any extension requests to Prof. Knepper via email.
There are two in-class prelims: one on Friday, October 11th, and one on Friday, November 22nd. We do not offer make-up exams, so in order to take the exams, you must attend class on those days. The final exam is take-home and will be released three days prior to its due date (i.e. we will release it Tuesday, December 17th at 9:00am). The exam will be released via CMS, and you will submit your completed exam on CMS, so you do not need to be physically present in Ithaca in order to take the final exam. Regardless of when you start the final exam, its due date (Friday, December 20th at 9:00am) is final; no extensions or exceptions are permitted.
Homeworks will be submitted, and grades returned, through the course CMS website. Late submission of problem sets and coding projects will be accommodated through slip days. A maximum of five slip days may be used by each student through the course of the semester. A slip day allows a homework assignment to be submitted one day later than the deadline without penalty, and they are cumulative. You may use up to three slip days on a single assignment. Any attempt to submit an assignment that uses more than the allotted number of slip days either on one assignment or overall for the semester will result in a zero on that assignment. Sometimes the CMS server is slow to upload assignment submissions, so do not wait until the last minute! If the upload finishes one minute past the deadline, you will incur a full slip day penalty.
All problem set submissions and your final exam submission must be typed and submitted in PDF format. Handwritten submissions will receive a zero. You are encouraged to use LaTeX because it does an excellent job typesetting math. In addition, it is a good tool to have on your resume. We will distribute a LaTeX template for each problem set and the final exam. There are several free services like Overleaf that simplify using LaTeX. Other typesetting tools that output PDF, like Microsoft Word, are also acceptable. Hand-drawn figures should be used sparingly and should be extremely legible.
The reading quizzes are due before each class and are submitted on the CMS website. Once missed, they cannot be made up, even if you join the course late.
Students are expected to follow Cornell’s Code of Academic Integrity which can be found at http://cuinfo.cornell.edu/aic.cfm. The purpose of this code is to provide for an honest and fair academic environment. As such, it should be clear to students what is expected of them in the course (see the collaboration policy) and in case of doubt, students should ask Prof. Knepper. Copying work of others (code and/or text) — or allowing others to copy your work — is considered a violation of Cornell’s code.
Problem Sets. These problem sets are to be submitted individually, but working together in groups of any size is explicitly encouraged. Note that each student is responsible for writing a separate solution to problem sets. No student should ever see another’s solution. Consequently, no two submissions should look identical. Solutions that are too similar may trigger an academic integrity hearing. For all problem sets, you must write the names of the students with whom you collaborated.
Coding Projects. The coding projects can be completed in a group. Project 1 is restricted to a group size of one (i.e. individual). Projects 2–5 will be completed in groups of three students. Groups will be assigned by the course staff. Each group will make a single CMS submission, with all names included. Any kind of collaboration with students outside of your group is prohibited. No code should be shared by any means to anybody outside of your group, except course staff. No student should ever see your screen while code is visible, even if it is just to help with Python syntax. We recommend you consult the internet or seek help from the course staff if you have problems with Python syntax.
We run MOSS on all submissions to check for similarity. On Project 1, suspiciously similar submissions will trigger a warning. On Projects 2–5, excessive similarity of submissions is grounds for an academic integrity hearing. There have been convictions in this course for academic integrity violations in past semesters. It is easy to avoid trouble with academic integrity hearings by not looking at other groups’ code.
Exams. Needless to say, there should be no collaboration of any kind between students during the exams. The two prelims permit students to bring a single letter-size “cheat sheet” of paper. Students may fill it with anything they wish, but each student must prepare their own cheat sheet. Students are not permitted to obtain cheat sheets prepared by others.
Students in this course come from a variety of backgrounds, abilities, and identities. In order to ensure an environment conducive to learning, all members of the course must treat one another and the course staff with respect. If you feel your needs are not being adequately accommodated by the other students or instruction staff, please contact Prof. Knepper.
This course is taught as a standard lecture. Lecture notes (preparatory readings) are distributed on the website in advance of the class, and students are assigned one short reading per class, usually under 10 pages. Students complete a short (1 or 2 question) quiz to check reading comprehension. Classroom activities will comprise lecture and synthesis of information, with some discussion. In addition, homework assignments comprise a mixture of written response and algorithm implementation on a variety of simulations of mobile and manipulator robots. There are two in-class prelims and one take-home final exam.
This course exposes the student to both theoretical and applied aspects of robotics. Students are likely to encounter trouble with various aspects, from clarifications about notation to implementation confusion and problems debugging complex code. The course is designed so that most of the problems you face will be geared towards learning about robotics. The course staff provides a number of tools to help streamline the process particularly in the programming projects. Nevertheless, aspects of the course are very open-ended. Solving open-ended problems is an important job skill, so it is important for the student to strike a balance between trying to solve a problem themselves and seeking help from others.
Before Seeking Help
Please read the documentation about the libraries or function calls you are using. Even if you think you know how to use it properly, go back and re-read the documentation. The answers you seek are usually there.
When confused about the documentation, please ask a substantive and informed question. Saying “I don’t get it” gives the impression that you made zero effort to try to understand it. Instead, let us know what you understand or expect, so that we can help you get the information you really want quickly and efficiently.
If you get an error message or problem you don’t understand, try Googling it before asking for help on Piazza. Chances are, you are not the first to encounter this error. Search for error text strings to find out what causes the error. If you run a command and it doesn’t work, then Google the command and read the documentation. If you don’t understand how to use a service or function call while coding, try Googling the name of it.
We often get questions like “Would this work if I ran it?” Please just try it and see what happens. You won’t break anything, and you can learn a lot by being curious and experimenting.
If you need help debugging a problem with your code, please understand that we expect you to do your due diligence first. You should take several steps to try to narrow down the error yourself before asking for help. These steps can involve logging, adding print statements, or simplifying the code (e.g. if it doesn’t work with 8 turtles, try it with 1 or 2 and see what happens).
If your code is not producing the results you expect, perform some experiments. You can either run the debugger or use print statements. Make a hypothesis about your code (e.g. when the program gets here, the value of x will always be positive) and test it.
We love to see you in our office hours! Office hours are spread throughout the week.
Please follow the Before Seeking Help instructions. Then, if you still need help, please follow these guidelines:
Unless your question requires you to post code, post it publicly to the whole class.
If you need help with a problem, please be as specific as possible when asking a question. Tell us what you did before the problem occurred, what the problem was (include an error message, screenshot, or other details), and tell us what you have already tried to fix it.
If you must post privately because your question involves code or solutions, then post a private message to the entire course staff. Do not address your private post to one specific member of the course staff. It will only delay us getting you an answer.
Course staff will not answer questions that are answered in the syllabus or have been previously answered on Piazza. The staff will mark offending posts to show the answer is already available on Piazza or on the course web site.
If you need help and don’t want to make a public post on Piazza, please make a private post to all of the course staff rather than using email. You will get a quicker response to your question, and we can better balance the workload among the course staff. The only course staff member you should be emailing unsolicited is Prof. Knepper.
Please understand that if you do not follow the above guidelines, we may not answer your question.