http://hades.mech.northwestern.edu/api.php?action=feedcontributions&user=HuanWeng&feedformat=atomMech - User contributions [en]2019-06-16T07:08:30ZUser contributionsMediaWiki 1.18.2http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_ManipulationME 449 Robotic Manipulation2018-10-17T19:38:07Z<p>HuanWeng: </p>
<hr />
<div>'''Fall Quarter 2018'''<br />
<br />
* Instructor: Prof. Kevin Lynch<br />
* Meeting: 2:00-2:50, MWF, Frances Searle Building 1-441<br />
* TAs: Huan Weng, Tito Fernandez, and Zack Woodruff<br />
* Office hours: Mon 3:00-4:00, Tech B222, Prof. Lynch; Tues 3:30-4:30, Tech B241 (through the ME office by the freight elevator), TAs<br />
* Course website: [http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation]<br />
* Book website: [http://modernrobotics.org http://modernrobotics.org]<br />
<br />
==Course Summary==<br />
<br />
Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.<br />
<br />
==Prerequisites==<br />
<br />
Linear algebra, first-order linear ODEs, freshman-level physics/mechanics, a bit of programming background.<br />
<br />
==Grading==<br />
* 50% quizzes (quizzes will be open book, open notes, any cheat sheets you would like, but no electronics)<br />
* 20% assignments (lowest grade will be dropped)<br />
* 15% final project (due Wed Dec 12, during finals week)<br />
* 10% practice exercise for other students<br />
* 5% engagement: answering questions in class, participation in in-class exercises, and helping other students in class<br />
<br />
Your lowest assignment grade will be dropped. This policy is meant to handle '''ALL''' eventualities and emergencies: travel, job interview, overloaded that week, computer crashed, could not submit on time, problem with submitting to Canvas, dog ate it, slept in, forgot, busy watching the big game, etc. Please don't ask for an extension or an exception; you've already been given one! (But only one!)<br />
<br />
==Course Text and Software==<br />
<br />
This course uses the textbook ''Modern Robotics: Mechanics, Planning, and Control'', Kevin M. Lynch and Frank C. Park, Cambridge University Press 2017.<br />
<br />
[[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 V-REP simulator.]] You will program in Python, Mathematica, or MATLAB in this course.<br />
<br />
'''[[Modern Robotics Linear Algebra Review|Here is a linear algebra refresher appendix to accompany the book.]]'''<br />
<br />
==Video Lectures and the Flipped Classroom==<br />
<br />
This course will take advantage of video lectures and lecture comprehension quizzes on Coursera. (You can also see the video lectures, but not the lecture comprehension quizzes, outside Coursera at the video browser [http://modernrobotics.northwestern.edu '''http://modernrobotics.northwestern.edu'''] or using [[Modern_Robotics_Videos|'''direct links to the videos on YouTube''']].)<br />
<br />
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.<br />
<br />
* [https://www.coursera.org/learn/modernrobotics-course1 Course 1: Foundations of Robot Motion (Chapters 2 and 3)]<br />
* [https://www.coursera.org/learn/modernrobotics-course2 Course 2: Robot Kinematics (Chapters 4, 5, 6, and 7)]<br />
* [https://www.coursera.org/learn/modernrobotics-course3 Course 3: Robot Dynamics (Chapters 8 and 9)]<br />
* [https://www.coursera.org/learn/modernrobotics-course4 Course 4: Robot Motion Planning and Control (Chapters 10 and 11)]<br />
* [https://www.coursera.org/learn/modernrobotics-course5 Course 5: Robot Manipulation and Wheeled Mobile Robots (Chapters 12 and 13)]<br />
* [https://www.coursera.org/learn/modernrobotics-course6 Course 6: Capstone Project, Mobile Manipulation]<br />
<br />
'''[[Coursera Resources|This page collects together useful supplemental material to the Coursera courses]]'''.<br />
<br />
The general flow of the class will be the following: <br />
<br />
* Before class, watch the videos, do the lecture comprehension quizzes associated with each video, do the associated reading, and participate in any "discussion prompts" on Coursera. You should plan to bring any questions or confusion to class. In general, I recommend that you first watch the videos to get a quick understanding of the material of the chapter, then follow up by reading the appropriate sections of the book. The videos are short and dense, so don't expect to get by only watching the videos. You will need to read the book, then do the exercises, to gain mastery of the material. <br />
* In class, I will briefly review the lecture comprehension quizzes and the material that was covered, get a little discussion going and take any questions, and then ask you to work on a practice exercise either individually or in small groups. If time remains, you may work on homework together. I will be available to help.<br />
* On days when a homework is turned in, I will leave time for any questions about it. On days before a quiz, I will spend as much time reviewing the material covered by the quiz as you would like.<br />
<br />
==Practice Exercises==<br />
[[Media:ME449-practice.pdf|This file contains sample exercises and their solutions, useful for studying for tests or practicing your understanding of the material.]]<br />
<br />
==Student-Created Exercises==<br />
<br />
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 V-REP 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.<br />
<br />
You will create your exercise using [https://en.wikipedia.org/wiki/LaTeX LaTeX] (pronounced "lay teck" or "lah teck"), the standard for scientific document preparation. [https://www.overleaf.com/ Overleaf] is a free online implementation of LaTeX. To get started on your exercise,<br />
<br />
# Download [[Media:ME449-exercise.zip|'''this .zip file''']] and uncompress it. There are five files: main.tex, prelims.tex, twist-wrench.pdf, table-lamp.PNG, and LampSolution.PNG.<br />
# Create an account on [https://www.overleaf.com/ Overleaf].<br />
# Create a new (blank) project on Overleaf called "exercise."<br />
# Upload the five files to this project. (You may get a warning that your default main.tex file is being overwritten; don't worry about it.)<br />
# Click on main.tex to see your main LaTeX document.<br />
# Press the "Recompile" button to see the pdf document that is compiled from the five files. You can download the pdf file, or all the "source" files, by clicking on "Menu" and choosing which to download. '''[[Media:ME449-exercise-output.pdf|This is the .pdf file you should have created.]]'''<br />
<br />
main.tex is the main file of the project, and the only one that you will edit, so you should understand what is going on in that file. prelims.tex tells LaTeX what packages to use and defines some macros, e.g., \twist creates <math>\mathcal{V}</math> and \wrench creates <math>\mathcal{F}</math>. The other three files are image files that get included in the document. You will create different image files depending on your exercise. For example, you can make a nice hand drawing and then scan it.<br />
<br />
To learn more about typesetting in LaTeX, google is your friend! Try googling "latex math" or "latex math symbols," for example.<br />
<br />
You will turn in the source for your exercise as well as the final pdf file.<br />
<br />
==Approximate Syllabus and Reading==<br />
<br />
* Chapter 2, Configuration Space (weeks 1-2)<br />
* Chapter 3, Rigid-Body Motions (weeks 2-3)<br />
* Chapter 4, Forward Kinematics (week 4); section 4.2 is optional<br />
* Chapter 5, Velocity Kinematics and Statics (week 5)<br />
* Chapter 6, Inverse Kinematics (week 6); focus on section 6.2<br />
* Chapter 8, Dynamics of Open Chains (weeks 6-7); skip sections 8.4, 8.8, and 8.9<br />
* Chapter 9, Trajectory Generation (week 8); focus on sections 9.1 and 9.4<br />
* Chapter 11, Robot Control (week 9); focus on sections 11.1 through 11.4<br />
* Chapter 13, Wheeled Mobile Robots (week 10); skip section 13.3<br />
<br />
==Assignments==<br />
<br />
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.<br />
<br />
'''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.'''<br />
<br />
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.<br />
<br />
'''Instructions for uploading assignments to Canvas:'''<br />
<br />
0. '''Upload on time! Late submissions are not accepted.''' The cutoff time is 30 minutes before class the day the assignment is due.<br />
<br />
1. Only upload one zip file or rar file for each assignment;<br />
<br />
2. In your zip file or rar file, include all source codes in their original form, such as .cpp, .m, .py, .nb.<br />
<br />
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).<br />
<br />
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).<br />
<br />
5. Please name the upload file in the following format: LastName_FirstName.zip.<br />
<br />
* '''Assignment 1, due 30 minutes before class on Canvas, Wed Oct 10.''' Exercises 2.1, 2.4, 2.9 for mechanisms (a) and (b) from Fig 2.18, 2.22, 2.29, and 3.1.<br />
* '''Assignment 2, due 30 minutes before class on Canvas, Wed Oct 17.''' Exercises 3.16, 3.17, 3.27, 3.30, 3.31, 3.49.<br />
* '''Assignment 3, due 30 minutes before class on Canvas, Wed Oct 24.''' Exercises 4.2, 4.5, 4.14, 5.7, and 5.11(a).<br />
<br />
==Detailed Syllabus==<br />
[https://docs.google.com/spreadsheets/d/1UrBFai-1Z98Ry48bW50OMqxvvqZ3Jo8pHgZmljOgPpo/edit?usp=sharing '''The course calendar'''], including video lecture and reading assignments due before each class.<br />
<!--<br />
[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.''']<br />
<br />
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: <br />
: M: Video/reading comprehension quick quiz and help with homework. <br />
: W: Video/reading comprehension quick quiz, homework solutions, plus '''EITHER''' student lecture '''OR''' quiz preparation. <br />
: F: Video/reading comprehension quick quiz plus '''EITHER''' student lecture '''OR''' quiz.<br />
<br />
'''Class 1''' (W 9/20)<br />
: 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.<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 2, through Chapter 2.2<br />
: Reading: Chapters 2.1 and 2.2<br />
: Software: download github software with book, install V-REP and verify that you can use Scenes 1 and 2 (the UR5)<br />
: '''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.<br />
<br />
'''Class 2''' (F 9/22)<br />
: Quick quiz<br />
: Sample student lecture<br />
<br />
At home:<br />
: Videos: 2 videos on Chapter 2.3<br />
: Reading: Chapter 2.3<br />
<br />
'''Class 3''' (M 9/25)<br />
: Quick quiz<br />
: Bring your laptop, demo V-REP UR5 scenes<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: 2 videos, Chapter 2.4 and 2.5<br />
: Reading: Chapters 2.4 and 2.5<br />
: Turn in HW1<br />
<br />
'''Class 4''' (W 9/27)<br />
: Quick quiz<br />
: Solutions to HW1; student examples of Grubler's formula<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 3, through Chapter 3.2.1<br />
: Reading: through Chapter 3.2.1<br />
: '''HW2, due 1:30 PM 10/4''':<br />
:: 1) Exercise 3.1, except the y_a axis points in the direction (1,0,0).<br />
:: 2) Exercise 3.2, except p = (1,2,3).<br />
:: 3) Exercise 3.5.<br />
:: 4) Exercise 3.9. <br />
:: 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.<br />
:: 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).<br />
:: 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.<br />
:: 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'''!<br />
<br />
'''Class 5''' (F 9/29)<br />
: Quick quiz<br />
: Lecture<br />
<br />
At home:<br />
: Videos: videos 4-6 of Chapter 3, through Chapter 3.2.3<br />
: Reading: through Chapter 3.2.3<br />
<br />
'''Class 6''' (M 10/2)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 7-9 of Chapter 3, Chapters 3.3.1 and 3.3.2<br />
: Reading: same sections<br />
<br />
'''Class 7''' (W 10/4)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 10-11, Chapter 3.3.3 and 3.4<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 8''' (F 10/6)<br />
: EXAM 1<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 4, through Chapter 4.1.2<br />
: Reading: same sections<br />
<br />
'''Class 9''' (M 10/9)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 2-3 of Chapter 4, Chapter 4.1.3<br />
: Reading: same sections<br />
<br />
'''Class 10''' (W 10/11)<br />
: Quick quiz<br />
: Student lecture 1 (Pawar, Subramanian, Goyal, Cai)<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 5, up to (not including) Chapter 5.1<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 11''' (F 10/13)<br />
: Quick quiz<br />
: Student lecture 2 (Wang, Wu, Xia, Zheng)<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 5, Chapter 5.1.1<br />
: Reading: same sections<br />
<br />
'''Class 12''' (M 10/16)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 3 and 4 of Chapter 5, Chapter 5.1.2 through 5.2<br />
: Reading: same sections<br />
<br />
'''Class 13''' (W 10/18)<br />
: Quick quiz<br />
: Student lecture 3 (Wiznitzers, Hutson, Spies)<br />
<br />
At home:<br />
: Videos: videos 5 and 6 of Chapter 5, Chapter 5.3 and 5.4<br />
: Reading: same sections<br />
: '''HW5, due 1:30 PM 10/25''': Exercises 5.2, 5.3, 5.23, 5.25, 6.7, and 6.8.<br />
<br />
'''Class 14''' (F 10/20)<br />
: Quick quiz<br />
: Student lecture 4 (Don, Chien, Husain, Sulaiman)<br />
<br />
At home:<br />
: Videos: videos 1 and 2 of Chapter 6,<br />
: Reading: intro of Chapter 6 and Chapter 6.2<br />
<br />
'''Class 15''' (M 10/23)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 6<br />
: Reading: Chapter 6.2<br />
<br />
'''Class 16''' (W 10/25)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 8, through 8.1.1<br />
: Reading: same sections<br />
: [[Media:ME449-HW6-2017.pdf|HW6, due 1:30 PM 11/1]]<br />
<br />
'''Class 17 ''' (F 10/27)<br />
: EXAM 2<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 8, through 8.1.2<br />
: Reading: same sections<br />
<br />
'''Class 18''' (M 10/30)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 8, through 8.1.3<br />
: Reading: same sections<br />
<br />
'''Class 19''' (W 11/1)<br />
: Quick quiz<br />
: Student lecture 5 (Zhang, Zhu, Meng, Luo)<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 8, through 8.2<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 20''' (F 11/3)<br />
: Quick quiz<br />
: Student lecture 6 (Lyu, Yi, Wang, Swissler)<br />
<br />
At home:<br />
: Videos: video 6 of Chapter 8, up to (not including) 8.4<br />
: Reading: same sections<br />
<br />
'''Class 21''' (M 11/6)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 7 of Chapter 8, Chapter 8.5 (skip 8.4)<br />
: Reading: same sections<br />
<br />
'''Class 22''' (W 11/8)<br />
: Quick quiz<br />
: Student lecture 7 (Warren, Kilaru, Wang, Mandana)<br />
<br />
At home:<br />
: Videos: videos 1-2 of Chapter 9, through Chapter 9.2<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 23''' (F 11/10)<br />
: Quick quiz<br />
: Student lecture 8 (Wang, Dai, Ma, Peng)<br />
<br />
At home:<br />
: Videos: video 4 of Chapter 9, Chapter 9.4 - 9.4.1 (skip 9.3)<br />
: Reading: same sections<br />
<br />
'''Class 24''' (M 11/13)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 5-6 of Chapter 9, up to (not including) Chapter 9.5<br />
: Reading: same sections<br />
<br />
'''Class 25''' (W 11/15)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 11, up to (not including) Chapter 11.2.2.1<br />
: Reading: same sections<br />
: '''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.<br />
:: '''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.<br />
:: '''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.<br />
<br />
'''Class 26''' (F 11/17)<br />
: EXAM 3<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 11, Chapter 11.2.2.1 and 11.2.2.2<br />
: Reading: same sections<br />
<br />
'''Class 27''' (M 11/20)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 6-8 of Chapter 11, Chapter 11.3<br />
: Reading: same sections<br />
: '''Turn in Part I of your final project on Canvas.'''<br />
<br />
'''Class 28''' (W 11/22)<br />
: Quick quiz<br />
: Student lecture 9 (Abiney, Aubrun, Anthony, Alston)<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 13, through Chapter 13.2<br />
: Reading: same sections<br />
<br />
'''Class 29''' (M 11/27)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Reading: odometry and mobile manipulation, Chapter 13.4 and 13.5<br />
<br />
'''Class 30''' (W 11/29)<br />
: Quick quiz<br />
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)<br />
<br />
At home:<br />
: Final assignment work<br />
<br />
'''Class 31''' (F 12/1)<br />
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)<br />
<br />
At home:<br />
: '''Your final project is due on Canvas by 11:59 PM on Wednesday Dec 6.'''<br />
<br />
--><br />
<br />
<!--<br />
==Archive==<br />
<br />
* [[ME 449 Robotic Manipulation (Archive 2012)|ME 449 Spring 2012]]<br />
* [[ME 449 Robotic Manipulation (Archive Spring 2014)|ME 449 Spring 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2014)|ME 449 Fall 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2015)|ME 449 Fall 2015]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2016)|ME 449 Fall 2016]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2017)|ME 449 Fall 2017]]<br />
--></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/ME_449_Robotic_ManipulationME 449 Robotic Manipulation2018-10-17T19:35:48Z<p>HuanWeng: </p>
<hr />
<div>'''Fall Quarter 2018'''<br />
<br />
* Instructor: Prof. Kevin Lynch<br />
* Meeting: 2:00-2:50, MWF, Frances Searle Building 1-441<br />
* TAs: Huan Weng, Tito Fernandez, and Zack Woodruff<br />
* Office hours: Mon 3:00-4:00, Tech B222, Prof. Lynch; Tues 3:30-4:30, Tech B241 (through the ME office by the freight elevator), TAs<br />
* Course website: [http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation]<br />
* Book website: [http://modernrobotics.org http://modernrobotics.org]<br />
<br />
==Course Summary==<br />
<br />
Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.<br />
<br />
==Prerequisites==<br />
<br />
Linear algebra, first-order linear ODEs, freshman-level physics/mechanics, a bit of programming background.<br />
<br />
==Grading==<br />
* 50% quizzes (quizzes will be open book, open notes, any cheat sheets you would like, but no electronics)<br />
* 20% assignments (lowest grade will be dropped)<br />
* 15% final project (due Wed Dec 12, during finals week)<br />
* 10% practice exercise for other students<br />
* 5% engagement: answering questions in class, participation in in-class exercises, and helping other students in class<br />
<br />
Your lowest assignment grade will be dropped. This policy is meant to handle '''ALL''' eventualities and emergencies: travel, job interview, overloaded that week, computer crashed, could not submit on time, problem with submitting to Canvas, dog ate it, slept in, forgot, busy watching the big game, etc. Please don't ask for an extension or an exception; you've already been given one! (But only one!)<br />
<br />
==Course Text and Software==<br />
<br />
This course uses the textbook ''Modern Robotics: Mechanics, Planning, and Control'', Kevin M. Lynch and Frank C. Park, Cambridge University Press 2017.<br />
<br />
[[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 V-REP simulator.]] You will program in Python, Mathematica, or MATLAB in this course.<br />
<br />
'''[[Modern Robotics Linear Algebra Review|Here is a linear algebra refresher appendix to accompany the book.]]'''<br />
<br />
==Video Lectures and the Flipped Classroom==<br />
<br />
This course will take advantage of video lectures and lecture comprehension quizzes on Coursera. (You can also see the video lectures, but not the lecture comprehension quizzes, outside Coursera at the video browser [http://modernrobotics.northwestern.edu '''http://modernrobotics.northwestern.edu'''] or using [[Modern_Robotics_Videos|'''direct links to the videos on YouTube''']].)<br />
<br />
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.<br />
<br />
* [https://www.coursera.org/learn/modernrobotics-course1 Course 1: Foundations of Robot Motion (Chapters 2 and 3)]<br />
* [https://www.coursera.org/learn/modernrobotics-course2 Course 2: Robot Kinematics (Chapters 4, 5, 6, and 7)]<br />
* [https://www.coursera.org/learn/modernrobotics-course3 Course 3: Robot Dynamics (Chapters 8 and 9)]<br />
* [https://www.coursera.org/learn/modernrobotics-course4 Course 4: Robot Motion Planning and Control (Chapters 10 and 11)]<br />
* [https://www.coursera.org/learn/modernrobotics-course5 Course 5: Robot Manipulation and Wheeled Mobile Robots (Chapters 12 and 13)]<br />
* [https://www.coursera.org/learn/modernrobotics-course6 Course 6: Capstone Project, Mobile Manipulation]<br />
<br />
'''[[Coursera Resources|This page collects together useful supplemental material to the Coursera courses]]'''.<br />
<br />
The general flow of the class will be the following: <br />
<br />
* Before class, watch the videos, do the lecture comprehension quizzes associated with each video, do the associated reading, and participate in any "discussion prompts" on Coursera. You should plan to bring any questions or confusion to class. In general, I recommend that you first watch the videos to get a quick understanding of the material of the chapter, then follow up by reading the appropriate sections of the book. The videos are short and dense, so don't expect to get by only watching the videos. You will need to read the book, then do the exercises, to gain mastery of the material. <br />
* In class, I will briefly review the lecture comprehension quizzes and the material that was covered, get a little discussion going and take any questions, and then ask you to work on a practice exercise either individually or in small groups. If time remains, you may work on homework together. I will be available to help.<br />
* On days when a homework is turned in, I will leave time for any questions about it. On days before a quiz, I will spend as much time reviewing the material covered by the quiz as you would like.<br />
<br />
==Practice Exercises==<br />
[[Media:ME449-practice.pdf|This file contains sample exercises and their solutions, useful for studying for tests or practicing your understanding of the material.]]<br />
<br />
==Student-Created Exercises==<br />
<br />
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 V-REP 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.<br />
<br />
You will create your exercise using [https://en.wikipedia.org/wiki/LaTeX LaTeX] (pronounced "lay teck" or "lah teck"), the standard for scientific document preparation. [https://www.overleaf.com/ Overleaf] is a free online implementation of LaTeX. To get started on your exercise,<br />
<br />
# Download [[Media:ME449-exercise.zip|'''this .zip file''']] and uncompress it. There are five files: main.tex, prelims.tex, twist-wrench.pdf, table-lamp.PNG, and LampSolution.PNG.<br />
# Create an account on [https://www.overleaf.com/ Overleaf].<br />
# Create a new (blank) project on Overleaf called "exercise."<br />
# Upload the five files to this project. (You may get a warning that your default main.tex file is being overwritten; don't worry about it.)<br />
# Click on main.tex to see your main LaTeX document.<br />
# Press the "Recompile" button to see the pdf document that is compiled from the five files. You can download the pdf file, or all the "source" files, by clicking on "Menu" and choosing which to download. '''[[Media:ME449-exercise-output.pdf|This is the .pdf file you should have created.]]'''<br />
<br />
main.tex is the main file of the project, and the only one that you will edit, so you should understand what is going on in that file. prelims.tex tells LaTeX what packages to use and defines some macros, e.g., \twist creates <math>\mathcal{V}</math> and \wrench creates <math>\mathcal{F}</math>. The other three files are image files that get included in the document. You will create different image files depending on your exercise. For example, you can make a nice hand drawing and then scan it.<br />
<br />
To learn more about typesetting in LaTeX, google is your friend! Try googling "latex math" or "latex math symbols," for example.<br />
<br />
You will turn in the source for your exercise as well as the final pdf file.<br />
<br />
==Approximate Syllabus and Reading==<br />
<br />
* Chapter 2, Configuration Space (weeks 1-2)<br />
* Chapter 3, Rigid-Body Motions (weeks 2-3)<br />
* Chapter 4, Forward Kinematics (week 4); section 4.2 is optional<br />
* Chapter 5, Velocity Kinematics and Statics (week 5)<br />
* Chapter 6, Inverse Kinematics (week 6); focus on section 6.2<br />
* Chapter 8, Dynamics of Open Chains (weeks 6-7); skip sections 8.4, 8.8, and 8.9<br />
* Chapter 9, Trajectory Generation (week 8); focus on sections 9.1 and 9.4<br />
* Chapter 11, Robot Control (week 9); focus on sections 11.1 through 11.4<br />
* Chapter 13, Wheeled Mobile Robots (week 10); skip section 13.3<br />
<br />
==Assignments==<br />
<br />
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.<br />
<br />
'''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.'''<br />
<br />
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.<br />
<br />
'''Instructions for uploading assignments to Canvas:'''<br />
<br />
0. '''Upload on time! Late submissions are not accepted.''' The cutoff time is 30 minutes before class the day the assignment is due.<br />
<br />
1. Only upload one zip file or rar file for each assignment;<br />
<br />
2. In your zip file or rar file, include all source codes in their original form, such as .cpp, .m, .py, .nb.<br />
<br />
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).<br />
<br />
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).<br />
<br />
5. Please name the upload file in the following format: LastName_FirstName.zip.<br />
<br />
* '''Assignment 1, due 30 minutes before class on Canvas, Wed Oct 10.''' Exercises 2.1, 2.4, 2.9 for mechanisms (a) and (b) from Fig 2.18, 2.22, 2.29, and 3.1. '''[[Media:HW1_answers_2018ME449.pdf|Homework answers]]'''<br />
* '''Assignment 2, due 30 minutes before class on Canvas, Wed Oct 17.''' Exercises 3.16, 3.17, 3.27, 3.30, 3.31, 3.49. '''[[Media:HW2_answers_2018ME449.pdf|Homework answers]]'''<br />
* '''Assignment 3, due 30 minutes before class on Canvas, Wed Oct 24.''' Exercises 4.2, 4.5, 4.14, 5.7, and 5.11(a).<br />
<br />
==Detailed Syllabus==<br />
[https://docs.google.com/spreadsheets/d/1UrBFai-1Z98Ry48bW50OMqxvvqZ3Jo8pHgZmljOgPpo/edit?usp=sharing '''The course calendar'''], including video lecture and reading assignments due before each class.<br />
<!--<br />
[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.''']<br />
<br />
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: <br />
: M: Video/reading comprehension quick quiz and help with homework. <br />
: W: Video/reading comprehension quick quiz, homework solutions, plus '''EITHER''' student lecture '''OR''' quiz preparation. <br />
: F: Video/reading comprehension quick quiz plus '''EITHER''' student lecture '''OR''' quiz.<br />
<br />
'''Class 1''' (W 9/20)<br />
: 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.<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 2, through Chapter 2.2<br />
: Reading: Chapters 2.1 and 2.2<br />
: Software: download github software with book, install V-REP and verify that you can use Scenes 1 and 2 (the UR5)<br />
: '''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.<br />
<br />
'''Class 2''' (F 9/22)<br />
: Quick quiz<br />
: Sample student lecture<br />
<br />
At home:<br />
: Videos: 2 videos on Chapter 2.3<br />
: Reading: Chapter 2.3<br />
<br />
'''Class 3''' (M 9/25)<br />
: Quick quiz<br />
: Bring your laptop, demo V-REP UR5 scenes<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: 2 videos, Chapter 2.4 and 2.5<br />
: Reading: Chapters 2.4 and 2.5<br />
: Turn in HW1<br />
<br />
'''Class 4''' (W 9/27)<br />
: Quick quiz<br />
: Solutions to HW1; student examples of Grubler's formula<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 3, through Chapter 3.2.1<br />
: Reading: through Chapter 3.2.1<br />
: '''HW2, due 1:30 PM 10/4''':<br />
:: 1) Exercise 3.1, except the y_a axis points in the direction (1,0,0).<br />
:: 2) Exercise 3.2, except p = (1,2,3).<br />
:: 3) Exercise 3.5.<br />
:: 4) Exercise 3.9. <br />
:: 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.<br />
:: 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).<br />
:: 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.<br />
:: 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'''!<br />
<br />
'''Class 5''' (F 9/29)<br />
: Quick quiz<br />
: Lecture<br />
<br />
At home:<br />
: Videos: videos 4-6 of Chapter 3, through Chapter 3.2.3<br />
: Reading: through Chapter 3.2.3<br />
<br />
'''Class 6''' (M 10/2)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 7-9 of Chapter 3, Chapters 3.3.1 and 3.3.2<br />
: Reading: same sections<br />
<br />
'''Class 7''' (W 10/4)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 10-11, Chapter 3.3.3 and 3.4<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 8''' (F 10/6)<br />
: EXAM 1<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 4, through Chapter 4.1.2<br />
: Reading: same sections<br />
<br />
'''Class 9''' (M 10/9)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 2-3 of Chapter 4, Chapter 4.1.3<br />
: Reading: same sections<br />
<br />
'''Class 10''' (W 10/11)<br />
: Quick quiz<br />
: Student lecture 1 (Pawar, Subramanian, Goyal, Cai)<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 5, up to (not including) Chapter 5.1<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 11''' (F 10/13)<br />
: Quick quiz<br />
: Student lecture 2 (Wang, Wu, Xia, Zheng)<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 5, Chapter 5.1.1<br />
: Reading: same sections<br />
<br />
'''Class 12''' (M 10/16)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 3 and 4 of Chapter 5, Chapter 5.1.2 through 5.2<br />
: Reading: same sections<br />
<br />
'''Class 13''' (W 10/18)<br />
: Quick quiz<br />
: Student lecture 3 (Wiznitzers, Hutson, Spies)<br />
<br />
At home:<br />
: Videos: videos 5 and 6 of Chapter 5, Chapter 5.3 and 5.4<br />
: Reading: same sections<br />
: '''HW5, due 1:30 PM 10/25''': Exercises 5.2, 5.3, 5.23, 5.25, 6.7, and 6.8.<br />
<br />
'''Class 14''' (F 10/20)<br />
: Quick quiz<br />
: Student lecture 4 (Don, Chien, Husain, Sulaiman)<br />
<br />
At home:<br />
: Videos: videos 1 and 2 of Chapter 6,<br />
: Reading: intro of Chapter 6 and Chapter 6.2<br />
<br />
'''Class 15''' (M 10/23)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 6<br />
: Reading: Chapter 6.2<br />
<br />
'''Class 16''' (W 10/25)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 8, through 8.1.1<br />
: Reading: same sections<br />
: [[Media:ME449-HW6-2017.pdf|HW6, due 1:30 PM 11/1]]<br />
<br />
'''Class 17 ''' (F 10/27)<br />
: EXAM 2<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 8, through 8.1.2<br />
: Reading: same sections<br />
<br />
'''Class 18''' (M 10/30)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 8, through 8.1.3<br />
: Reading: same sections<br />
<br />
'''Class 19''' (W 11/1)<br />
: Quick quiz<br />
: Student lecture 5 (Zhang, Zhu, Meng, Luo)<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 8, through 8.2<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 20''' (F 11/3)<br />
: Quick quiz<br />
: Student lecture 6 (Lyu, Yi, Wang, Swissler)<br />
<br />
At home:<br />
: Videos: video 6 of Chapter 8, up to (not including) 8.4<br />
: Reading: same sections<br />
<br />
'''Class 21''' (M 11/6)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 7 of Chapter 8, Chapter 8.5 (skip 8.4)<br />
: Reading: same sections<br />
<br />
'''Class 22''' (W 11/8)<br />
: Quick quiz<br />
: Student lecture 7 (Warren, Kilaru, Wang, Mandana)<br />
<br />
At home:<br />
: Videos: videos 1-2 of Chapter 9, through Chapter 9.2<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 23''' (F 11/10)<br />
: Quick quiz<br />
: Student lecture 8 (Wang, Dai, Ma, Peng)<br />
<br />
At home:<br />
: Videos: video 4 of Chapter 9, Chapter 9.4 - 9.4.1 (skip 9.3)<br />
: Reading: same sections<br />
<br />
'''Class 24''' (M 11/13)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 5-6 of Chapter 9, up to (not including) Chapter 9.5<br />
: Reading: same sections<br />
<br />
'''Class 25''' (W 11/15)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 11, up to (not including) Chapter 11.2.2.1<br />
: Reading: same sections<br />
: '''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.<br />
:: '''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.<br />
:: '''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.<br />
<br />
'''Class 26''' (F 11/17)<br />
: EXAM 3<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 11, Chapter 11.2.2.1 and 11.2.2.2<br />
: Reading: same sections<br />
<br />
'''Class 27''' (M 11/20)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 6-8 of Chapter 11, Chapter 11.3<br />
: Reading: same sections<br />
: '''Turn in Part I of your final project on Canvas.'''<br />
<br />
'''Class 28''' (W 11/22)<br />
: Quick quiz<br />
: Student lecture 9 (Abiney, Aubrun, Anthony, Alston)<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 13, through Chapter 13.2<br />
: Reading: same sections<br />
<br />
'''Class 29''' (M 11/27)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Reading: odometry and mobile manipulation, Chapter 13.4 and 13.5<br />
<br />
'''Class 30''' (W 11/29)<br />
: Quick quiz<br />
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)<br />
<br />
At home:<br />
: Final assignment work<br />
<br />
'''Class 31''' (F 12/1)<br />
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)<br />
<br />
At home:<br />
: '''Your final project is due on Canvas by 11:59 PM on Wednesday Dec 6.'''<br />
<br />
--><br />
<br />
<!--<br />
==Archive==<br />
<br />
* [[ME 449 Robotic Manipulation (Archive 2012)|ME 449 Spring 2012]]<br />
* [[ME 449 Robotic Manipulation (Archive Spring 2014)|ME 449 Spring 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2014)|ME 449 Fall 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2015)|ME 449 Fall 2015]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2016)|ME 449 Fall 2016]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2017)|ME 449 Fall 2017]]<br />
--></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:HW1_answers_2018ME449.pdfFile:HW1 answers 2018ME449.pdf2018-10-17T19:29:35Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:HW2_answers_2018ME449.pdfFile:HW2 answers 2018ME449.pdf2018-10-17T19:28:45Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/V-REP_IntroductionV-REP Introduction2018-03-20T07:02:23Z<p>HuanWeng: Update: Add more scenes and rewrite the introductions.</p>
<hr />
<div>== V-REP Introduction ==<br />
<br />
On [http://www.coppeliarobotics.com/index.html V-REP's homepage] the program is described as<br />
<br />
...the Swiss army knife among robot simulators: you won't find a simulator with more functions, features, or more elaborate APIs.<br />
<br />
V-REP's strength comes from several features:<br />
<br />
# V-REP provides a unified framework combining many powerful internal and external libraries that are often useful for robotics simulations. This includes dynamic simulation engines, forward/inverse kinematics tools, collision detection libraries, vision sensor simulations, path planning, GUI development tools, and built-in models of many common robots.<br />
# V-REP is highly extensible. V-REP developers provide an API that allows one to write custom plugins that add new features. You can embed [https://en.wikipedia.org/wiki/Lua_(programming_language) Lua] scripts directly into a simulation scene that, for example, process simulated sensor data, run control algorithms, implement user interfaces, or even send data to a physical robot. They also provide a remote API that allows one to develop standalone applications in many programming languages that are able to pass data in and out of a running V-REP simulation.<br />
# V-REP is cross-platform, mostly open-source, and provides a free educational license.<br />
<br />
The purpose of this page is not to teach you how to use V-REP. Rather it is to<br />
describe demonstration scenes that have been developed to help<br />
visualize robot arm kinematics. If you are interested in learning more about<br />
V-REP, check out the [[#Useful Resources|Useful Resources]] section below.<br />
<br />
== Demonstration V-REP Scenes ==<br />
<br />
To run either of the scenes below, the first step will be to [http://www.coppeliarobotics.com/downloads.html download V-REP] for your operating system. You should download the latest Non-limited EDUCATIONAL version. Next you will have to install V-REP. On Windows, you simply have an EXE that installs V-REP. On a Mac, you first need to unzip the download. The directory that is produced by unzipping the download contains a <code>vrep.app</code> directory that should allow you start V-REP through normal mechanisms, e.g., Finder/Spotlight/Launchpad. On Linux, you will need to extract the compressed tar archive (e.g., using a command like <code>tar xvf V-REP_PRO_EDU_V3_3_2_64_Linux.tar.gz</code>). Then you need to change directories into the V-REP source directory and run the <code>vrep.sh</code> shell script.<br />
<br />
Once V-REP is open you will want to run one of the scenes below. To run either of them, you first run V-REP, then you click <code>File->Open scene...</code> and open one of the ttt files that are linked below. Then click either the ''Play'' button from the top toolbar or click <code>Simulation->Start simulation</code> and a GUI should pop up. Clicking the ''Stop'' button or <code>Simulation->Stop simulation</code> will close the GUI and stop the simulation.<br />
<br />
The scenes below are implemented similarly. Except Scene 7, all the other scenes feature a simulation of a kinematically-controlled, non-respondable robot. ''Kinematically controlled'' means that all dynamics (inertias, torques, friction, etc.) of the system are neglected. We can specify a set of joint angles and the simulation is capable of instantaneously "teleporting" the robot to be at the new set of joint angles. ''Non-respondable'' means that the links of the robot are not capable of interacting with the world or each other through collisions. In other words, we can put the robot in configurations that result in self-collisions, but the simulation will ignore the collisions. Scene 7 is a partly dynamically-controlled simulation of a respondable [http://www.youbot-store.com/ youBot] from [https://www.kuka.com/en-us KUKA]. All revolute joints of the robots in the simulation scenes have no joint limits. <br />
<br />
In each scene, there is a single Lua script called a [http://www.coppeliarobotics.com/helpFiles/en/childScripts.htm Non-threaded child script]. When the scene is first run, there is a function that is called that sets up the GUI and creates variables that are going to be needed later on in the simulation. Then during every step of the simulation the [http://www.coppeliarobotics.com/helpFiles/en/mainScript.htm main script], which is part of every V-REP scene, runs an "actuation" function from the child script. This actuation function is responsible for processing all of the changes to the GUI since the last time it was called (buttons clicked, label updates, etc.), and for sending joint commands to the simulated robot. Technically, there is also a "sensing" function in the child script that gets called by the main script, but in each of these scenes, the sensing function is empty. The GUIs are all built with V-REP's [http://www.coppeliarobotics.com/helpFiles/en/customUIPlugin.htm Qt-based custom UI framework].<br />
<br />
=== Scene 1: CSV Animation MTB ===<br />
<br />
[[image:MTB-img.png|right|x150px]]<br />
<br />
This scene simulates a MTB robot, a virtual RRPR robot. It allows you to specify a csv file containing a trajectory of joint angles, and then animate this trajectory. Each column of the csv file is the joint angle/length through time for one of the joints (in the order of RRPR). In other words, a single row of the csv file represents a complete configuration of the robot at a particular time. The prismatic joint (P) has the joint limit range [0, 0.2]. The assumed time step between rows is equal to the time step that V-REP uses for simulation; the default is 0.05 seconds. The example csv file will show all the joints of MTB robot and you will need to provide a complete path to your csv file.<br />
<br />
* Download the ttt scene file [[Media:MTB_csvplayer.ttt|here]].<br />
* Download an example csv file [[Media:MTB_csvplayer.csv|here]].<br />
<br />
<br clear=all><br />
<br />
=== Scene 2: Interactive UR5 ===<br />
<br />
[[image:ur5-img.png|right|x150px]]<br />
<br />
This scene simulates a [https://www.universal-robots.com/products/ur5-robot/ UR5 robot] from [https://www.universal-robots.com/ Universal Robots]. The model of UR5 was created by importing a URDF from the ROS-Industrial [https://github.com/ros-industrial/universal_robot/tree/indigo-devel/ur_description/urdf ur5_description package]. The GUI in this scene features two tabs. One tab lets you drag sliders to modify the joint angles of each joint, and the other tab allows you to specify comma-separated angles for all 6 joints in an editable text box and ask for the SE(3) transformation from the base frame to the end-effector frame. The frames attached to the base and end-effector are persistently displayed (x-axis in red, y-axis in green, z-axis in blue). Note that all angles are specified in radians. <br />
<br />
* Download the ttt scene file [[Media:UR5_imported_interactive.ttt|here]].<br />
<br />
<br clear=all><br />
<br />
=== Scene 3: CSV Animation UR5 ===<br />
<br />
This scene is similar to Scene 1 except it simulates UR5 robot. You can interactively control the configuration of the mobile base and the arm. Each column of the csv file is the joint angle through time for one of the joints (first column is joint 1, last column is joint 6). <br />
<br />
* Download the ttt scene file [[Media:UR5_csvplayer.ttt|here]].<br />
* Download an example csv file [[Media:UR5_example_jointstates.csv|here]].<br />
<br />
=== Scene 4: Interactive youBot ===<br />
<br />
[[image:youbot-fig.png|right|x150px]]<br />
<br />
This scene simulates a youBot from KUKA. The KUKA youBot is a mobile manipulator consisting of a mecanum-wheel omnidirectional base and a 5R robot arm. The use of this scene is similar to Scene 2, by which you can interactively control the configuration of the mobile base and the arm.<br />
<br />
* Download the ttt scene file [[Media:YouBot_interactive.ttt|here]].<br />
<br />
<br clear=all><br />
<br />
=== Scene 5: CSV Animation youBot ===<br />
<br />
[[image:youbot-top-view.png|right|x150px]]<br />
<br />
This scene is similar to Scene 1 and 3, except now it simulates youBot and the csv file consists of 12 or 13 configuration variables per row: 3 for the mobile base (ordered as phi, x, y), 5 for the arm (joints 1 to 5), and 4 for the wheels (ordered as you see in the figure on the right). The last variable is optional, which is for controlling the state of the gripper as the end-effector. The gripper is open by default but you can set the last variable as 0 for open and 1 for close the gripper.<br />
<br />
* Download the ttt scene file [[Media:youBot_csvplayer.ttt|here]].<br />
* Download an example csv file [[Media:YouBot.csv|here]].<br />
<br />
<br clear=all><br />
<br />
=== Scene 6: CSV Motion Planning Kilobot ===<br />
<br />
[[image:kilobot-img.png|right|x150px]]<br />
<br />
This scene simulates a [https://www.kilobotics.com/ Kilobot]. It allows you to visualize a weighted undirected graph with some obstacles and a planar path for Kilobot to follow. The origin of the world frame is at (0,0) and the graph as well as the obstacles and Kilobot should be limited into a square of -0.5 <= x <= 0.5 and -0.5 <= y <= 0.5. The input of the GUI is a path of a folder including the following 4 specifically named csv files.<br />
<br />
obstacles.csv: This file specifies the locations and diameters of all cylinder obstacles. Each row represents the x, y value of one cylinder obstacle and its diameter in order.<br />
<br />
nodes.csv: This file specifies the ID numbers, locations of nodes and estimated actual cost-to-go from their locations to the goal. Each row represents the ID number, x, y value of one node and its estimated actual cost-to-go in order. The ID number should be continuous integers beginning with 1. Note that you will need to kick out any node blocked by obstacles.<br />
<br />
edges.csv: This file specifies the locations of all edges in the graph and their costs (weights). Each row represents two ID numbers of nodes which one edge is connecting and the edge's cost in order.<br />
Note that you will nee to kick out any edge blocked by obstacles.<br />
<br />
path.csv: This file specifies the nodes in the path with their ID numbers in order. In other words, there is only one row of numbers in this file, with the first number for the start node ID and the last number for the goal node ID.<br />
The scene will show all the obstacles, nodes, edges and one path from the start node to the goal node. The nodes, edges and path are marked in blue, yellow and green respectively. The goal node is marked in red. The Kilobot will move from the start node to the goal node following the path in a constant velocity.<br />
<br />
* Download the ttt scene file [[Media:planar_graph.ttt|here]].<br />
* Download an example folder for csv files [[Media:planar_graph.zip|here]]. You will need to extract it first.<br />
<br />
<br clear=all><br />
<br />
=== Scene 7: CSV Mobile Manipulation youBot ===<br />
<br />
[[image:youbot-capstone.png|right|x150px]]<br />
<br />
This scene is similar to Scene 5, except now the youBot is expected to accomplish a pick-and-place motion. There is a cube on the ground for youBot to pick and a frame representing the final end-effector configuration after placing the cube. The input and use of this scene is the same as Scene 5. The other differences with Scene 5 are that the whole robot is now respondable, meaning that the links of the robot are now capable of interacting with the world or each other through collisions. The gripper of the youBot and the cube are even dynamically modelled to simulate the practical pick-and-place motion. <br />
* Download the ttt scene file [[Media:youBot_capstone.ttt|here]].<br />
* Download an example csv file [[Media:youBot_capstone.csv|here]].<br />
<br />
<br clear=all><br />
<br />
=== Switching Between Scenes ===<br />
<br />
Press the ''Stop'' button to stop the simulation of the current scene, then choose <code>File>Open scene...</code>. You can also use <code>File>Open recent scene</code> to switch to a scene you previously loaded. Then you press the ''Play'' button to run the scene. Alternatively, stop the simulation and then press the <code>Scenes</code> button in the top toolbar to see which scenes are currently open and select one to be in the foreground. The scene selector toolbar button may also be used to switch between opened scenes. Read more [http://www.coppeliarobotics.com/helpFiles/en/scenes.htm here].<br />
<br />
=== Recording a Movie ===<br />
<br />
V-REP comes with a video recorder. Go to <code>Tools>Video recorder</code>. You may need to stop the current scene to be able to configure the video recorder. You can find more information on recording V-REP movies here: [http://www.coppeliarobotics.com/helpFiles/en/aviRecorder.htm http://www.coppeliarobotics.com/helpFiles/en/aviRecorder.htm].<br />
<br />
A simpler option may be to just use your computer's screen recording software. On the Mac, you can use Quicktime. On Linux, you can use [http://www.maartenbaert.be/simplescreenrecorder/ SimpleScreenRecorder] or [http://recordmydesktop.sourceforge.net/about.php recordMyDesktop]. On Windows, you can use [http://icecreamapps.com/Screen-Recorder/ Screen Recorder]. Or you may have your own solution.<br />
<br />
=== Exploring Other Scenes ===<br />
<br />
You are encouraged to explore some of the (quite impressive) scenes that come pre-loaded with V-REP. You can find these scenes in the <code>scenes</code> directory under the V-REP directory. Running and studying these can be a great way to learn more about the V-REP capabilities and to understand how to put together more complex scenes.<br />
<br />
== Useful Resources ==<br />
<br />
* [http://www.coppeliarobotics.com/v-repOverviewPresentation.pdf V-REP Overview Presentation]<br />
* [http://www.coppeliarobotics.com/videos.html V-REP Videos Page]<br />
* [http://www.coppeliarobotics.com/helpFiles/en/tutorials.htm V-REP Tutorial Series]<br />
* [http://www.coppeliarobotics.com/features.html Overview of V-REP Features]<br />
* [http://www.coppeliarobotics.com/helpFiles/en/apiOverview.htm V-REP API Documentation] These are all functions that can either be called directly from a custom C/C++ plugin or through a Lua embedded script.<br />
* [http://www.coppeliarobotics.com/helpFiles/en/remoteApiOverview.htm Remote API Documentation] The Remote API is how V-REP enables scripts and programs written in other languages (MATLAB, Java, Python, etc.) to interact with a V-REP simulation</div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:Youbot-capstone.pngFile:Youbot-capstone.png2018-03-20T06:53:31Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:Planar_graph.zipFile:Planar graph.zip2018-03-20T06:48:02Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:Planar_graph.tttFile:Planar graph.ttt2018-03-20T06:41:58Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:Kilobot-img.pngFile:Kilobot-img.png2018-03-20T06:40:47Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:YouBot_csvplayer.tttFile:YouBot csvplayer.ttt2018-03-20T06:31:41Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:UR5_csvplayer.tttFile:UR5 csvplayer.ttt2018-03-20T06:27:41Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:MTB_csvplayer.csvFile:MTB csvplayer.csv2018-03-20T06:19:46Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:MTB_csvplayer.tttFile:MTB csvplayer.ttt2018-03-20T06:19:06Z<p>HuanWeng: </p>
<hr />
<div></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/File:MTB-img.pngFile:MTB-img.png2018-03-20T06:17:36Z<p>HuanWeng: A screenshot of a V-REP scene of MTB</p>
<hr />
<div>A screenshot of a V-REP scene of MTB</div>HuanWenghttp://hades.mech.northwestern.edu/index.php/ME_449_Robotic_ManipulationME 449 Robotic Manipulation2017-11-14T07:22:04Z<p>HuanWeng: Undo revision 24506 by HuanWeng (talk)</p>
<hr />
<div>'''Fall Quarter 2017'''<br />
<br />
* Instructor: Prof. Kevin Lynch<br />
* Meeting: 2:00-2:50, MWF, Abbott Auditorium Pancoe<br />
* TAs: Huan Weng, HuanWeng2015@u.northwestern.edu, and Taosha Fan, TaoshaFan2015@u.northwestern.edu<br />
* Office hours: Tech B222, MW 3-4 (Lynch), Tech A211 Tues 2-3:30 (Weng or Fan)<br />
* course website: http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation<br />
<br />
==Course Summary==<br />
<br />
Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.<br />
<br />
==Grading==<br />
* 50% quizzes<br />
* 35% assignments (HWs, video/reading comprehension "quick quizzes"; low scores dropped)<br />
* 10% student lecture and learning materials<br />
* 5% engagement, providing helpful feedback to other students, and student-assigned in-class projects<br />
<br />
==Course Text and Software==<br />
<br />
All of these resources are available at [[Modern_Robotics|'''the homepage for the book''']].<br />
<br />
* Get the book. Purchase the printed book, published by Cambridge University Press, or download the preprint version of the book.<br />
* [https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.'''] <br />
* [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.''']]<br />
<br />
==Video Lectures==<br />
<br />
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''']].<br />
<br />
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. <br />
<br />
==Student Lectures==<br />
<br />
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<br />
* 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.<br />
* To generate new learning materials that others can benefit from. These could be posted to the book website (e.g., worked exercises, videos, etc.).<br />
* 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.<br />
<br />
On a student lecture day, this is a general (but flexible) guideline:<br />
* 5 minutes for the video/reading comprehension "quick quiz."<br />
* 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. <br />
* 5 minutes of constructive feedback from the class (what worked well, what could have been clearer, but always constructive).<br />
* 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.<br />
<br />
After your lecture, within one week your lecture team should provide me with:<br />
* [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. <br />
* [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. <br />
* [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.<br />
* 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.<br />
<br />
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.<br />
<br />
==Approximate Syllabus and Reading==<br />
<br />
* Chapter 2, Configuration Space (weeks 1-2)<br />
* Chapter 3, Rigid-Body Motions (weeks 2-3)<br />
* Chapter 4, Forward Kinematics (week 4); section 4.2 is optional<br />
* Chapter 5, Velocity Kinematics and Statics (week 5)<br />
* Chapter 6, Inverse Kinematics (week 6); focus on section 6.2<br />
* Chapter 8, Dynamics of Open Chains (weeks 6-7); skip sections 8.4, 8.8, and 8.9<br />
* Chapter 9, Trajectory Generation (week 8); focus on sections 9.1 and 9.4<br />
* Chapter 11, Robot Control (week 9); focus on sections 11.1 through 11.4<br />
* Chapter 13, Wheeled Mobile Robots (week 10); skip section 13.3<br />
<br />
==Assignments==<br />
<br />
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.<br />
<br />
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.<br />
<br />
'''Instructions for uploading assignments to Canvas:'''<br />
<br />
0. '''Upload on time! Late submissions are not accepted.''' The cutoff time is 30 minutes before class the day the assignment is due.<br />
<br />
1. Only upload one zip file or rar file for each assignment;<br />
<br />
2. In your zip file or rar file, include all source codes in their original form, such as .cpp, .m, .py, .nb.<br />
<br />
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).<br />
<br />
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).<br />
<br />
5. Please name the upload file in the following format: LastName_FirstName.zip.<br />
<br />
==Detailed Syllabus (Under Construction)==<br />
[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.''']<br />
<br />
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: <br />
: M: Video/reading comprehension quick quiz and help with homework. <br />
: W: Video/reading comprehension quick quiz, homework solutions, plus '''EITHER''' student lecture '''OR''' quiz preparation. <br />
: F: Video/reading comprehension quick quiz plus '''EITHER''' student lecture '''OR''' quiz.<br />
<br />
'''Class 1''' (W 9/20)<br />
: 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.<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 2, through Chapter 2.2<br />
: Reading: Chapters 2.1 and 2.2<br />
: Software: download github software with book, install V-REP and verify that you can use Scenes 1 and 2 (the UR5)<br />
: '''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.<br />
<br />
'''Class 2''' (F 9/22)<br />
: Quick quiz<br />
: Sample student lecture<br />
<br />
At home:<br />
: Videos: 2 videos on Chapter 2.3<br />
: Reading: Chapter 2.3<br />
<br />
'''Class 3''' (M 9/25)<br />
: Quick quiz<br />
: Bring your laptop, demo V-REP UR5 scenes<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: 2 videos, Chapter 2.4 and 2.5<br />
: Reading: Chapters 2.4 and 2.5<br />
: Turn in HW1<br />
<br />
'''Class 4''' (W 9/27)<br />
: Quick quiz<br />
: Solutions to HW1; student examples of Grubler's formula<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 3, through Chapter 3.2.1<br />
: Reading: through Chapter 3.2.1<br />
: '''HW2, due 1:30 PM 10/4''':<br />
:: 1) Exercise 3.1, except the y_a axis points in the direction (1,0,0).<br />
:: 2) Exercise 3.2, except p = (1,2,3).<br />
:: 3) Exercise 3.5.<br />
:: 4) Exercise 3.9. <br />
:: 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.<br />
:: 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).<br />
:: 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.<br />
:: 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'''!<br />
<br />
'''Class 5''' (F 9/29)<br />
: Quick quiz<br />
: Lecture<br />
<br />
At home:<br />
: Videos: videos 4-6 of Chapter 3, through Chapter 3.2.3<br />
: Reading: through Chapter 3.2.3<br />
<br />
'''Class 6''' (M 10/2)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 7-9 of Chapter 3, Chapters 3.3.1 and 3.3.2<br />
: Reading: same sections<br />
<br />
'''Class 7''' (W 10/4)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 10-11, Chapter 3.3.3 and 3.4<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 8''' (F 10/6)<br />
: Quick quiz<br />
: EXAM 1<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 4, through Chapter 4.1.2<br />
: Reading: same sections<br />
<br />
'''Class 9''' (M 10/9)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 2-3 of Chapter 4, Chapter 4.1.3<br />
: Reading: same sections<br />
<br />
'''Class 10''' (W 10/11)<br />
: Quick quiz<br />
: Student lecture 1 (Pawar, Subramanian, Goyal, Cai)<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 5, up to (not including) Chapter 5.1<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 11''' (F 10/13)<br />
: Quick quiz<br />
: Student lecture 2 (Wang, Wu, Xia, Zheng)<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 5, Chapter 5.1.1<br />
: Reading: same sections<br />
<br />
'''Class 12''' (M 10/16)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 3 and 4 of Chapter 5, Chapter 5.1.2 through 5.2<br />
: Reading: same sections<br />
<br />
'''Class 13''' (W 10/18)<br />
: Quick quiz<br />
: Student lecture 3 (Wiznitzers, Hutson, Spies)<br />
<br />
At home:<br />
: Videos: videos 5 and 6 of Chapter 5, Chapter 5.3 and 5.4<br />
: Reading: same sections<br />
: '''HW5, due 1:30 PM 10/25''': Exercises 5.2, 5.3, 5.23, 5.25, 6.7, and 6.8.<br />
<br />
'''Class 14''' (F 10/20)<br />
: Quick quiz<br />
: Student lecture 4 (Don, Chien, Husain, Sulaiman)<br />
<br />
At home:<br />
: Videos: videos 1 and 2 of Chapter 6,<br />
: Reading: intro of Chapter 6 and Chapter 6.2<br />
<br />
'''Class 15''' (M 10/23)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 6<br />
: Reading: Chapter 6.2<br />
<br />
'''Class 16''' (W 10/25)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 8, through 8.1.1<br />
: Reading: same sections<br />
: [[Media:ME449-HW6-2017.pdf|HW6, due 1:30 PM 11/1]]<br />
<br />
'''Class 17 ''' (F 10/27)<br />
: Quick quiz<br />
: EXAM 2<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 8, through 8.1.2<br />
: Reading: same sections<br />
<br />
'''Class 18''' (M 10/30)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 8, through 8.1.3<br />
: Reading: same sections<br />
<br />
'''Class 19''' (W 11/1)<br />
: Quick quiz<br />
: Student lecture 5 (Zhang, Zhu, Meng, Luo)<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 8, through 8.2<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 20''' (F 11/3)<br />
: Quick quiz<br />
: Student lecture 6 (Lyu, Yi, Wang, Swissler)<br />
<br />
At home:<br />
: Videos: video 6 of Chapter 8, up to (not including) 8.4<br />
: Reading: same sections<br />
<br />
'''Class 21''' (M 11/6)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 7 of Chapter 8, Chapter 8.5 (skip 8.4)<br />
: Reading: same sections<br />
<br />
'''Class 22''' (W 11/8)<br />
: Quick quiz<br />
: Student lecture 7 (Warren, Kilaru, Wang, Mandana)<br />
<br />
At home:<br />
: Videos: videos 1-2 of Chapter 9, through Chapter 9.2<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 23''' (F 11/10)<br />
: Quick quiz<br />
: Student lecture 8 (Wang, Dai, Ma, Peng)<br />
<br />
At home:<br />
: Videos: video 4 of Chapter 9, Chapter 9.4 - 9.4.1 (skip 9.3)<br />
: Reading: same sections<br />
<br />
'''Class 24''' (M 11/13)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 5-6 of Chapter 9, up to (not including) Chapter 9.5<br />
: Reading: same sections<br />
<br />
'''Class 25''' (W 11/15)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 11, up to (not including) Chapter 11.2.2.1<br />
: Reading: same sections<br />
<br />
'''Class 26''' (F 11/17)<br />
: Quick quiz<br />
: EXAM 3<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 11, Chapter 11.2.2.1 and 11.2.2.2<br />
: Reading: same sections<br />
<br />
'''Class 27''' (M 11/20)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 6-8 of Chapter 11, Chapter 11.3<br />
: Reading: same sections<br />
<br />
'''Class 28''' (W 11/22)<br />
: Quick quiz<br />
: Student lecture 9 (Abiney, Aubrun, Anthony, Alston)<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 13, through Chapter 13.2<br />
: Reading: same sections<br />
<br />
'''Class 29''' (F 11/27)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos on odometry and mobile manipulation, Chapter 13.4 and 13.5<br />
: Reading: same sections<br />
<br />
'''Class 30''' (W 11/29)<br />
: Quick quiz<br />
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)<br />
<br />
At home:<br />
: Final assignment work<br />
<br />
'''Class 31''' (F 12/1)<br />
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)<br />
<br />
<!--<br />
==Archive==<br />
<br />
* [[ME 449 Robotic Manipulation (Archive 2012)|ME 449 Spring 2012]]<br />
* [[ME 449 Robotic Manipulation (Archive Spring 2014)|ME 449 Spring 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2014)|ME 449 Fall 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2015)|ME 449 Fall 2015]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2016)|ME 449 Fall 2016]]<br />
--></div>HuanWenghttp://hades.mech.northwestern.edu/index.php/ME_449_Robotic_ManipulationME 449 Robotic Manipulation2017-11-14T07:18:57Z<p>HuanWeng: /* Detailed Syllabus (Under Construction) */</p>
<hr />
<div>'''Fall Quarter 2017'''<br />
<br />
* Instructor: Prof. Kevin Lynch<br />
* Meeting: 2:00-2:50, MWF, Abbott Auditorium Pancoe<br />
* TAs: Huan Weng, HuanWeng2015@u.northwestern.edu, and Taosha Fan, TaoshaFan2015@u.northwestern.edu<br />
* Office hours: Tech B222, MW 3-4 (Lynch), Tech A211 Tues 2-3:30 (Weng or Fan)<br />
* course website: http://hades.mech.northwestern.edu/index.php/ME_449_Robotic_Manipulation<br />
<br />
==Course Summary==<br />
<br />
Mechanics of robotic manipulation, computer representations and algorithms for manipulation planning, and applications to industrial automation, parts feeding, grasping, fixturing, and assembly.<br />
<br />
==Grading==<br />
* 50% quizzes<br />
* 35% assignments (HWs, video/reading comprehension "quick quizzes"; low scores dropped)<br />
* 10% student lecture and learning materials<br />
* 5% engagement, providing helpful feedback to other students, and student-assigned in-class projects<br />
<br />
==Course Text and Software==<br />
<br />
All of these resources are available at [[Modern_Robotics|'''the homepage for the book''']].<br />
<br />
* Get the book. Purchase the printed book, published by Cambridge University Press, or download the preprint version of the book.<br />
* [https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.'''] <br />
* [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.''']]<br />
<br />
==Video Lectures==<br />
<br />
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''']].<br />
<br />
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. <br />
<br />
==Student Lectures==<br />
<br />
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<br />
* 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.<br />
* To generate new learning materials that others can benefit from. These could be posted to the book website (e.g., worked exercises, videos, etc.).<br />
* 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.<br />
<br />
On a student lecture day, this is a general (but flexible) guideline:<br />
* 5 minutes for the video/reading comprehension "quick quiz."<br />
* 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. <br />
* 5 minutes of constructive feedback from the class (what worked well, what could have been clearer, but always constructive).<br />
* 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.<br />
<br />
After your lecture, within one week your lecture team should provide me with:<br />
* [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. <br />
* [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. <br />
* [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.<br />
* 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.<br />
<br />
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.<br />
<br />
==Approximate Syllabus and Reading==<br />
<br />
* Chapter 2, Configuration Space (weeks 1-2)<br />
* Chapter 3, Rigid-Body Motions (weeks 2-3)<br />
* Chapter 4, Forward Kinematics (week 4); section 4.2 is optional<br />
* Chapter 5, Velocity Kinematics and Statics (week 5)<br />
* Chapter 6, Inverse Kinematics (week 6); focus on section 6.2<br />
* Chapter 8, Dynamics of Open Chains (weeks 6-7); skip sections 8.4, 8.8, and 8.9<br />
* Chapter 9, Trajectory Generation (week 8); focus on sections 9.1 and 9.4<br />
* Chapter 11, Robot Control (week 9); focus on sections 11.1 through 11.4<br />
* Chapter 13, Wheeled Mobile Robots (week 10); skip section 13.3<br />
<br />
==Assignments==<br />
<br />
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.<br />
<br />
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.<br />
<br />
'''Instructions for uploading assignments to Canvas:'''<br />
<br />
0. '''Upload on time! Late submissions are not accepted.''' The cutoff time is 30 minutes before class the day the assignment is due.<br />
<br />
1. Only upload one zip file or rar file for each assignment;<br />
<br />
2. In your zip file or rar file, include all source codes in their original form, such as .cpp, .m, .py, .nb.<br />
<br />
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).<br />
<br />
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).<br />
<br />
5. Please name the upload file in the following format: LastName_FirstName.zip.<br />
<br />
==Detailed Syllabus (Under Construction)==<br />
[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.''']<br />
<br />
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: <br />
: M: Video/reading comprehension quick quiz and help with homework. <br />
: W: Video/reading comprehension quick quiz, homework solutions, plus '''EITHER''' student lecture '''OR''' quiz preparation. <br />
: F: Video/reading comprehension quick quiz plus '''EITHER''' student lecture '''OR''' quiz.<br />
<br />
'''Class 1''' (W 9/20)<br />
: 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.<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 2, through Chapter 2.2<br />
: Reading: Chapters 2.1 and 2.2<br />
: Software: download github software with book, install V-REP and verify that you can use Scenes 1 and 2 (the UR5)<br />
: '''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.<br />
<br />
'''Class 2''' (F 9/22)<br />
: Quick quiz<br />
: Sample student lecture<br />
<br />
At home:<br />
: Videos: 2 videos on Chapter 2.3<br />
: Reading: Chapter 2.3<br />
<br />
'''Class 3''' (M 9/25)<br />
: Quick quiz<br />
: Bring your laptop, demo V-REP UR5 scenes<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: 2 videos, Chapter 2.4 and 2.5<br />
: Reading: Chapters 2.4 and 2.5<br />
: Turn in HW1<br />
<br />
'''Class 4''' (W 9/27)<br />
: Quick quiz<br />
: Solutions to HW1; student examples of Grubler's formula<br />
<br />
At home:<br />
: Videos: first 3 videos of Chapter 3, through Chapter 3.2.1<br />
: Reading: through Chapter 3.2.1<br />
: '''HW2, due 1:30 PM 10/4''':<br />
:: 1) Exercise 3.1, except the y_a axis points in the direction (1,0,0).<br />
:: 2) Exercise 3.2, except p = (1,2,3).<br />
:: 3) Exercise 3.5.<br />
:: 4) Exercise 3.9. <br />
:: 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.<br />
:: 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).<br />
:: 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.<br />
:: 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'''!<br />
<br />
'''Class 5''' (F 9/29)<br />
: Quick quiz<br />
: Lecture<br />
<br />
At home:<br />
: Videos: videos 4-6 of Chapter 3, through Chapter 3.2.3<br />
: Reading: through Chapter 3.2.3<br />
<br />
'''Class 6''' (M 10/2)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 7-9 of Chapter 3, Chapters 3.3.1 and 3.3.2<br />
: Reading: same sections<br />
<br />
'''Class 7''' (W 10/4)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 10-11, Chapter 3.3.3 and 3.4<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 8''' (F 10/6)<br />
: Quick quiz<br />
: EXAM 1<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 4, through Chapter 4.1.2<br />
: Reading: same sections<br />
<br />
'''Class 9''' (M 10/9)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 2-3 of Chapter 4, Chapter 4.1.3<br />
: Reading: same sections<br />
<br />
'''Class 10''' (W 10/11)<br />
: Quick quiz<br />
: Student lecture 1 (Pawar, Subramanian, Goyal, Cai)<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 5, up to (not including) Chapter 5.1<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 11''' (F 10/13)<br />
: Quick quiz<br />
: Student lecture 2 (Wang, Wu, Xia, Zheng)<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 5, Chapter 5.1.1<br />
: Reading: same sections<br />
<br />
'''Class 12''' (M 10/16)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 3 and 4 of Chapter 5, Chapter 5.1.2 through 5.2<br />
: Reading: same sections<br />
<br />
'''Class 13''' (W 10/18)<br />
: Quick quiz<br />
: Student lecture 3 (Wiznitzers, Hutson, Spies)<br />
<br />
At home:<br />
: Videos: videos 5 and 6 of Chapter 5, Chapter 5.3 and 5.4<br />
: Reading: same sections<br />
: '''HW5, due 1:30 PM 10/25''': Exercises 5.2, 5.3, 5.23, 5.25, 6.7, and 6.8.<br />
<br />
'''Class 14''' (F 10/20)<br />
: Quick quiz<br />
: Student lecture 4 (Don, Chien, Husain, Sulaiman)<br />
<br />
At home:<br />
: Videos: videos 1 and 2 of Chapter 6,<br />
: Reading: intro of Chapter 6 and Chapter 6.2<br />
<br />
'''Class 15''' (M 10/23)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 6<br />
: Reading: Chapter 6.2<br />
<br />
'''Class 16''' (W 10/25)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: video 1 of Chapter 8, through 8.1.1<br />
: Reading: same sections<br />
: [[Media:ME449-HW6-2017.pdf|HW6, due 1:30 PM 11/1]]<br />
<br />
'''Class 17 ''' (F 10/27)<br />
: Quick quiz<br />
: EXAM 2<br />
<br />
At home:<br />
: Videos: video 2 of Chapter 8, through 8.1.2<br />
: Reading: same sections<br />
<br />
'''Class 18''' (M 10/30)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 3 of Chapter 8, through 8.1.3<br />
: Reading: same sections<br />
<br />
'''Class 19''' (W 11/1)<br />
: Quick quiz<br />
: Student lecture 5 (Zhang, Zhu, Meng, Luo)<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 8, through 8.2<br />
: Reading: same sections<br />
: '''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).<br />
<br />
'''Class 20''' (F 11/3)<br />
: Quick quiz<br />
: Student lecture 6 (Lyu, Yi, Wang, Swissler)<br />
<br />
At home:<br />
: Videos: video 6 of Chapter 8, up to (not including) 8.4<br />
: Reading: same sections<br />
<br />
'''Class 21''' (M 11/6)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: video 7 of Chapter 8, Chapter 8.5 (skip 8.4)<br />
: Reading: same sections<br />
<br />
'''Class 22''' (W 11/8)<br />
: Quick quiz<br />
: Student lecture 7 (Warren, Kilaru, Wang, Mandana)<br />
<br />
At home:<br />
: Videos: videos 1-2 of Chapter 9, through Chapter 9.2<br />
: Reading: same sections<br />
: '''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.<br />
<br />
'''Class 23''' (F 11/10)<br />
: Quick quiz<br />
: Student lecture 8 (Wang, Dai, Ma, Peng)<br />
<br />
At home:<br />
: Videos: video 4 of Chapter 9, Chapter 9.4 - 9.4.1 (skip 9.3)<br />
: Reading: same sections<br />
<br />
'''Class 24''' (M 11/13)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 5-6 of Chapter 9, up to (not including) Chapter 9.5<br />
: Reading: same sections<br />
<br />
'''Class 25''' (W 11/15)<br />
: Quick quiz<br />
: Exam prep<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 11, up to (not including) Chapter 11.2.2.1<br />
: Reading: same sections<br />
: '''Final Project (worth 2 times a normal assignment)''': Exercise 13.33<br />
:: The project is separated into two parts with two deadlines shown below.<br />
:: '''Part I, due 1:30 PM 11/22''': Ex13.33(a)(b): Turn in your solutions (handwritten or typed) and any code (written or used).<br />
:: '''Part II, due 11:59 PM 12/6''': Ex13.33(c)(d)(e): Turn in 1) solutions (handwritten or typed). 2) all codes (written or used). 3) plots created by codes. 4) The V-REP .ttt scene file you use (should be Scene 4). 5) The .csv file you export and use. 6)The short movies you record.<br />
<br />
<br />
'''Class 26''' (F 11/17)<br />
: Quick quiz<br />
: EXAM 3<br />
<br />
At home:<br />
: Videos: videos 4-5 of Chapter 11, Chapter 11.2.2.1 and 11.2.2.2<br />
: Reading: same sections<br />
<br />
'''Class 27''' (M 11/20)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos 6-8 of Chapter 11, Chapter 11.3<br />
: Reading: same sections<br />
<br />
'''Class 28''' (W 11/22)<br />
: Quick quiz<br />
: Student lecture 9 (Abiney, Aubrun, Anthony, Alston)<br />
<br />
At home:<br />
: Videos: videos 1-3 of Chapter 13, through Chapter 13.2<br />
: Reading: same sections<br />
<br />
'''Class 29''' (F 11/27)<br />
: Quick quiz<br />
: Help with HW<br />
<br />
At home:<br />
: Videos: videos on odometry and mobile manipulation, Chapter 13.4 and 13.5<br />
: Reading: same sections<br />
<br />
'''Class 30''' (W 11/29)<br />
: Quick quiz<br />
: Student lecture 10 (Miller, Berrueta, Davis, Tobia)<br />
<br />
At home:<br />
: Final assignment work<br />
<br />
'''Class 31''' (F 12/1)<br />
: Student lecture 11 (Fernandez, Lutzen, SaLoutos, Iwankiw)<br />
<br />
<!--<br />
==Archive==<br />
<br />
* [[ME 449 Robotic Manipulation (Archive 2012)|ME 449 Spring 2012]]<br />
* [[ME 449 Robotic Manipulation (Archive Spring 2014)|ME 449 Spring 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2014)|ME 449 Fall 2014]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2015)|ME 449 Fall 2015]]<br />
* [[ME 449 Robotic Manipulation (Archive Fall 2016)|ME 449 Fall 2016]]<br />
--></div>HuanWeng