ME 449 Robotic Manipulation (Archive Fall 2019)
Fall Quarter 2019
- Instructor: Prof. Kevin Lynch
- Meeting: 2:00-2:50, MWF, Tech LR2 (changed from L251)
- Graders: Taosha Fan, Tito Fernandez, Roman Grigorii, Mahdieh Nejati Javaremi
- Office hours: Lynch: Mon, 4-5, Tech B222; TAs: Tues, 3-4:30, Tech B252 (Willens Wing)
- Course website: http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation
- Book website: http://modernrobotics.org
- Click here to enter any questions you have on the lectures or reading that you would like to discuss in class.
Representations of the configuration and spatial motion of rigid bodies and robots based on modern screw theory. Forward, inverse, and differential kinematics. Robot dynamics, trajectory planning, and motion control. Wheeled mobile robots and mobile manipulation.
Linear algebra, first-order linear ODEs, freshman-level physics/mechanics, a bit of programming background.
- 50% quizzes (quizzes will be open book, open notes, any cheat sheets you would like, but no electronics)
- 20% assignments (lowest grade will be dropped)
- 15% final project (due Wed Dec 11, during finals week)
- 10% practice exercise for other students
- 5% engagement: introducing yourself during office hours, answering questions in class, participation in in-class exercises, helping other students in class, participation in Coursera forums
Your lowest assignment grade will be dropped. This policy is meant to handle ALL eventualities and emergencies: travel, job interview, overloaded that week, computer crashed, could not submit on time (even by 30 seconds!), problem with submitting to Canvas, dog ate it, slept in, forgot, busy watching the big game, big party the night before, etc. Please don't ask for an extension or an exception; you've already been granted one! (But only one.)
Course Text and Software
This course uses the textbook Modern Robotics: Mechanics, Planning, and Control, Kevin M. Lynch and Frank C. Park, Cambridge University Press 2017.
Get the book, install and test the Modern Robotics code library, and install and test the CoppeliaSim robot simulator. You will program in Python, Mathematica, or MATLAB in this course.
Approximate Syllabus and Reading
- Chapter 2, Configuration Space (weeks 1-2)
- Chapter 3, Rigid-Body Motions (weeks 2-3)
- Chapter 4, Forward Kinematics (week 4); section 4.2 is optional
- Chapter 5, Velocity Kinematics and Statics (week 5)
- Chapter 6, Inverse Kinematics (week 6); focus on section 6.2
- Chapter 8, Dynamics of Open Chains (weeks 6-7); skip sections 8.4, 8.8, and 8.9
- Chapter 9, Trajectory Generation (week 8); focus on sections 9.1 and 9.4
- Chapter 11, Robot Control (week 9); focus on sections 11.1 through 11.4
- Chapter 13, Wheeled Mobile Robots (week 10); skip section 13.3
Video Lectures and the Flipped Classroom
This course will take advantage of video lectures and lecture comprehension quizzes on Coursera. (You can also see the video lectures, but not the lecture comprehension quizzes, outside Coursera at the video browser http://modernrobotics.northwestern.edu or using direct links to the videos on YouTube.)
You should sign up to audit the following courses on Coursera in advance of our study of them in class. Don't pay; you should start by choosing the 7-day free trial, but then click "audit the course." Auditing the course gives you access to everything except graded assignments and peer-reviewed projects.
- Course 1: Foundations of Robot Motion (Chapters 2 and 3)
- Course 2: Robot Kinematics (Chapters 4, 5, 6, and 7)
- Course 3: Robot Dynamics (Chapters 8 and 9)
- Course 4: Robot Motion Planning and Control (Chapters 10 and 11)
- Course 5: Robot Manipulation and Wheeled Mobile Robots (Chapters 12 and 13)
- Course 6: Capstone Project, Mobile Manipulation
The general flow of the class will be the following:
- Before class, watch the videos, do the lecture comprehension quizzes associated with each video, do the associated reading, and participate in any "discussion prompts" on Coursera. You should plan to bring any questions or confusion to class. In general, I recommend that you first watch the videos to get a quick understanding of the material of the chapter, then follow up by reading the appropriate sections of the book. The videos are short and dense, so don't expect to get by only watching the videos. You will need to read the book, then do the exercises, to gain mastery of the material.
- In class, I will briefly review the lecture comprehension quizzes and the material that was covered, get a little discussion going and take any questions, perhaps work a problem myself, and then ask you to work on a practice exercise either individually or in small groups. If time remains, you may work on homework together. I will be available to help.
- On days when a homework is turned in, I will leave time for any questions about it. On days before a quiz, I will spend as much time reviewing the material covered by the quiz as you would like.
- Quiz 1, 2018
- Quiz 2, 2018: Exercises 4.2, 5.3, 6.1, 8.6, and 8.7 from the practice exercises document.
Bring two printed copies to class Monday Nov 18, for feedback. Turn in the final version online on Wednesday Nov 20 at 1:30 PM, as two files: FamilyName_GivenName.pdf, with the pdf of the exercise and its solution, and FamilyName_GivenName.zip, with all the source files for your exercise taken from Overleaf. Also bring a printout to class on Wed Nov 20. If it is more than one page, staple it.
All students will be responsible for creating a practice exercise, consisting of the exercise and the solution. A good exercise should test an important concept in the context of a real robotics application (e.g., motion planning for a quadrotor, robot localization, computer vision, grasping, etc.), require the learner to understand and apply equations in the book or use the book's software, and require a bit of thought (i.e., not just "plug and chug" questions). For many exercises, a good figure or two is helpful. You could use a figure of a real robot and add your own annotations to it (e.g., frames or objects in its environment), or you could hand-draw something, or you could use CoppeliaSim or other software to help create the figure. You should not confine your question to an application discussed in the textbook. Make your exercise interesting and motivating! Exercises that require synthesizing two or more concepts or equations are more interesting and useful. Think about what kind of exercise would have helped you to really understand the material. Your questions should be very clearly worded, so anyone can understand it without you having to be there to interpret it for them.
You should look at the practice exercise document and end-of-chapter exercises for inspiration, but obviously your exercises should not be copies.
You will create your exercise using LaTeX (pronounced "lay teck" or "lah teck"), the standard for scientific document preparation. Overleaf is a free online implementation of LaTeX. To get started on your exercise,
- Download this .zip file and uncompress it. There are five files: main.tex, prelims.tex, twist-wrench.pdf, table-lamp.PNG, and LampSolution.PNG.
- Create an account on Overleaf.
- Create a new (blank) project on Overleaf called "exercise."
- Upload the five files to this project. (You may get a warning that your default main.tex file is being overwritten; don't worry about it.)
- Click on main.tex to see your main LaTeX document.
- Press the "Recompile" button to see the pdf document that is compiled from the five files. You can download the pdf file, or all the "source" files, by clicking on "Menu" and choosing which to download. This is the .pdf file you should have created.
main.tex is the main file of the project, and the only one that you will edit, so you should understand what is going on in that file. prelims.tex tells LaTeX what packages to use and defines some macros, e.g., \twist creates and \wrench creates . The other three files are image files that get included in the document. You will create different image files depending on your exercise. For example, you can make a nice hand drawing and then scan it.
To learn more about typesetting in LaTeX, google is your friend! Try googling "latex math" or "latex math symbols," for example.
You will turn in the source for your exercise as a zip file, as well as the final pdf file.
The final student assignments to topics is given below:
Assignments are graded based on correctness, how well you organize your homework (it should be easy to understand your thinking and easy to find your responses), and how well you follow the submission instructions below. You will lose points if you don't follow these instructions.
You will not receive credit if you just give an answer. Your solution must demonstrate how you got the answer. It must be easy to follow.
If you ever think a problem is stated incorrectly, not enough information is given, or it is impossible to solve, don't panic! Simply make a reasonable assumption that will allow you to solve the problem (but clearly state what this assumption is), or indicate why it is not possible to solve the problem.
Instructions for uploading assignments to Canvas:
- Upload on time! Late submissions are not accepted under any circumstances. See the policy on dropping the lowest assignment grade under "Grading" above. The cutoff time is 30 minutes before class the day the assignment is due.
- For every assignment, you should upload exactly one pdf file, named FamilyName_GivenName.pdf. This pdf file should have answers to all the questions, including screen shots, text logs of code running, etc. Always include output of your code running on the exercises, so the grader can see what you got when you ran your code. You may scan handwritten solutions (provided they are neat!), but in any case, all answers should be in a single pdf file. DO NOT UPLOAD SCANS AS JPGS! THEY MUST ALL BE COMPILED INTO A SINGLE PDF FILE.
- If required by the assignment (e.g., if you wrote code), in addition to the pdf file above, you should provide a zip file including all source code in their original forms, such as .m, .py, or .nb. This zip file should be named FamilyName_GivenName.zip. Always create a script (for example, titled exercise6-9) that the grader can easily invoke to run your code for a particular exercise. Don't expect the grader to search through your code to find sample code to cut-and-paste. Make it as easy as possible for the grader (you can include a "README.txt" file in your zip file, for example, to tell the grader how everything works).
- Assignment 1, due 30 minutes before class on Canvas, Wed Oct 9. Exercises 2.1, 2.4, 2.5, 2.9(c) (mechanism (c) from Fig 2.18), 2.20, 2.31, 3.1, and 3.5.
- Assignment 2, due 30 minutes before class on Canvas, Wed Oct 16. Exercises 3.16, 3.26, 3.31, 4.2, 4.5, and 4.6.
- Assignment 3, due 30 minutes before class on Canvas, Wed Oct 23. Exercises 5.3(a,c,d,e) and 5.26.
- Assignment 4, due 30 minutes before class on Canvas, Wed Oct 30. The programming assignment described here.
- Assignment 5, due 30 minutes before class on Canvas, Wed Nov 6. This assignment makes use of (approximate) dynamic parameters for the UR5 robot, given in MATLAB, Mathematica, and Python form.
Final Project: Mobile Manipulation
The final project, described on this page, is due on Canvas at 1:30 PM Wednesday December 11 (finals week). Reminders:
- Read and follow closely the instructions on what to submit! If you are missing requested files, or if you use a different directory structure, you will lose points. Make sure your top-level README file is clear on what you've done and what you've submitted.
- If your code does not work well, please describe the remaining issues in your README file. Don't gloss over them or only provide examples where the code works well if the code does not work well for other example problems. Otherwise, if the graders find problems with your software, you will not receive credit for having identified them yourself.
- You can get up to 10 pts of extra credit for correctly implementing joint-limit avoidance (so the robot links and chassis do not self-intersect) and singularity avoidance (e.g., using joint limits that keep the arm in a portion of its workspace where it does not encounter any singularities). If you implement these, it is best to submit examples of your code solving the same problem two ways---not using joint-limit avoidance and using it---so the usefulness of the joint-limit avoidance is apparent.
- Make sure to keep your problem inputs separate from the code. The exact same code should solve all your problem instances; you shouldn't have different copies of your code for different problem inputs. You could have an input file for each of your examples (e.g., bestScript, overshootScript, newTaskScript) which defines the inputs (e.g., block configurations, controller gains, initial robot configuration) and invokes your code. Then a grader just needs to invoke those scripts to verify your results. (If you implemented joint-limit avoidance, this could just be one of your inputs, e.g., a variable called "avoidJointLimits" which is 0 if you don't care about avoiding joint limits and 1 if you do.)
- Make sure your videos are good quality. They shouldn't be too fast (at least 5 seconds long) or low resolution. The motion should be smooth.
- If your code is written in python, indicate which version of python should be used.
- If you submit your code as part of the MR library, make it easy for the grader to find your code (e.g., collect it all in one place and indicate in the code or your README where to find it).
The course calendar, including video lecture and reading assignments due before each class.