Difference between revisions of "ME 449 Robotic Manipulation"

From Mech
Jump to navigationJump to search
 
(241 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Fall Quarter 2020'''
'''Fall Quarter 2024'''
<!-- [[image:ME449-instructors-2022.jpg|1000px]] -->


* Instructor: Prof. Kevin Lynch
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 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. As the quarter progresses, we will evaluate the pros and cons of in-person class sessions.
* Course assistants: Luke Batteas, LukeBatteas2027@u.northwestern.edu; Yuxuan Mao, yuxuanmao2024@u.northwestern.edu; and Alex Soto, AlexanderTorresSoto2024@u.northwestern.edu
* Office hours: Mon 3-4 Tech B252 (Alex), Tues 3-4 Tech M434 (Yuxuan), Fri 1-2 Tech M434 (Luke)
<!--4-5 PM Tuesday (TAs) and 2-3 PM Thursday (Lynch) by Zoom invitation in Canvas. '''Finals week only:''' TA office hours will be 4-5 PM Tuesday, as usual, and Lynch's office hours will be 1:30-2:30 Wednesday Dec 8 (office hours Thursday canceled)
-->
* Meeting: 2:00-2:50, MWF, '''Tech L361''' (first meeting: Wed Sept 25)
* 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.]'''


'''Important Information'''
'''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.
* All class sessions will be recorded and available in Canvas afterward. (The two sessions were combined into one in Canvas on Sept 16.)
* 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 schedule posted below. 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!)
* Zoom meetings will be recorded and placed on Canvas. No one other than class members will be able to access the recordings. Given these circumstances, I encourage you to engage as much as possible.
* Zoom teaching is new to many of us, but students actually see more examples than faculty! So if you have suggestions how to improve the course, they are more than welcome.


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!
'''Getting Started'''


'''Honor Code'''
Do the following things as soon as possible:


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.''
* [[Modern Robotics#Book|Buy the book "Modern Robotics" or download the electronic preprint version]]. (Though the Cambridge-published version is the "official" version, the differences are mostly layout and either will work for this course.)
* [[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.]]


'''Supportive Class Environment'''
'''Accessible NU'''


If you need accommodation in this course because of a disability, contact [http://www.northwestern.edu/accessiblenu/ Accessible NU] immediately.
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.


'''Religious Holidays'''
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! (e.g., via discussion and chat)


Provost's [https://www.northwestern.edu/provost/policies-procedures/classwork-curricular-policies/accommodations-for-religious-holidays.html statement] on accommodations for
'''Honor Code'''
[https://www.northwestern.edu/religious-life/explore-our-programs/religious-holidays.html religious holidays].


<!--
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'''
'''Other Syllabus Statements'''


[https://www.registrar.northwestern.edu/faculty-staff/syllabi.html Here you can find other syllabus statements] regarding academic integrity (do not submit work that is not your own), accessibility, COVID-19 classroom expectations (wear a mask), COVID-19 testing for unvaccinated students, class modality, class recordings, prohibition of recordings of class sessions by students, and wellness and mental health.
* Instructor: Prof. Kevin Lynch

* TAs: Tito Fernandez, Baris Kucuktabak, and Lin Liu
Other information:
* Meeting: 3:00-3:50 PM, MWF, Tech LR2
* [https://www.northwestern.edu/coronavirus-covid-19-updates/index.html NU's COVID-19 update page]
* Office hours: TBD, during normal class hours, and by appointment
* [https://www.northwestern.edu/coronavirus-covid-19-updates/university-status/summary.html COVID-19 Fall protocol page]
* Course website: [http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation]
* [https://www.northwestern.edu/coronavirus-covid-19-updates/resources/frequently-asked-questions/academics.html Instructor FAQs]
* 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.]'''

'''Getting Started'''

Do the following things as soon as possible:

* [[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.)
* [[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==
==Course Summary==
Line 58: Line 69:
-->
-->


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 student-generated exercise and the capstone project.
50% of your final grade will be from your Coursera grades (which I expect will be close to perfect) and 50% from the midterm and assignments outside of Coursera, including 15% midterm, 5% for asst 1, 5% for asst 2, 10% for asst 3, and 15% for asst 4 (the capstone project).


==Course Text and Software==
==Course Text and Software==
Line 70: Line 81:
==Approximate Syllabus and Schedule==
==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.
Here is a summary of the structure of the course:
* Coursera refers to "weeks," but ignore this; our course modules are not a week long.
* 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.)
* 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.
* 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.
* 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.
* 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.
* 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 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.
* 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.
* 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.
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'''
'''Chapter 2, Configuration Space'''
* Wed Sept 25: welcome to the course and syllabus review; intro to Coursera. '''The schedule for completing Coursera items is set by this wiki!'''
* Fri Sept 18: through Chapter 2.2 (dof of a robot)
* Fri Sept 27: 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 21: through Chapter 2.3 (c-space topology and representation)
* Mon Sept 30: 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 23: finish Chapter 2 (task space and workspace)
* Wed Oct 2: 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'''
'''Chapter 3, Rigid-Body Motions'''
* Fri Sept 25: through Chapter 3.2.1 (rotation matrices SO(3))
* Fri Oct 4: 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 28: finish Chapter 3.2 (angular velocities, so(3), exponential coordinates)
* Mon Oct 7: finish Chapter 3.2 (3 videos and 3 LCs on angular velocities, so(3), exponential coordinates) '''[[Media:MRslides-ch03b.pdf|CLASS SLIDES]]'''
* Wed Sept 30: through Chapter 3.3.2 (transform matrices SE(3) and twists)
* Wed Oct 9: Asst 1 assigned, due Wed Oct 11. 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 2: finish Chapter 3 (se(3), exponential coordinates, wrenches)
* Fri Oct 11: 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)'''
'''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)
* Mon Oct 14: 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'''
'''Chapter 5, Velocity Kinematics and Statics'''
* Wed Oct 7: through Chapter 5.1 (space Jacobian, body Jacobian)
* Wed Oct 16: <s>'''ASST 1, DUE 1:30 PM'''.</s> 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 9: through Chapter 5.2 (statics of open chains)
* Fri Oct 18: '''ASST 1, DUE 1:30 PM'''. New material: through Chapter 5.2 1 video and 1 LC on statics of open chains) '''[[Media:MRslides-ch05b.pdf|CLASS SLIDES]]'''
* Mon Oct 12: through Chapter 5.4 (singularity analysis, manipulability)
* Mon Oct 21: 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)'''
'''Chapter 6, Inverse Kinematics (focus on section 6.2)'''
* Wed Oct 14: Chapter 6 (numerical inverse kinematics)
* Wed Oct 23: Chapter 6 (quiz, Chapter 5; 3 videos and 3 LCs on numerical inverse kinematics) '''[[Media:MRslides-ch06a.pdf|CLASS SLIDES]]'''
* Fri Oct 16: catch up
'''Chapter 8, Dynamics of Open Chains (skip sections 8.4, 8.7, 8.8, and 8.9)'''
'''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)
* Fri Oct 25: through Chapter 8.1.2 (quiz, Chapter 6; 2 videos and 2 LCs on Lagrangian dynamics) '''[[Media:MRslides-ch08a.pdf|CLASS SLIDES]]'''
* Wed Oct 21: Chapter 8.1.3 (understanding the mass matrix)
* Mon Oct 28: New material: Chapter 8.1.3 (1 video and 1 LC on understanding the mass matrix) '''[[Media:MRslides-ch08b.pdf|CLASS SLIDES]]'''
* Wed Oct 30: '''MIDTERM''', 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 23: Chapter 8.2 (dynamics of a single rigid body)
* Fri Nov 1: Guest lecture by Dan L. Chapter 8.2 (2 videos and 2 LCs on dynamics of a single rigid body) '''[[Media:MRslides-ch08c.pdf|CLASS SLIDES]]'''
* Mon Oct 26: Chapter 8.3 and 8.5 (Newton-Euler inverse dynamics, forward dynamics)
* Mon Nov 4: 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'''
'''Chapter 9, Trajectory Generation'''
* Wed Oct 28: through Chapter 9.3 (point-to-point trajectories, polynomial via point trajectories)
* Wed Nov 6: '''ASST 2, DUE 1:30 PM'''. 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 30: Chapter 9.4 (time-optimal time scaling)
* Fri Nov 8: 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 2: catch up, final project
* Mon Nov 11: Chapter 9.4 recap.
* Wed Nov 13: '''ASST 3, DUE 1:30 PM'''; final project discussion
* Wed Nov 4:
'''Chapter 11, Robot Control (focus on sections 11.1 through 11.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 (linear error dynamics)
* Fri Nov 15: 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 9: finish Chapter 11.2.2 (first- and second-order error dynamics)
* Mon Nov 18: 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 11: through Chapter 11.3 (motion control with velocity inputs)
* Wed Nov 20: through Chapter 11.3 (3 videos and 3 LCs on motion control with velocity inputs) '''[[Media:MRslides-ch11c.pdf|CLASS SLIDES]]'''
* Fri Nov 13: Chapter 11.4 (motion control with torque or force inputs)
* Fri Nov 22: 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)'''
'''Chapter 13, Wheeled Mobile Robots (skip section 13.3)'''
* Mon Nov 16: through Chapter 13.2 (omnidirectional wheeled mobile robots)
* Mon Nov 25: '''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 18: Chapter 13.4 (odometry)
* Wed Nov 27: CLASS CANCELED (Happy Thanksgiving!)
* Mon Dec 2: Chapter 13.4 (quiz, Chapter 13 through 13.2; 1 video and 1 LC on odometry) '''[[Media:MRslides-ch13b.pdf|CLASS SLIDES]]'''
* Fri Nov 20: Chapter 13.5 (mobile manipulation)
* Wed Dec 4: Chapter 13.5 (1 video and 1 LC on mobile manipulation) '''[[Media:MRslides-ch13c.pdf|CLASS SLIDES]]'''
* Mon Nov 23:
* Wed Nov 25:
* Fri Dec 6: wrap-up
* Thurs Dec 12, noon: final project due
* 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 '''http://modernrobotics.northwestern.edu'''] or using [[Modern_Robotics_Videos|'''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.

* [https://www.coursera.org/learn/modernrobotics-course1 Course 1: Foundations of Robot Motion (Chapters 2 and 3)]
* [https://www.coursera.org/learn/modernrobotics-course2 Course 2: Robot Kinematics (Chapters 4, 5, 6, and 7)]
* [https://www.coursera.org/learn/modernrobotics-course3 Course 3: Robot Dynamics (Chapters 8 and 9)]
* [https://www.coursera.org/learn/modernrobotics-course4 Course 4: Robot Motion Planning and Control (Chapters 10 and 11)]
* [https://www.coursera.org/learn/modernrobotics-course5 Course 5: Robot Manipulation and Wheeled Mobile Robots (Chapters 12 and 13)]
* [https://www.coursera.org/learn/modernrobotics-course6 Course 6: Capstone Project, Mobile Manipulation]

'''[[Coursera Resources|This page collects together useful supplemental material to the Coursera courses]]'''.
-->

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.

* '''[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.]'''

* In class, I will usually briefly review lecture comprehension quizzes, work an example problem, take questions, and be available as you work on assignments.
<!-- On days before a quiz, I will spend as much time reviewing the material covered by the quiz as you would like. -->


==Practice Exercises==
==Practice Exercises==
[[Modern_Robotics#Useful_Supplemental_Documents|Sample exercises and their solutions, useful for practicing your understanding of the material.]]
[[Modern_Robotics#Useful_Supplemental_Documents|Sample exercises and their solutions, useful for practicing your understanding of the material.]]


== Practice Quizzes ==
== Practice Tests ==
* [[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]]
* [[Media:ME449-quiz1-2018.pdf|Quiz 1, 2018]]
<!--
* 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]].

==Student-Created Exercises==
==Student-Created Exercises==
-->

<!-- [https://docs.google.com/spreadsheets/d/1cIX4_U8lkWAL6LqQBgDrE5WX1TAmJaD6-ykG7GNACkI/edit?usp=sharing '''Click here for student exercise assignments.''']
<!-- [https://docs.google.com/spreadsheets/d/1cIX4_U8lkWAL6LqQBgDrE5WX1TAmJaD6-ykG7GNACkI/edit?usp=sharing '''Click here for student exercise assignments.''']


'''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.'''
'''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.
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.


Line 181: Line 170:


You will turn in the source for your exercise as a zip file, as well as the final pdf file.
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:
The final student assignments to topics is given below:
Line 188: Line 177:
-->
-->


<!--
==Assignments==
==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.

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.'''
'''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.'''
Line 199: Line 189:
'''Instructions for uploading assignments to Canvas:'''
'''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.'''
* '''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.


'''[http://hades.mech.northwestern.edu/index.php/ME_449_Assignment_1 Assignment 1]''', due 1:30 PM CT <s>Wednesday October 16</s> Friday October 18 on Canvas.
# 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).
'''[[Media:ME449-asst2-2024.pdf|Assignment 2]]''', due 1:30 PM CT Wednesday November 6 on Canvas.
<!--
'''[[Media:ME449-asst3-2023.pdf|Assignment 3]]''', due 1:30 PM CT Wednesday November 8 on Canvas.
-->
-->


<!--
'''[[Media:ME449-asst3-2022.pdf|Assignment 3]]''', due 1:30 PM CT Wednesday November 10 on Canvas.
-->

<!--
'''[[Media:ME449-asst3-2020.pdf|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.)
-->
<!--
<!--
* '''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 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.
Line 220: Line 224:


==Final Project: Mobile Manipulation==
==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, described [http://hades.mech.northwestern.edu/index.php/Mobile_Manipulation_Capstone '''on this page'''], is due on Canvas on Monday December 7. Reminders:
The final project is described [http://hades.mech.northwestern.edu/index.php/Mobile_Manipulation_Capstone_2023 '''on this page''']. It is due in Canvas on Thursday December 12 at noon.

* '''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.
* ''' Due Thursday December 12 at 12:00 PM (noon) on Canvas''': The entire final writeup, as described [https://hades.mech.northwestern.edu/index.php/Mobile_Manipulation_Capstone_2023#Final_Step:_Completing_the_Project_and_Your_Submission '''at this page'''], 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.
-->

<!--
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.
# 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.
# 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.
# 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.'''
# 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 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.
# 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 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).
# '''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.

<!--
==Quizzes==
* [[Media:ME449-quiz1-solutions-2019.pdf|Quiz 1 Solutions]] (average score 22.4/27)
* [[Media:ME449-quiz2-solutions-2019.pdf|Quiz 2 Solutions]] (average score 31.2/35)

==Detailed Syllabus==
[https://docs.google.com/spreadsheets/d/1UrBFai-1Z98Ry48bW50OMqxvvqZ3Jo8pHgZmljOgPpo/edit?usp=sharing '''The course calendar'''], including video lecture and reading assignments due before each class.

[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.''']

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.

'''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.

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.

'''Class 2''' (F 9/22)
: Quick quiz
: Sample student lecture

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)
: 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)
: 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)
: 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

At home:
: Reading: odometry and mobile manipulation, Chapter 13.4 and 13.5
'''Class 30''' (W 11/29)
: Quick quiz
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)

At home:
: Final assignment work

'''Class 31''' (F 12/1)
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)

At home:
: '''Your final project is due on Canvas by 11:59 PM on Wednesday Dec 6.'''

-->
-->


Line 521: Line 257:
* [[ME 449 Robotic Manipulation (Archive Fall 2018)|ME 449 Fall 2018]]
* [[ME 449 Robotic Manipulation (Archive Fall 2018)|ME 449 Fall 2018]]
* [[ME 449 Robotic Manipulation (Archive Fall 2019)|ME 449 Fall 2019]]
* [[ME 449 Robotic Manipulation (Archive Fall 2019)|ME 449 Fall 2019]]
* [[ME 449 Robotic Manipulation (Archive Fall 2020)|ME 449 Fall 2020]]
* [[ME 449 Robotic Manipulation (Archive Fall 2021)|ME 449 Fall 2021]]
* [[ME 449 Robotic Manipulation (Archive Fall 2021)|ME 449 Fall 2021]]
* [[ME 449 Robotic Manipulation (Archive Fall 2022)|ME 449 Fall 2022]]
* [[ME 449 Robotic Manipulation (Archive Fall 2023)|ME 449 Fall 2023]]
-->
-->

Latest revision as of 09:56, 31 October 2024

Fall Quarter 2024

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 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.

Accessible NU

If you need accommodation in this course because of a disability, contact Accessible NU immediately.

Religious Holidays

Provost's statement on accommodations for religious holidays.


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 will be close to perfect) and 50% from the midterm and assignments outside of Coursera, including 15% midterm, 5% for asst 1, 5% for asst 2, 10% for asst 3, and 15% for asst 4 (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 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 25: welcome to the course and syllabus review; intro to Coursera. The schedule for completing Coursera items is set by this wiki!
  • Fri Sept 27: 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 30: 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 Oct 2: 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 Oct 4: 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 Oct 7: finish Chapter 3.2 (3 videos and 3 LCs on angular velocities, so(3), exponential coordinates) CLASS SLIDES
  • Wed Oct 9: Asst 1 assigned, due Wed Oct 11. 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 11: 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 14: 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 16: 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 18: ASST 1, DUE 1:30 PM. New material: through Chapter 5.2 1 video and 1 LC on statics of open chains) CLASS SLIDES
  • Mon Oct 21: 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 23: 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 25: through Chapter 8.1.2 (quiz, Chapter 6; 2 videos and 2 LCs on Lagrangian dynamics) CLASS SLIDES
  • Mon Oct 28: New material: Chapter 8.1.3 (1 video and 1 LC on understanding the mass matrix) CLASS SLIDES
  • Wed Oct 30: MIDTERM, 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 Nov 1: Guest lecture by Dan L. Chapter 8.2 (2 videos and 2 LCs on dynamics of a single rigid body) CLASS SLIDES
  • Mon Nov 4: 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 Nov 6: ASST 2, DUE 1:30 PM. New material: through Chapter 9.3 (3 videos and 3 LCs on point-to-point trajectories, polynomial via point trajectories) CLASS SLIDES
  • Fri Nov 8: Chapter 9.4 (quiz, Chapter 9 through 9.3; 3 videos and 3 LCs on time-optimal time scaling) CLASS SLIDES
  • Mon Nov 11: Chapter 9.4 recap.
  • Wed Nov 13: ASST 3, DUE 1:30 PM; final project discussion

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

  • Fri Nov 15: 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 18: finish Chapter 11.2.2 (2 videos and 2 LCs on first- and second-order error dynamics) CLASS SLIDES
  • Wed Nov 20: through Chapter 11.3 (3 videos and 3 LCs on motion control with velocity inputs) CLASS SLIDES
  • Fri Nov 22: 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 25: 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) CLASS SLIDES
  • Wed Nov 27: CLASS CANCELED (Happy Thanksgiving!)
  • Mon Dec 2: Chapter 13.4 (quiz, Chapter 13 through 13.2; 1 video and 1 LC on odometry) CLASS SLIDES
  • Wed Dec 4: Chapter 13.5 (1 video and 1 LC on mobile manipulation) CLASS SLIDES
  • Fri Dec 6: wrap-up
  • Thurs Dec 12, noon: final project due

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 16 Friday October 18 on Canvas.

Assignment 2, due 1:30 PM CT Wednesday November 6 on Canvas.


Final Project: Mobile Manipulation