ME 449 Robotic Manipulation

From Mech
Revision as of 15:20, 15 September 2021 by Lynch (talk | contribs) (→‎Grading)
Jump to navigationJump to search

Fall Quarter 2021

Supportive Class Environment

All members of this class (instructors, TAs, students) are expected to contribute to a respectful, inclusive, and supportive environment for every other member of the class.

We are partners in your education; help me help each of you get the most out of this class. Please engage as much as possible during our class meetings!

Honor Code

By far the most important purpose of this course is to prepare you for further study, or employment, in the field of robotics! But of course it is also our duty to provide a fair evaluation of your performance. You are encouraged to discuss the material with the instructor, course assistants, and your classmates, but you are not allowed to share your answers or code with others. Anyone asking for answers or code, or providing answers or code, or becoming aware of others doing so without reporting to the instructor, is considered in violation of the honor code.

Other Syllabus Statements

Here you can find other syllabus statements regarding academic integrity (do not submit work that is not your own), accessibility, COVID-19 classroom expectations, COVID-19 testing for unvaccinated students, class modality, class recordings, prohibition of recordings of class sessions by students, and wellness and mental health. By university policy, any student not vaccinated against COVID-19 must be tested for COVID-19 twice per week.

Getting Started

Do the following things as soon as possible:

Course Summary

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.

Prerequisites

Linear algebra, first-order linear ODEs, freshman-level physics/mechanics, a bit of programming background.

Grading

50% of your final grade will be from your Coursera grades (which I expect to be near perfect) and 50% from quizzes and assignments outside of Coursera. There will be four assignments outside of Coursera. <-- , with the following weights:

  • Assignment 1: 5% of your total grade
  • Assignment 2: 10% of your total grade
  • Assignment 3: 10% of your total grade
  • Capstone: 25% of your total grade (5% milestone 2, 20% final submission)

-->

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. If you find an error or typo in the book, please report it here.

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.

Here is a linear algebra refresher appendix to accompany the book.

Approximate Syllabus and Schedule

Here is a summary of the structure of the course:

  • Before most classes, you will watch the associated videos on Coursera and answer the "lecture comprehension" quizzes. (Designed to be relatively quick, to solidify your understanding.)
  • You are encouraged to read the corresponding portions of the textbook after watching the videos. I suggest you watch first, then read, then possibly re-watch, but you can determine what works best for your learning style.
  • During the class period after those videos, I will typically summarize what we learned, work a problem, take any questions you have about the material, and possibly assign you a problem to work on.
  • We have two kinds of quizzes on Coursera: "lecture comprehension" quizzes, which are short and immediately follow lectures, and summative quizzes, which are usually longer assessments/assignments at the middle or end of a chapter. All quizzes are required and have an impact on your grade. You are requested to stick (at least approximately) to the schedule posted below, but there will be no penalty if a quiz is submitted late.
  • Within Coursera we also have "discussion prompts," open-ended group questions that you should reply to (responses can be simple) and forums where you can post questions and reply to other students' questions.
  • We also have a few assignments, including the student-created exercise and the capstone programming project, that will be submitted through Canvas instead of Coursera. More information is forthcoming.

Below is the approximate syllabus and schedule. Next to each date is the Coursera material that should have been covered before that class.

Chapter 2, Configuration Space

  • Fri Sept 18: through Chapter 2.2 (dof of a robot, 3 videos)
  • Mon Sept 21: through Chapter 2.3 (c-space topology and representation, 2 videos)
  • Wed Sept 23: finish Chapter 2 (configuration and velocity constraints, task space and workspace, 2 videos)

Chapter 3, Rigid-Body Motions

  • Fri Sept 25: through Chapter 3.2.1 (rotation matrices SO(3), 3 videos)
  • Mon Sept 28: finish Chapter 3.2 (angular velocities, so(3), exponential coordinates, 3 videos)
  • Wed Sept 30: through Chapter 3.3.2 (transform matrices SE(3) and twists, 3 videos)
  • Fri Oct 2: finish Chapter 3 (se(3), exponential coordinates and wrenches, 2 videos)

Chapter 4, Forward Kinematics (skip section 4.2 on URDF)

  • Mon Oct 5: finish Chapter 4 (product of exponentials formula, space and e-e frame, 3 videos)

Chapter 5, Velocity Kinematics and Statics

  • Wed Oct 7: through Chapter 5.1 (space Jacobian, body Jacobian, 3 videos)
  • Fri Oct 9: through Chapter 5.2 (statics of open chains, 1 video)
  • Mon Oct 12: through Chapter 5.4 (singularity analysis, manipulability, 2 videos)

Chapter 6, Inverse Kinematics (focus on section 6.2)

  • Wed Oct 14: Chapter 6 (numerical inverse kinematics, 3 videos)
  • Fri Oct 16: catch up (this class will basically be an office hour)

Chapter 8, Dynamics of Open Chains (skip sections 8.4, 8.7, 8.8, and 8.9)

  • Mon Oct 19: through Chapter 8.1.2 (Lagrangian dynamics, 2 videos)
  • Wed Oct 21: Chapter 8.1.3 (understanding the mass matrix, 1 video)
  • Fri Oct 23: Chapter 8.2 (dynamics of a single rigid body, 2 videos)
  • Mon Oct 26: Chapter 8.3 and 8.5 (Newton-Euler inverse dynamics, forward dynamics, 2 videos)

Chapter 9, Trajectory Generation

  • Wed Oct 28: through Chapter 9.3 (point-to-point trajectories, polynomial via point trajectories, 3 videos)
  • Fri Oct 30: Chapter 9.4 (time-optimal time scaling, 3 videos)
  • Mon Nov 2: catch up
  • Wed Nov 4: final project

Chapter 11, Robot Control (focus on sections 11.1 through 11.4)

  • Fri Nov 6: up to (not including) Chapter 11.2.2.1 (linear error dynamics, 3 videos)
  • Mon Nov 9: finish Chapter 11.2.2 (first- and second-order error dynamics, 2 videos)
  • Wed Nov 11: through Chapter 11.3 (motion control with velocity inputs, 3 videos)
  • Fri Nov 13: Chapter 11.4 (motion control with torque or force inputs, 3 videos)

Chapter 13, Wheeled Mobile Robots (skip section 13.3)

  • Mon Nov 16: through Chapter 13.2 (omnidirectional wheeled mobile robots, 3 videos)
  • Wed Nov 18: Chapter 13.4 (odometry, 1 video)
  • Fri Nov 20: Chapter 13.5 (mobile manipulation, 1 video)
  • Mon Nov 23:
  • Wed Nov 25: CLASS CANCELED (unless popular demand!)
  • Mon Nov 30: wrap-up
  • Mon Dec 7: Capstone project due

Video Lectures and the Flipped Classroom

This course will take advantage of video lectures. You will watch the videos on Coursera, but you also can see the video lectures at the video browser http://modernrobotics.northwestern.edu or using direct links to the videos on YouTube.

The general flow of the class will be the following:

  • Before class, watch the videos, take the lecture comprehension quizzes associated with each video, and do the associated reading. 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 usually briefly review lecture comprehension quizzes, work an example problem, take questions, and be available as you work on assignments.


Practice Exercises

Sample exercises and their solutions, useful for practicing your understanding of the material.

Practice Quizzes



Assignments

As mentioned above, in the Honor Code: You are encouraged to discuss the material with the instructor, course assistants, and your classmates, but you are not allowed to share your answers or code with others. Anyone asking for answers or code, or providing answers or code, or becoming aware of others doing so without reporting to the instructor, is considered in violation of the honor code.

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.
  • For every assignment, you should upload exactly one pdf file, named FamilyName_GivenName_asst#.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, in addition you may be asked to 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_asst#.zip. Always create a script 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). Your code should be commented well enough that it is easy for someone else to pick it up and understand more or less how it works.

Assignment 1, due 1 PM CDT Thursday October 8 on Canvas.

Assignment 2, due 1 PM CDT Thursday October 22 on Canvas.

Assignment 3, due 1 PM CST Thursday November 5 on Canvas. (With the automatic one-day extension, it is now due at 1 PM CST Friday November 6 on Canvas. No assignment will be accepted after that time.)


Final Project: Mobile Manipulation

Office hours for capstone: We will have office hours at the normal times (Tues 9 AM, Wed 7:30 PM) on Dec 1 and 2 during finals week, and one bonus office hour at 9 AM CDT Friday Dec 4. The Dec 4 office hour will be in our class Zoom room.

The final project is described on this page.

  • Due Monday November 16 at 1:00 PM on Canvas (extended from Nov 12): Milestone 2. (You will do milestone 2 first! Milestone 1 will come next.) You will turn in a single zip file named FamilyName_GivenName_milestone2.zip with your solution to milestone 2. The zip file should include a README.pdf file with a brief summary of your solution and how to use it, and if your code is not working properly, it should correctly point out the problems. The zip file should also include a directory with the commented code you wrote, including a cut-and-pastable comment at the beginning showing how to execute the code to generate the csv file included in the submission; a CoppeliaSim video showing your reference trajectory of the end-effector (similar to this video); and the csv file that your code generated to create the video.
  • Due Monday December 7 at 1:00 PM on Canvas: The entire final writeup, as described at this page, in a single zip file named FamilyName_GivenName_capstone.zip.

Reminders:

  1. 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.
  2. 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.
  3. 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, you should 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. Also, your README file should clearly describe your approach to solving joint-limit and singularity avoidance.
  4. 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.)
  5. 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.
  6. If your code is written in Python, indicate which version of Python should be used.
  7. Only submit the code that you wrote. DO NOT submit MR library functions. The TAs will test your code using the MR library functions imported into MATLAB or Python as appropriate.