ME 449 Robotic Manipulation

From Mech
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Fall Quarter 2020

In Fall 2020, ME 449 will be taught as a hybrid course. Initially, at least, in-person meeting times will be treated as office hours, with a combination of worked examples by the instructors, questions from the class (online or in person), and time to work on assignments with an instructor available if you get stuck. All formal lectures are pre-recorded for viewing any time, and experiments with robots will be in simulation. You do not have to attend in-person meetings for this course, nor do you have to attend online during the course meeting periods, though that would allow you to interact with me and others, live. Advantages of being in person may be a better spatial awareness of your classmates and the instructor, better access to typical social cues that are hard to get through a computer screen, and, as a result, better engagement with others (while respecting social distancing), but there will be no specific material or experiences available only to those who attend in person.

Important Information

  • Zoom meeting info will be emailed and made available in Canvas shortly. All class sessions will be recorded and available in Canvas afterward.
  • The first two class meetings (Sept 16 and 18) will be online only. We will not meet in LR2 until Monday Sept 21. After that, we will evaluate whether an in-person component adds significant value.
  • For ME grad students: currently ME 512 has a conflict with ME 449. For now, make sure you sign up for ME 449, and don't worry about signing up for ME 512. Since there are many students with this conflict, we are looking into a way to resolve it for everyone without you having to get virtual signatures on a form.
  • We will use this wiki, the Canvas page, and Coursera extensively in this course. Since many of the materials of this course are taken from the Modern Robotics specialization on Coursera, you will see a lot of references to "course 1," "the specialization," "week 1," etc. You can ignore those. We are not following the same schedule as used on Coursera, we will not use all the materials on Coursera, and we will have items that are not a part of Coursera. Ignore any automatic emails from Coursera! I can't control those.
  • Although it may be tempting, because most of the materials are already available on Coursera, please do not work more than a week ahead of the posted schedule. For one reason, we may change the content during the course, so your early work may be wasted. For another, you will be out of sync with the content of the class sessions. (On the other hand, make sure you don't fall behind!)

Getting Started

Do the following things as soon as possible:

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.

Class Info

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 projects outside of Coursera, including the capstone project.

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 Schedule

Chapter 2, Configuration Space

  • Fri Sept 18: through Chapter 2.2
  • Mon Sept 21: through Chapter 2.3
  • Wed Sept 23: finish Chapter 2

Chapter 3, Rigid-Body Motions

  • Fri Sept 25: through Chapter 3.2.1
  • Mon Sept 28: finish Chapter 3.2
  • Wed Sept 30: through Chapter 3.3.2
  • Fri Oct 2: finish Chapter 3

Chapter 4, Forward Kinematics (skip section 4.2)

  • Mon Oct 5: finish Chapter 4

Chapter 5, Velocity Kinematics and Statics

  • Wed Oct 7: through Chapter 5.1
  • Fri Oct 9: through Chapter 5.2
  • Mon Oct 12: through Chapter 5.4

Chapter 6, Inverse Kinematics (focus on section 6.2)

  • Wed Oct 14: Chapter 6
  • Fri Oct 16: catch up

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
  • Wed Oct 21: Chapter 8.1.3
  • Fri Oct 23: Chapter 8.2
  • Mon Oct 26: Chapter 8.3 and 8.5

Chapter 9, Trajectory Generation

  • Wed Oct 28: through Chapter 9.3
  • Fri Oct 30: Chapter 9.4
  • Mon Nov 2: catch up, final project
  • Wed Nov 4:

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

  • Fri Nov 6: up to (not including) Chapter 11.2.2.1
  • Mon Nov 9: finish Chapter 11.2.2
  • Wed Nov 11: through Chapter 11.3
  • Fri Nov 13: Chapter 11.4

Chapter 13, Wheeled Mobile Robots (skip section 13.3)

  • Mon Nov 16: through Chapter 13.2
  • Wed Nov 18: Chapter 13.4
  • Fri Nov 20: Chapter 13.5
  • Mon Nov 23:
  • Wed Nov 25:
  • 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 can see the video lectures at the video browser http://modernrobotics.northwestern.edu or using direct links to the videos on YouTube. We will be roughly following the associated courses on Coursera.

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

Student-Created Exercises

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,

  1. Download this .zip file and uncompress it. There are five files: main.tex, prelims.tex, twist-wrench.pdf, table-lamp.PNG, and LampSolution.PNG.
  2. Create an account on Overleaf.
  3. Create a new (blank) project on Overleaf called "exercise."
  4. 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.)
  5. Click on main.tex to see your main LaTeX document.
  6. 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.



Final Project: Mobile Manipulation

The final project, described on this page, is due on Canvas on Monday December 7. 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, 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.
  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. 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).