Difference between revisions of "ME 449 Robotic Manipulation"

From Mech
Jump to navigationJump to search
 
(436 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''Fall Quarter 2017'''
'''Fall Quarter 2025'''


* Instructor: Prof. Kevin Lynch
* Instructor: Prof. Kevin Lynch
* Course assistant: Yifei Chen, YifeiChen2026@u.northwestern.edu
* Meeting: 2:00-2:50, MWF, Abbott Auditorium Pancoe
* Zoom office hours (see Canvas for links): Monday 3-4 pm (Lynch); Thursday 10-11 am (Chen); Friday 10-11 am (Chen)
* TAs: Huan Weng, HuanWeng2015@u.northwestern.edu, and Taosha Fan, TaoshaFan2015@u.northwestern.edu
* Office hours: Tech B222, MW 3-4 (Lynch), Tech A211 Tues 2-3:30 (Weng or Fan)
* Meeting: 2:00-2:50, MWF, '''Tech L361''' (first meeting: Wed Sept 17)
* course website: http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation
* Course website: [http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation]
* Book website: [http://modernrobotics.org http://modernrobotics.org]
* '''[https://docs.google.com/forms/d/e/1FAIpQLSej7E9AaYomOEi5ToiNVum-_H7XdaJZ95Va__AIBPnB0xXZyg/viewform?usp=sf_link Click here to enter any questions you have on the lectures or reading that you would like to discuss in class.]'''


'''Supportive Class Environment'''
==Course Summary==


All members of this class (instructors, course assistants, students) are expected to contribute to a respectful, inclusive, and supportive environment for every other member of the class.
Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.


We are ''partners'' in your education; help us help you get the most out of this class. Please engage as much as possible during our class meetings!
==Grading==
* 50% exams
* 35% assignments (HWs, video/reading comprehension "quick quizzes"; low scores dropped)
* 10% student lecture and learning materials
* 5% engagement, providing helpful feedback to other students, and student-assigned in-class projects


'''Honor Code'''
==Course Text and Software==


You are encouraged to discuss the material with the instructor, course assistants, and your classmates, but you are not allowed to copy answers or code from others in the class or other sources, nor are you allowed to share your answers or code with others. If you use generative AI to help you with your work, you are obligated to cite the source and nature of the help; for example, if you turn in code generated in whole or in part by generative AI, you must cite the AI software in the comments, and you are required to understand how and why the code works. (Note also that electronics are not available during tests, so submitting code you do not understand will not help you prepare for tests.) ''Anyone copying answers or code, or providing answers or code, or becoming aware of others doing so without reporting to the instructor, is in violation of the honor code.''
All of these resources are available at [[Modern_Robotics|'''the homepage for the book''']].


'''Northwestern University Syllabus Standards'''
* Get the book. Purchase the printed book, published by Cambridge University Press, or download the preprint version of the book.
* [https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']
* [http://www.coppeliarobotics.com/ '''Download the V-REP robot simulator.'''] After you've installed it, choose "File > Open scene..." and open any of the scenes. Press the "Play" button and verify that the simulator is working. [[V-REP_Introduction|'''Click here for information about the simulator, and the ME 449 scenes for the UR5 and youbot mobile manipulator.''']]


This course follows the [https://www.registrar.northwestern.edu/registration-graduation/northwestern-university-syllabus-standards.html Northwestern University Syllabus Standards]. Students are responsible for familiarizing themselves with this information.
==Video Lectures==


'''Getting Started'''
Video supplements to the reading can be found at [http://modernrobotics.northwestern.edu '''http://modernrobotics.northwestern.edu''']. If you prefer to watch the videos as playlists in the youtube environment, you can [[Modern_Robotics_Videos|'''go here instead''']]. These links are also available from the [[Modern_Robotics|'''book's homepage''']].


Do the following things as soon as possible:
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 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.


* [[Modern Robotics#Book|Buy the book "Modern Robotics" or download the free electronic preprint version]]. (Though the Cambridge-published print version is the "official" version, the differences are mostly layout and either will work for this course.)
==Student Lectures==
* [[Getting Started with the Modern Robotics Code Library|Download the Modern Robotics software]]. You can program in Python, MATLAB, or Mathematica. Most students use Python or MATLAB, but any of these is fine.
* [[Getting Started with the CoppeliaSim Simulator|Download, install, and test the CoppeliaSim robot simulation software.]]
* Accept your invitation to the Coursera course.


==Course Summary==
Each student will work in a small team to deliver one lecture during the quarter. Your lecture should not be too similar to the video lectures already online. The main purposes of the student lectures are
* To provide your fellow students another perspective, other than my own, on the material. Maybe your way of explaining it will be more intuitive than mine, at least for some people. Unlike my lectures, which cover a lot of ground quickly, your lecture should have at least one worked example and slow things down a bit. You don't have to cover '''all''' topics of the videos and reading that were due for that day. You can choose one or a subset of topics and slow down. You can even choose a topic in that day's reading that is not covered in the videos.
* To generate new learning materials that others can benefit from. These could be posted to the book website (e.g., worked exercises, videos, etc.).
* To have you take ownership of your learning. There is no better way to learn the material than to figure out how to teach it.


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.
On a student lecture day, this is a general (but flexible) guideline:
* 5 minutes for the video/reading comprehension "quick quiz."
* 15 minutes lecture. How you do your lecture is up to you, but everyone in the lecture team should be involved. You could make a video and then play it in front of the class, and then take questions. You could write on the chalkboard. You could use props, or videos you find online, or animations you make. You could ask questions and involve the class. You should work through at least one example or exercise that you create (not one from the book) that makes some of the concepts concrete. An ideal lecture would be engaging and informative.
* 5 minutes of constructive feedback from the class (what worked well, what could have been clearer, but always constructive).
* 25 minutes of the class working in small groups on an assignment you give. Ideally the assignment would be interesting and challenging, and would elicit questions if students don't fully understand the material. Students do not necessarily have to be able to get a "right" answer in the timeframe of the class; the assignment should just help them to learn. The assignment cannot be taken from the book. The student lecturers and the instructors will circulate and help the small groups. Small groups of students will turn in their group work at the end of class. Each assignment should have the names of the group members who worked on it.


==Prerequisites==
After your lecture, within one week your lecture team should provide me with:
* [Whole team] A video of your lecture. You should arrange for a classmate to take a video of your lecture (e.g., with a cell phone propped up against books, so it doesn't move). Then post the lecture to YouTube and send me the link. You can keep the video private or you can make it public; up to you.
* [Whole team] An electronic version of your in-class assignment with solution, suitable for posting to the website. A pdf file is probably the best format.
* [Each member of the team] Each member of the team should confidentially email me a fair self-assessment of each individual's contribution to the lecture. You get 10 points to assign for each member of the team, so if your team has 3 students, you have 30 points to assign. Ideally your distribution would be 10/10/10. If one student did not contribute much, the distribution might be 12/12/6, or if one student did most of the work, it might be 16/7/7. In either of these cases, a '''brief''' explanation would be helpful. These are just to help me understand how the team functioned.
* Anything else. This will likely be nothing in most cases, but maybe you found a useful website you'd like to share, or created some MATLAB code you'd like to share, etc.


Linear algebra, first-order linear ODEs, freshman-level physics/mechanics, a bit of programming background.
I encourage you to meet with me during office hours if you have any questions or if you'd like to discuss your ideas for your lecture.


==Grading==
==Approximate Syllabus and Reading==


30% of your final grade will be from your Coursera grades (which I expect to be nearly perfect), 30% from assignments outside of Coursera, 20% from quiz 1, and 20% from quiz 2.
* 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


==Course Text and Software==
==Assignments==


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 '''[http://hades.mech.northwestern.edu/index.php/Modern_Robotics_Errata report it here].'''
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.


[[Coursera_Resources#Things_you_should_complete_before_taking_any_course|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.
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.


'''[[Modern Robotics Linear Algebra Review|Here is a linear algebra refresher appendix to accompany the book.]]'''
'''Instructions for uploading assignments to Canvas:'''


==Approximate Syllabus and Schedule==
0. '''Upload on time! Late submissions are not accepted.''' The cutoff time is 30 minutes before class the day the assignment is due.


Here is a summary of the structure of the course. '''All items are due 30 minutes before the associated class time (1:30 PM Central). The deadlines are controlled by Coursera, so do not be late!''' You may work ahead if you wish, but then you won't get as much out of the classes.
1. Only upload one zip file or rar file for each assignment;
* Coursera refers to "weeks," but ignore this; our course modules are not a week long.
* Before some classes, you should complete a quiz on earlier material.
* Before most classes, you will watch the associated videos on Coursera and answer the "lecture comprehension" (LC) questions. (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''' you watch 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.
* There are two kinds of assessments on Coursera (Coursera refers to both of them as "quizzes"): "lecture comprehension" questions (LCs), which are short and immediately follow lectures, and summative quizzes, which are usually longer assessments/assignments occurring at the middle or end of a chapter.
* Within Coursera there are also "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.
* Assignments outside Coursera will be submitted through Canvas.


Below is the approximate syllabus and schedule. Next to each date is the Coursera material that should have been covered '''at least 30 minutes before''' that class. "LC" refers to brief lecture comprehension questions that should be completed before that class, and "quiz" is a longer summative quiz on earlier material.
2. In your zip file or rar file, include all source codes in their original form, such as .cpp, .m, .py, .nb.


'''Chapter 2, Configuration Space'''
3. If there is a demo, combine the screen shots into one SEPARATE pdf file, OR, show the results in one SEPARATE .txt file (DON'T show them in your source code file format, e.g. .nb file), and include it in the zip file (or rar file).
* Wed Sept 17: welcome to the course and syllabus review; intro to Coursera. '''The schedule for completing Coursera items is set by this wiki!'''
* Fri Sept 19: check for working CoppeliaSim implementation and summarize installation process for each OS; make sure Coursera invitation is accepted; material through Chapter 2.2 (3 videos and 2 LCs on dof of a robot) '''[[Media:MRslides-ch02a.pdf|CLASS SLIDES]]'''
* Mon Sept 22: meet the class; and material through Chapter 2.3 (quiz, Chapter 2 through 2.2; 2 videos and 2 LCs on C-space topology and representation) '''[[Media:MRslides-ch02b.pdf|CLASS SLIDES]]'''
* Wed Sept 24: '''ASST 1 HAS BEEN POSTED.''' Finish Chapter 2 (2 videos and 2 LCs on configuration and velocity constraints, task space and workspace) '''[[Media:MRslides-ch02c.pdf|CLASS SLIDES]]'''
'''Chapter 3, Rigid-Body Motions'''
* Fri Sept 26: through Chapter 3.2.1 (quiz, Chapter 2.3 through 2.5; 3 videos and 3 LCs on rotation matrices SO(3)) '''[[Media:MRslides-ch03a.pdf|CLASS SLIDES]]'''
* Mon Sept 29: finish Chapter 3.2 (3 videos and 3 LCs on angular velocities, so(3), exponential coordinates) '''[[Media:MRslides-ch03b.pdf|CLASS SLIDES]]'''
* Wed Oct 1: New material: through Chapter 3.3.2 (quiz, Chapter 3 through 3.2; 3 videos and 3 LCs on transform matrices SE(3) and twists) '''[[Media:MRslides-ch03c.pdf|CLASS SLIDES]]'''
* Fri Oct 3: finish Chapter 3 (2 videos and 2 LCs on se(3), exponential coordinates, and wrenches) '''[[Media:MRslides-ch03d.pdf|CLASS SLIDES]]'''
'''Chapter 4, Forward Kinematics (skip section 4.2 on URDF)'''
* Mon Oct 6: finish Chapter 4 (quiz, Chapters 3.3 and 3.4; 3 videos and 3 LCs on product of exponentials formula, space and e-e frame) '''[[Media:MRslides-ch04a.pdf|CLASS SLIDES]]'''
'''Chapter 5, Velocity Kinematics and Statics'''
* Wed Oct 8: '''ASST 1 DUE 1:30 PM'''. New material: through Chapter 5.1 (quiz, Chapter 4; 3 videos and 3 LCs on space Jacobian, body Jacobian) '''[[Media:MRslides-ch05a.pdf|CLASS SLIDES]]'''
* Fri Oct 10: New material: through Chapter 5.2 1 video and 1 LC on statics of open chains) '''[[Media:MRslides-ch05b.pdf|CLASS SLIDES]]'''
* Mon Oct 13: through Chapter 5.4 (2 videos and 2 LCs on singularity analysis, manipulability) '''[[Media:MRslides-ch05c.pdf|CLASS SLIDES]]'''
'''Chapter 6, Inverse Kinematics (focus on section 6.2)'''
* Wed Oct 15: Chapter 6 (quiz, Chapter 5; 3 videos and 3 LCs on numerical inverse kinematics) '''[[Media:MRslides-ch06a.pdf|CLASS SLIDES]]'''
'''Chapter 8, Dynamics of Open Chains (skip sections 8.4, 8.7, 8.8, and 8.9)'''
* Fri Oct 17: through Chapter 8.1.2 (quiz, Chapter 6; 2 videos and 2 LCs on Lagrangian dynamics) '''[[Media:MRslides-ch08a.pdf|CLASS SLIDES]]'''
* Mon Oct 20: New material: Chapter 8.1.3 (1 video and 1 LC on understanding the mass matrix) '''[[Media:MRslides-ch08b.pdf|CLASS SLIDES]]'''
* Wed Oct 22: '''QUIZ 1''', chapters 2-5 (no electronic devices allowed [calculator, laptop, tablet, etc.]; study sheets and book allowed) '''[[Media:ME449-midterm-2022.pdf|2022 midterm]]''' and '''[[Media:ME449-midterm-solutions-2022.pdf|solutions]]''' (average score 22.9/32); '''[[Media:ME449-midterm-2023.pdf|2023 midterm]]''' and '''[[Media:ME449-midterm-solutions-2023.pdf|solutions]]'''; '''[[Media:ME449-midterm-2024.pdf|2024 midterm]]''' and '''[[Media:ME449-midterm-solutions-2024.pdf|solutions]]'''
* Fri Oct 24: Chapter 8.2 (2 videos and 2 LCs on dynamics of a single rigid body) '''[[Media:MRslides-ch08c.pdf|CLASS SLIDES]]'''
* Mon Oct 27: Chapter 8.3 and 8.5 (2 videos and 2 LCs on Newton-Euler inverse dynamics, forward dynamics; quiz, Chapter 8 through 8.3) '''[[Media:MRslides-ch08d.pdf|CLASS SLIDES]]'''
'''Chapter 9, Trajectory Generation'''
* Wed Oct 29: New material: through Chapter 9.3 (3 videos and 3 LCs on point-to-point trajectories, polynomial via point trajectories) '''[[Media:MRslides-ch09a.pdf|CLASS SLIDES]]'''
* Fri Oct 31: <!--'''ASST 2, DUE 1:30 PM'''. -->Chapter 9.4 (quiz, Chapter 9 through 9.3; 3 videos and 3 LCs on time-optimal time scaling) '''[[Media:MRslides-ch09b.pdf|CLASS SLIDES]]'''
* Mon Nov 3: Chapter 9.4 recap.
* Wed Nov 5: Final project discussion
'''Chapter 11, Robot Control (focus on sections 11.1 through 11.4)'''
* Fri Nov 7: <!--'''ASST 3, DUE 1:30 PM.''' -->New material: up to (not including) Chapter 11.2.2.1 (quiz, Chapter 9.4; 3 videos and 3 LCs on linear error dynamics) '''[[Media:MRslides-ch11a.pdf|CLASS SLIDES]]'''
* Mon Nov 10: finish Chapter 11.2.2 (2 videos and 2 LCs on first- and second-order error dynamics) '''[[Media:MRslides-ch11b.pdf|CLASS SLIDES]]'''
* Wed Nov 12: through Chapter 11.3 (3 videos and 3 LCs on motion control with velocity inputs) '''[[Media:MRslides-ch11c.pdf|CLASS SLIDES]]'''
* Fri Nov 14: Chapter 11.4 (quiz, Chapter 11 through 11.3; 3 videos and 3 LCs on motion control with torque or force inputs) '''[[Media:MRslides-ch11d.pdf|CLASS SLIDES]]'''
'''Chapter 13, Wheeled Mobile Robots (skip section 13.3)'''
* Mon Nov 17: <!--'''FINAL PROJECT MILESTONE 2, DUE 1:30 PM'''. -->New material through Chapter 13.2 (quiz, Chapter 11.4; 3 videos and 3 LCs on omnidirectional wheeled mobile robots) '''[[Media:MRslides-ch13a.pdf|CLASS SLIDES]]'''
* Wed Nov 19: Chapter 13.4 (quiz, Chapter 13 through 13.2; 1 video and 1 LC on odometry) '''[[Media:MRslides-ch13b.pdf|CLASS SLIDES]]'''
* Fri Nov 21: Chapter 13.5 (1 video and 1 LC on mobile manipulation) '''[[Media:MRslides-ch13c.pdf|CLASS SLIDES]]'''
* Mon Nov 24: Wrapping up
* '''NO CLASS WED NOV 26 AND FRI NOV 28 (HAPPY THANKSGIVING!)'''
* Mon Dec 1: Final review.
* Wed Dec 3: In-class work on final project; Q&A on final.
* Fri Dec 5: '''QUIZ 2'''


==Practice Exercises==
4. Always include output of your code running on the exercises, particularly in case the grader has problems running your code. Also, always create a script (for example, titled ex6-9 or something) that the grader can easily invoke for each 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" file in your solutions, for example).
[[Modern_Robotics#Useful_Supplemental_Documents|Sample exercises and their solutions, useful for practicing your understanding of the material.]]


== Practice Tests ==
5. Please name the upload file in the following format: LastName_FirstName.zip.
* [[Media:ME449-midterm-2024.pdf|2024 midterm]] and [[Media:ME449-midterm-solutions-2024.pdf|2024 midterm solutions]]
* [[Media:ME449-midterm-2023.pdf|2023 midterm]] and [[Media:ME449-midterm-solutions-2023.pdf|2023 midterm solutions]]
* [[Media:ME449-midterm-2022.pdf|2022 midterm]] and [[Media:ME449-midterm-2022-solutions.pdf|2022 midterm solutions]]
* [[Media:ME449-quiz1-solutions-2019.pdf|Quiz 1, 2019]]
* Quiz 2, 2018: Exercises 4.2, 5.3, 6.1, 8.6, and 8.7 from [[Modern_Robotics#Useful_Supplemental_Documents|the practice exercises document]].
* [[Media:ME449-quiz1-2018.pdf|Quiz 1, 2018]]


==Assignments==
==Detailed Syllabus (Under Construction)==
[https://docs.google.com/spreadsheets/d/1jWd_POLlQYxQLv1Igv-eVmORdtEcLi0mU_rVLkNguYI/edit?usp=sharing '''Click here for a graphical view of the class schedule, including student lectures.''']


'''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.
Homeworks are due at the beginning of class every Wednesday, unless otherwise noted. You will watch the videos and do the reading in advance of class using the material, as noted in the syllabus below. A typical weekly schedule will consist of:
: M: Video/reading comprehension quick quiz and help with homework.
: W: Video/reading comprehension quick quiz, homework solutions, plus '''EITHER''' student lecture '''OR''' quiz preparation.
: F: Video/reading comprehension quick quiz plus '''EITHER''' student lecture '''OR''' quiz.


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. If more detailed submission instructions are given with a particular assignment, make sure to follow those, too.
'''Class 1''' (W 9/20)
: Welcome to the course and course website. Structure of the course (HW due Wed, student-generated lectures and learning materials, in-class assignments, feedback on student lectures, occasional Friday quizzes). Book, software, (lack of) D-H parameters, syllabus, V-REP simulator, office hours.


'''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.'''
At home:
: Videos: first 3 videos of Chapter 2, through Chapter 2.2
: Reading: Chapters 2.1 and 2.2
: Software: download github software with book, install V-REP and verify that you can use Scenes 1 and 2 (the UR5)
: '''HW1, due 1:30 PM 9/27''': Exercises 2.3, 2.9, 2.20, 2.29. Also, create your own example system with closed loops, something not in the book, and solve for the degrees of freedom using Grubler's formula. Make it something that exists or occurs in common experience, not necessarily a robot. Imagine using it to teach someone about Grubler's formula.


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.
'''Class 2''' (F 9/22)
: Quick quiz
: Sample student lecture


'''Instructions for uploading assignments to Canvas:'''
At home:
: Videos: 2 videos on Chapter 2.3
: Reading: Chapter 2.3

'''Class 3''' (M 9/25)
: Quick quiz
: Bring your laptop, demo V-REP UR5 scenes
: Help with HW

At home:
: Videos: 2 videos, Chapter 2.4 and 2.5
: Reading: Chapters 2.4 and 2.5
: Turn in HW1

'''Class 4''' (W 9/27)
: Quick quiz
: Solutions to HW1; student examples of Grubler's formula

At home:
: Videos: first 3 videos of Chapter 3, through Chapter 3.2.1
: Reading: through Chapter 3.2.1
: '''HW2, due 1:30 PM 10/4''':
:: 1) Exercise 3.1, except the y_a axis points in the direction (1,0,0).
:: 2) Exercise 3.2, except p = (1,2,3).
:: 3) Exercise 3.5.
:: 4) Exercise 3.9.
:: 5) In Figure 1.1(a) of the book is an image of a UR5 robot, with a frame at its base and a frame at its end-effector. Eyeballing the end-effector frame, approximately write the rotation matrix that represents the end-effector frame orientation relative to the base frame. Your rotation matrix should satisfy the properties of a rotation matrix (R^T R = I, det(R) = 1). The x-axes are in red, the y-axes are in green, and the z-axes are in blue.
:: 6) Write a program that takes a set of exponential coordinates for rotation from the user as input. It then prints out the following: (a) the corresponding unit rotation axis and the angle of rotation about that axis; (b) the so(3) 3x3 matrix representation of the exponential coordinates; (c) the 3x3 SO(3) rotation matrix corresponding to the exponential coordinates; (d) the inverse of the rotation matrix from (c); (e) the 3x3 so(3) matrix log of the matrix from (d); and (f) the corresponding exponential coordinates for the so(3) matrix (e). Use the code from the book and write your program in Mathematica, MATLAB, or Python. Turn in your code and the output of an example run using (0.5, 1, 0) as the input to part (a).
:: 7) Write a function that returns "true" if a given 3x3 matrix is with a distance epsilon of being a rotation matrix and "false" otherwise. It is up to you to define the "distance" between a random 3x3 real matrix and members of SO(3). Test the function on two matrices, neither of which is exactly in SO(3), but one of which is close (so the result is "true") and one of which is not. Turn in your code and provide the test run output, which also outputs the distance to SO(3) that you defined.
:: 8) Following up on the previous exercise: describe (don't implement, unless you want to) a function that takes a "close by" 3x3 matrix and returns the closest rotation matrix. How would you use the fact that R^T R - I must be equal to zero to modify the initial 3x3 matrix to make it a "close by" rotation matrix? Would the function be iterative? You are free to do some research online, but as always, '''cite your sources'''!

'''Class 5''' (F 9/29)
: Quick quiz
: Lecture

At home:
: Videos: videos 4-6 of Chapter 3, through Chapter 3.2.3
: Reading: through Chapter 3.2.3

'''Class 6''' (M 10/2)
: Quick quiz
: Help with HW

At home:
: Videos: videos 7-9 of Chapter 3, Chapters 3.3.1 and 3.3.2
: Reading: same sections
'''Class 7''' (W 10/4)
: Quick quiz
: Exam prep

At home:
: Videos: videos 10-11, Chapter 3.3.3 and 3.4
: Reading: same sections
: '''HW3, due 1:30 PM 10/11''': Exercises 3.16, 3.17, 3.27, 3.31, and 3.48 (as always, for programming assignments, turn in your code and sample output demonstrating it).

'''Class 8''' (F 10/6)
: Quick quiz
: EXAM 1

At home:
: Videos: video 1 of Chapter 4, through Chapter 4.1.2
: Reading: same sections

'''Class 9''' (M 10/9)
: Quick quiz
: Help with HW

At home:
: Videos: videos 2-3 of Chapter 4, Chapter 4.1.3
: Reading: same sections
'''Class 10''' (W 10/11)
: Quick quiz
: Student lecture 1 (Pawar, Subramanian, Goyal, Cai)

At home:
: Videos: video 1 of Chapter 5, up to (not including) Chapter 5.1
: Reading: same sections
: '''HW4, due 1:30 PM 10/18''': Exercises 4.2, 4.8, 4.14, and 5.7(a). Question 5: In Chapter 3.5 (Summary), there is a list of analogies between rotations and rigid-body motions. Read it carefully and report anything that is either unclear or incorrect.

'''Class 11''' (F 10/13)
: Quick quiz
: Student lecture 2 (Wang, Wu, Xia, Zheng)

At home:
: Videos: video 2 of Chapter 5, Chapter 5.1.1
: Reading: same sections

'''Class 12''' (M 10/16)
: Quick quiz
: Help with HW

At home:
: Videos: videos 3 and 4 of Chapter 5, Chapter 5.1.2 through 5.2
: Reading: same sections
'''Class 13''' (W 10/18)
: Quick quiz
: Student lecture 3 (Wiznitzers, Hutson, Spies)

At home:
: Videos: videos 5 and 6 of Chapter 5, Chapter 5.3 and 5.4
: Reading: same sections
: '''HW5, due 1:30 PM 10/25''': Exercises 5.2, 5.3, 5.23, 5.25, 6.7, and 6.8.

'''Class 14''' (F 10/20)
: Quick quiz
: Student lecture 4 (Don, Chien, Husain, Sulaiman)

At home:
: Videos: videos 1 and 2 of Chapter 6,
: Reading: intro of Chapter 6 and Chapter 6.2

'''Class 15''' (M 10/23)
: Quick quiz
: Help with HW

At home:
: Videos: video 3 of Chapter 6
: Reading: Chapter 6.2
'''Class 16''' (W 10/25)
: Quick quiz
: Exam prep

At home:
: Videos: video 1 of Chapter 8, through 8.1.1
: Reading: same sections
: [[Media:ME449-HW6-2017.pdf|HW6, due 1:30 PM 11/1]]

'''Class 17 ''' (F 10/27)
: Quick quiz
: EXAM 2

At home:
: Videos: video 2 of Chapter 8, through 8.1.2
: Reading: same sections

'''Class 18''' (M 10/30)
: Quick quiz
: Help with HW

At home:
: Videos: video 3 of Chapter 8, through 8.1.3
: Reading: same sections
'''Class 19''' (W 11/1)
: Quick quiz
: Student lecture 5 (Zhang, Zhu, Meng, Luo)

At home:
: Videos: videos 4-5 of Chapter 8, through 8.2
: Reading: same sections
: '''HW7, due 1:30 PM 11/8''': Exercises 8.2, 8.3, 8.11 (you should build on the MR code), and 8.15(a).

'''Class 20''' (F 11/3)
: Quick quiz
: Student lecture 6 (Lyu, Yi, Wang, Swissler)

At home:
: Videos: video 6 of Chapter 8, up to (not including) 8.4
: Reading: same sections

'''Class 21''' (M 11/6)
: Quick quiz
: Help with HW

At home:
: Videos: video 7 of Chapter 8, Chapter 8.5 (skip 8.4)
: Reading: same sections
'''Class 22''' (W 11/8)
: Quick quiz
: Student lecture 7 (Warren, Kilaru, Wang, Mandana)

At home:
: Videos: videos 1-2 of Chapter 9, through Chapter 9.2
: Reading: same sections
: '''HW8, due 1:30 PM 11/15''': Exercises 8.15(b) (use your previous results from 8.15(a), and turn in any code you write as well as a V-REP movie of your simulation), 8.14 (turn in your testable code and evidence your code returns similar results), 9.14, and 9.26.

'''Class 23''' (F 11/10)
: Quick quiz
: Student lecture 8 (Wang, Dai, Ma, Peng)

At home:
: Videos: video 4 of Chapter 9, Chapter 9.4 - 9.4.1 (skip 9.3)
: Reading: same sections

'''Class 24''' (M 11/13)
: Quick quiz
: Help with HW

At home:
: Videos: videos 5-6 of Chapter 9, up to (not including) Chapter 9.5
: Reading: same sections
'''Class 25''' (W 11/15)
: Quick quiz
: Exam prep

At home:
: Videos: videos 1-3 of Chapter 11, up to (not including) Chapter 11.2.2.1
: Reading: same sections
: '''Final project. This project is part of the assignment grade, cannot be dropped, and has the weight of 2 normal assignments.''' The assignment is split into two parts: a relatively simple Part I, due after 1 week, followed by the programming-heavy Part II, due during finals week. You will receive a single grade for the entire assignment, after Part II has been submitted.
:: '''Part I, due 1:30 PM 11/22''': Exercise 13.33 (a) and (b). Turn in your solutions (handwritten or typed) and any code you wrote.
:: '''Part II, due 11:59 PM 12/6''': Exercise 13.33 (c), (d), and (e). Turn in 1) any solutions (handwritten or typed), 2) your code, 3) any plots you created with your code, 4) your short V-REP videos (made using the youbot csv animation scene), and 5) the .csv files corresponding to the videos.

'''Class 26''' (F 11/17)
: Quick quiz
: EXAM 3

At home:
: Videos: videos 4-5 of Chapter 11, Chapter 11.2.2.1 and 11.2.2.2
: Reading: same sections

'''Class 27''' (M 11/20)
: Quick quiz
: Help with HW

At home:
: Videos: videos 6-8 of Chapter 11, Chapter 11.3
: Reading: same sections
: '''Turn in Part I of your final project on Canvas.'''
'''Class 28''' (W 11/22)
: Quick quiz
: Student lecture 9 (Abiney, Aubrun, Anthony, Alston)

At home:
: Videos: videos 1-3 of Chapter 13, through Chapter 13.2
: Reading: same sections

'''Class 29''' (M 11/27)
: Quick quiz
: Help with HW


* '''Upload on time! Late submissions are not accepted.'''
At home:
* For every assignment, you should submit a single zip file, named FamilyName_GivenName_asst#.zip. This zip file should include a single pdf file with 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.
: Reading: odometry and mobile manipulation, Chapter 13.4 and 13.5
* You may be asked to include in your zip file all source code in their original forms, such as .m, .py, or .nb. 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. All student-written code must be submitted; do not submit any standard MR code.
* If you include movies, keep them short and clear. They should only be a few MB in size. For example, you don't need super high resolution, 60 fps, etc.
'''Class 30''' (W 11/29)
* All plots should be labeled (axes, legends, titles) with appropriate units.
: Quick quiz
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)


'''[http://hades.mech.northwestern.edu/index.php/ME_449_Assignment_1 Assignment 1]''', due 1:30 PM CT Wednesday October 8.
At home:
<!--
: Final assignment work
'''[[Media:ME449-asst2-2024.pdf|Assignment 2]]''', due 1:30 PM CT <s>Wednesday November 6</s> Friday November 8 on Canvas.


'''[[Media:ME449-asst3-2024.pdf|Assignment 3]]''', due 1:30 PM CT Friday November 15 on Canvas.
'''Class 31''' (F 12/1)
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)


==Final Project: Mobile Manipulation==
At home:
: '''Your final project is due on Canvas by 11:59 PM on Wednesday Dec 6.'''


The final project is described [http://hades.mech.northwestern.edu/index.php/Mobile_Manipulation_Capstone_2024 '''on this page''']. It is due in Canvas on Thursday December 11 at noon.
<!--
==Archive==


* '''Due Monday November 25 at 1:30 PM on Canvas''': 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 [https://www.youtube.com/watch?v=8d_cYwV58lI&feature=youtu.be this video]); and the csv file that your code generated to create the video.
* [[ME 449 Robotic Manipulation (Archive 2012)|ME 449 Spring 2012]]
* ''' Due Thursday December 12 at 12:00 PM (noon) on Canvas''': The entire final writeup in a single zip file named FamilyName_GivenName_capstone.zip. '''You may earn up to 10% extra credit on the capstone project by implementing singularity and self-collision avoidance.''' See the description of the final project writeup.
* [[ME 449 Robotic Manipulation (Archive Spring 2014)|ME 449 Spring 2014]]
* [[ME 449 Robotic Manipulation (Archive Fall 2014)|ME 449 Fall 2014]]
* [[ME 449 Robotic Manipulation (Archive Fall 2015)|ME 449 Fall 2015]]
* [[ME 449 Robotic Manipulation (Archive Fall 2016)|ME 449 Fall 2016]]
-->
-->

Latest revision as of 08:50, 24 September 2025

Fall Quarter 2025

Supportive Class Environment

All members of this class (instructors, course assistants, 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 us help you get the most out of this class. Please engage as much as possible during our class meetings!

Honor Code

You are encouraged to discuss the material with the instructor, course assistants, and your classmates, but you are not allowed to copy answers or code from others in the class or other sources, nor are you allowed to share your answers or code with others. If you use generative AI to help you with your work, you are obligated to cite the source and nature of the help; for example, if you turn in code generated in whole or in part by generative AI, you must cite the AI software in the comments, and you are required to understand how and why the code works. (Note also that electronics are not available during tests, so submitting code you do not understand will not help you prepare for tests.) Anyone copying answers or code, or providing answers or code, or becoming aware of others doing so without reporting to the instructor, is in violation of the honor code.

Northwestern University Syllabus Standards

This course follows the Northwestern University Syllabus Standards. Students are responsible for familiarizing themselves with this information.

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

30% of your final grade will be from your Coursera grades (which I expect to be nearly perfect), 30% from assignments outside of Coursera, 20% from quiz 1, and 20% from quiz 2.

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. All items are due 30 minutes before the associated class time (1:30 PM Central). The deadlines are controlled by Coursera, so do not be late! You may work ahead if you wish, but then you won't get as much out of the classes.

  • Coursera refers to "weeks," but ignore this; our course modules are not a week long.
  • Before some classes, you should complete a quiz on earlier material.
  • Before most classes, you will watch the associated videos on Coursera and answer the "lecture comprehension" (LC) questions. (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 you watch 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.
  • There are two kinds of assessments on Coursera (Coursera refers to both of them as "quizzes"): "lecture comprehension" questions (LCs), which are short and immediately follow lectures, and summative quizzes, which are usually longer assessments/assignments occurring at the middle or end of a chapter.
  • Within Coursera there are also "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.
  • Assignments outside Coursera will be submitted through Canvas.

Below is the approximate syllabus and schedule. Next to each date is the Coursera material that should have been covered at least 30 minutes before that class. "LC" refers to brief lecture comprehension questions that should be completed before that class, and "quiz" is a longer summative quiz on earlier material.

Chapter 2, Configuration Space

  • Wed Sept 17: welcome to the course and syllabus review; intro to Coursera. The schedule for completing Coursera items is set by this wiki!
  • Fri Sept 19: check for working CoppeliaSim implementation and summarize installation process for each OS; make sure Coursera invitation is accepted; material through Chapter 2.2 (3 videos and 2 LCs on dof of a robot) CLASS SLIDES
  • Mon Sept 22: meet the class; and material through Chapter 2.3 (quiz, Chapter 2 through 2.2; 2 videos and 2 LCs on C-space topology and representation) CLASS SLIDES
  • Wed Sept 24: ASST 1 HAS BEEN POSTED. Finish Chapter 2 (2 videos and 2 LCs on configuration and velocity constraints, task space and workspace) CLASS SLIDES

Chapter 3, Rigid-Body Motions

  • Fri Sept 26: through Chapter 3.2.1 (quiz, Chapter 2.3 through 2.5; 3 videos and 3 LCs on rotation matrices SO(3)) CLASS SLIDES
  • Mon Sept 29: finish Chapter 3.2 (3 videos and 3 LCs on angular velocities, so(3), exponential coordinates) CLASS SLIDES
  • Wed Oct 1: New material: through Chapter 3.3.2 (quiz, Chapter 3 through 3.2; 3 videos and 3 LCs on transform matrices SE(3) and twists) CLASS SLIDES
  • Fri Oct 3: finish Chapter 3 (2 videos and 2 LCs on se(3), exponential coordinates, and wrenches) CLASS SLIDES

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

  • Mon Oct 6: finish Chapter 4 (quiz, Chapters 3.3 and 3.4; 3 videos and 3 LCs on product of exponentials formula, space and e-e frame) CLASS SLIDES

Chapter 5, Velocity Kinematics and Statics

  • Wed Oct 8: ASST 1 DUE 1:30 PM. New material: through Chapter 5.1 (quiz, Chapter 4; 3 videos and 3 LCs on space Jacobian, body Jacobian) CLASS SLIDES
  • Fri Oct 10: New material: through Chapter 5.2 1 video and 1 LC on statics of open chains) CLASS SLIDES
  • Mon Oct 13: through Chapter 5.4 (2 videos and 2 LCs on singularity analysis, manipulability) CLASS SLIDES

Chapter 6, Inverse Kinematics (focus on section 6.2)

  • Wed Oct 15: Chapter 6 (quiz, Chapter 5; 3 videos and 3 LCs on numerical inverse kinematics) CLASS SLIDES

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

  • Fri Oct 17: through Chapter 8.1.2 (quiz, Chapter 6; 2 videos and 2 LCs on Lagrangian dynamics) CLASS SLIDES
  • Mon Oct 20: New material: Chapter 8.1.3 (1 video and 1 LC on understanding the mass matrix) CLASS SLIDES
  • Wed Oct 22: QUIZ 1, chapters 2-5 (no electronic devices allowed [calculator, laptop, tablet, etc.]; study sheets and book allowed) 2022 midterm and solutions (average score 22.9/32); 2023 midterm and solutions; 2024 midterm and solutions
  • Fri Oct 24: Chapter 8.2 (2 videos and 2 LCs on dynamics of a single rigid body) CLASS SLIDES
  • Mon Oct 27: Chapter 8.3 and 8.5 (2 videos and 2 LCs on Newton-Euler inverse dynamics, forward dynamics; quiz, Chapter 8 through 8.3) CLASS SLIDES

Chapter 9, Trajectory Generation

  • Wed Oct 29: New material: through Chapter 9.3 (3 videos and 3 LCs on point-to-point trajectories, polynomial via point trajectories) CLASS SLIDES
  • Fri Oct 31: Chapter 9.4 (quiz, Chapter 9 through 9.3; 3 videos and 3 LCs on time-optimal time scaling) CLASS SLIDES
  • Mon Nov 3: Chapter 9.4 recap.
  • Wed Nov 5: Final project discussion

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

  • Fri Nov 7: New material: up to (not including) Chapter 11.2.2.1 (quiz, Chapter 9.4; 3 videos and 3 LCs on linear error dynamics) CLASS SLIDES
  • Mon Nov 10: finish Chapter 11.2.2 (2 videos and 2 LCs on first- and second-order error dynamics) CLASS SLIDES
  • Wed Nov 12: through Chapter 11.3 (3 videos and 3 LCs on motion control with velocity inputs) CLASS SLIDES
  • Fri Nov 14: Chapter 11.4 (quiz, Chapter 11 through 11.3; 3 videos and 3 LCs on motion control with torque or force inputs) CLASS SLIDES

Chapter 13, Wheeled Mobile Robots (skip section 13.3)

  • Mon Nov 17: New material through Chapter 13.2 (quiz, Chapter 11.4; 3 videos and 3 LCs on omnidirectional wheeled mobile robots) CLASS SLIDES
  • Wed Nov 19: Chapter 13.4 (quiz, Chapter 13 through 13.2; 1 video and 1 LC on odometry) CLASS SLIDES
  • Fri Nov 21: Chapter 13.5 (1 video and 1 LC on mobile manipulation) CLASS SLIDES
  • Mon Nov 24: Wrapping up
  • NO CLASS WED NOV 26 AND FRI NOV 28 (HAPPY THANKSGIVING!)
  • Mon Dec 1: Final review.
  • Wed Dec 3: In-class work on final project; Q&A on final.
  • Fri Dec 5: QUIZ 2

Practice Exercises

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

Practice Tests

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. If more detailed submission instructions are given with a particular assignment, make sure to follow those, too.

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 submit a single zip file, named FamilyName_GivenName_asst#.zip. This zip file should include a single pdf file with 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.
  • You may be asked to include in your zip file all source code in their original forms, such as .m, .py, or .nb. 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. All student-written code must be submitted; do not submit any standard MR code.
  • If you include movies, keep them short and clear. They should only be a few MB in size. For example, you don't need super high resolution, 60 fps, etc.
  • All plots should be labeled (axes, legends, titles) with appropriate units.

Assignment 1, due 1:30 PM CT Wednesday October 8.