http://hades.mech.northwestern.edu/api.php?action=feedcontributions&user=Lynch&feedformat=atomMech - User contributions [en]2019-08-18T09:12:00ZUser contributionsMediaWiki 1.18.2http://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-08-01T03:09:19Z<p>Lynch: /* Chapter 12 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">'''Updates in red were added Aug 2019 or later, after the list of changes was given to David.'''</span><br />
<br />
In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. <br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: '''Several updates at the end of the preface.''' Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." (In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes?)<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. Kevin can provide.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."<br />
* <span style="color:#ff0000">In Chapter 12.1.6, just before Example 12.5, mention that point at infinity on the contact normal line correspond to translations and have +/- labels. Parallel contact normals for multiple contacts leave that point at infinity still with the +/- label after intersecting their feasible CoRs. </span><br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. The statement is equivalent with and without the absolute value signs, so we got rid of them.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-08-01T03:05:13Z<p>Lynch: /* Chapter 5 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">'''Updates in red were added Aug 2019 or later, after the list of changes was given to David.'''</span><br />
<br />
In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. <br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: '''Several updates at the end of the preface.''' Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." (In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes?)<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. Kevin can provide.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. The statement is equivalent with and without the absolute value signs, so we got rid of them.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-08-01T03:04:39Z<p>Lynch: /* Chapter 2 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">'''Updates in red were added Aug 2019 or later, after the list of changes was given to David.'''</span><br />
<br />
In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. <br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: '''Several updates at the end of the preface.''' Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." (In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes?)<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. The statement is equivalent with and without the absolute value signs, so we got rid of them.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-08-01T03:04:11Z<p>Lynch: </p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">'''Updates in red were added Aug 2019 or later, after the list of changes was given to David.'''</span><br />
<br />
In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. <br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: '''Several updates at the end of the preface.''' Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. The statement is equivalent with and without the absolute value signs, so we got rid of them.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-24T11:15:33Z<p>Lynch: /* Preface */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: '''Several updates at the end of the preface.''' Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-24T11:14:33Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specific.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-24T11:14:07Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specifid.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations, as in the Dropbox directory "Robotics Textbook Second Edition Sandbox".'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-24T03:01:19Z<p>Lynch: /* About the Authors */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book, Practice Exercises, and Linear Algebra Review ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
The material in Modern Robotics also forms the basis for two edX online courses. These courses were created before the book was finished, so some of the notation used is a bit different from that used in the book.<br />
<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-i Robot Mechanics and Control, Part I]<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-ii Robot Mechanics and Control, Part II]<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the ''IEEE Transactions on Robotics'', former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. In 2014 he received the Seoul National University Teaching Excellence Award. He is a fellow of the IEEE, former Editor-in-Chief of the ''IEEE Transactions on Robotics'', and developer of the edX courses Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/File:AppendixE-linear-algebra-review-July16-2019.pdfFile:AppendixE-linear-algebra-review-July16-2019.pdf2019-07-16T16:17:55Z<p>Lynch: </p>
<hr />
<div></div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_Robotics_Linear_Algebra_ReviewModern Robotics Linear Algebra Review2019-07-16T16:16:37Z<p>Lynch: </p>
<hr />
<div>'''[[Media:AppendixE-linear-algebra-review-July16-2019.pdf|This is a linear algebra refresher appendix]]''' (Appendix E) to accompany the book '''[[Modern Robotics|"Modern Robotics: Mechanics, Planning, and Control."]]''' It covers most of the linear algebra concepts used in the book, and a few more, and includes a glossary of terms and a few examples of how the linear algebra concepts are used (particularly in feedback control).<br />
<br />
This succinct appendix was written for students who have studied some of these concepts in linear algebra but are rusty and need a little review.<br />
<br />
The current version is dated July 16, 2019. This version has only minor updates to versions posted in September 21, 2018 and June 23, 2018.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_Robotics_Linear_Algebra_ReviewModern Robotics Linear Algebra Review2019-07-16T16:16:20Z<p>Lynch: </p>
<hr />
<div>'''[[Media:AppendixE-linear-algebra-review-Sept21-2018.pdf|This is a linear algebra refresher appendix]]''' (Appendix E) to accompany the book '''[[Modern Robotics|"Modern Robotics: Mechanics, Planning, and Control."]]''' It covers most of the linear algebra concepts used in the book, and a few more, and includes a glossary of terms and a few examples of how the linear algebra concepts are used (particularly in feedback control).<br />
<br />
This succinct appendix was written for students who have studied some of these concepts in linear algebra but are rusty and need a little review.<br />
<br />
The current version is dated July 16, 2019. This version has only minor updates to versions posted in September 21, 2018 and June 23, 2018.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T13:46:07Z<p>Lynch: /* About the Authors */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book, Practice Exercises, and Linear Algebra Review ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
The material in Modern Robotics also forms the basis for two edX online courses. These courses were created before the book was finished, so some of the notation used is a bit different from that used in the book.<br />
<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-i Robot Mechanics and Control, Part I]<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-ii Robot Mechanics and Control, Part II]<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the ''IEEE Transactions on Robotics'', former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. In 2014 he received the Seoul National University Teaching Excellence Award. He is a fellow of the IEEE, former Editor-in-Chief of the ''IEEE Transactions on Robotics'', and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T11:00:20Z<p>Lynch: /* Book */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book, Practice Exercises, and Linear Algebra Review ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
The material in Modern Robotics also forms the basis for two edX online courses. These courses were created before the book was finished, so some of the notation used is a bit different from that used in the book.<br />
<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-i Robot Mechanics and Control, Part I]<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-ii Robot Mechanics and Control, Part II]<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the IEEE Transactions on Robotics, former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. In 2014 he received the Seoul National University Teaching Excellence Award. He is a fellow of the IEEE, former Editor-in-Chief of the IEEE Transactions on Robotics, and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T03:23:28Z<p>Lynch: /* About the Authors */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
The material in Modern Robotics also forms the basis for two edX online courses. These courses were created before the book was finished, so some of the notation used is a bit different from that used in the book.<br />
<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-i Robot Mechanics and Control, Part I]<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-ii Robot Mechanics and Control, Part II]<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the IEEE Transactions on Robotics, former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. In 2014 he received the Seoul National University Teaching Excellence Award. He is a fellow of the IEEE, former Editor-in-Chief of the IEEE Transactions on Robotics, and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T03:17:05Z<p>Lynch: /* Online Courses */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
The material in Modern Robotics also forms the basis for two edX online courses. These courses were created before the book was finished, so some of the notation used is a bit different from that used in the book.<br />
<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-i Robot Mechanics and Control, Part I]<br />
* [https://www.edx.org/course/robot-mechanics-and-control-part-ii Robot Mechanics and Control, Part II]<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the IEEE Transactions on Robotics, former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. He is a fellow of the IEEE, former Editor-in-Chief of the IEEE Transactions on Robotics, and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T03:13:07Z<p>Lynch: /* About the Authors */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the IEEE Transactions on Robotics, former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the HKUST Robotics Institute, NYU Courant Institute, and the Interactive Computing Department at Georgia Tech. He is a fellow of the IEEE, former Editor-in-Chief of the IEEE Transactions on Robotics, and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_RoboticsModern Robotics2019-07-16T03:09:18Z<p>Lynch: /* Why LynchAndPark.org? */</p>
<hr />
<div>[[File:ModernRoboticsCover.jpg|right|thumb|x300px|The Cambridge University Press cover.]] <br />
This is the home page of the textbook "Modern Robotics: Mechanics, Planning, and Control," Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017, ISBN 9781107156302. Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
If you find this book useful for a course or self-study, please contact Kevin or Frank and let us know!<br />
<br />
'''[[Modern_Robotics#Online_Courses | Modern Robotics is now available as online courses on Coursera.]]'''<br />
<br />
'''From the foreword:'''<br />
<br />
"Frank and Kevin have provided a wonderfully clear and patient explanation of their subject." '''Roger Brockett''', ''Harvard University''<br />
<br />
"''Modern Robotics'' imparts the most important insights of robotics ... with a clarity that makes it accessible to undergraduate students." '''Matthew T. Mason''', ''Carnegie Mellon University''<br />
<br />
== Book ==<br />
<br />
Purchase the hardback through [https://www.amazon.com/gp/product/1107156300/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1107156300&linkCode=as2&tag=nu32book-20&linkId=f522685bc8cc019b5e064ce65fb510df '''Amazon''']or through [http://www.cambridge.org/ModernRobotics '''Cambridge University Press'''], or check out the free preprint version below.<br />
<br />
This book is the result of course notes developed over many years for the course M2794.0027 Introduction to Robotics at Seoul National University and ME 449 Robotic Manipulation at Northwestern University. The evolving course notes have been posted on the internet for years to support these classes. <br />
<br />
The for-purchase version of the book from Cambridge University Press has improved layout and typesetting, updated figures, different pagination (and fewer pages), and more careful copyediting, and it is considered the "official" version of the book. But the online preprint version of the book has the same chapters, sections, and exercises, and it is quite close in content to the Cambridge-published version. The current, and final preprint, online version of the book is dated May 2017. We posted preliminary versions of the book in October and November 2016; those versions should be discarded. <br />
<br />
We are posting four versions of the book. All versions have exactly the same contents and pagination. They differ only in the sizes of the margins and the size of the print, as manipulated in Adobe Acrobat after latex'ing. Two of the versions have working hyperlinks for navigating the book on your computer or tablet.<br />
<br />
'''With working hyperlinks.''' (To navigate the book using the hyperlinks, click on the hyperlink. To go back where you came from, choose the button or keystroke appropriate to your pdf reader. For example, on the Mac with Acrobat or Acrobat Reader, use cmd-left arrow. With Preview on the Mac, use cmd-[. Some readers on other operating systems use alt-left arrow. You can google to see which solution works for your pdf reader.)<br />
* [[Media:MR.pdf|Default 8.5x11 or A4 version]]. Printable version with 10 pt font and large margins.<br />
* [[Media:MR-tablet.pdf|Tablet version]]. Margins have been eliminated so that no space is wasted when viewing the document on a computer or tablet.<br />
<br />
'''Without working hyperlinks.'''<br />
* [[Media:MR-largefont.pdf|Large font 8.5x11 or A4 version]]. Printable version with 12 pt font equivalent and smaller margins than the 10 pt default version.<br />
* [[Media:MR-2up.pdf|2up version]]. Printable version with 2 book pages per page, for saving paper if you have good eyes. Approximately 8.5 pt font equivalent.<br />
<br />
These files have been compressed to about 7 MB. Let us know if you have any problems reading them. Please note that recent versions of the default Mac OS X pdf reader, Preview, are known to have some bugs displaying certain images in pdf files. If a figure is not appearing properly, please try a better pdf viewer, like Acrobat Reader.<br />
<br />
'''Table of Contents:'''<br />
# Preview<br />
# Configuration Space<br />
# Rigid-Body Motions<br />
# Forward Kinematics<br />
# Velocity Kinematics and Statics<br />
# Inverse Kinematics<br />
# Kinematics of Closed Chains<br />
# Dynamics of Open Chains<br />
# Trajectory Generation<br />
# Motion Planning<br />
# Robot Control<br />
# Grasping and Manipulation<br />
# Wheeled Mobile Robots<br />
<br />
:Appendix A. Summary of Useful Formulas<br />
<br />
:Appendix B. Other Representations of Rotations<br />
<br />
:Appendix C. Denavit-Hartenberg Parameters<br />
<br />
:Appendix D. Optimization and Lagrange Multipliers<br />
<br />
'''Useful supplemental material.'''<br />
* [[Media:MR_practice_exercises.pdf|Practice exercises to give you more experience with the material]]. These practice exercises come with solutions, since Cambridge makes the end-of-chapter solutions available to instructors only.<br />
* [[Modern Robotics Linear Algebra Review|A linear algebra refresher appendix to accompany the book.]]<br />
<br clear=all><br />
<br />
== Videos ==<br />
<br />
* [http://modernrobotics.northwestern.edu '''Click here'''] to watch the video lectures embedded in a convenient viewing environment. <br />
* [[Modern Robotics Videos|'''Click here''']] if you prefer to watch the videos within the YouTube environment.<br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension]. Also check out the [https://robotacademy.net.au/ Robot Academy at Queensland University of Technology].<br />
<br />
== Solution Manual ==<br />
<br />
If you are an instructor, you can obtain a copy of the exercise solutions from Cambridge University Press. Go to the "Resources" section of [http://www.cambridge.org/us/academic/subjects/computer-science/computer-graphics-image-processing-and-robotics/modern-robotics-mechanics-planning-and-control '''the Cambridge University Press webpage for the book'''].<br />
<br />
== Prerequisites ==<br />
<br />
This book was written to be accessible to engineering students after taking typical first-year engineering courses. The student should have an understanding of:<br />
* freshman-level physics, including f = ma; free-body diagrams with masses, springs, and dampers; vector forces; and vector torques (or moments) as the cross product of a distance vector and a force;<br />
* linear algebra, including matrix operations, positive definiteness of a matrix, determinants, complex numbers, eigenvalues, and eigenvectors; <br />
* some calculus, derivatives, and partial derivatives; and<br />
* basic linear ordinary differential equations.<br />
<br />
The student should also be prepared to program, but only basic programming skills are needed. Code is provided in python (freely available), MATLAB (for purchase, or you could use the freely available GNU Octave clone), and Mathematica (for purchase), so those languages are preferred.<br />
<br />
== Errata == <br />
<br />
'''[[Modern Robotics Errata]]'''<br />
<br />
We welcome your comments and corrections! [https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections to the book, the practice exercises, or the linear algebra refresher. (Please make sure you are using the print version of the book or the May 3, 2017, online version of the book.)''']<br />
<br />
== Software ==<br />
<br />
[https://github.com/NxRLab/ModernRobotics '''Download the book software from GitHub.''']<br />
<br />
The software accompanying the book is written in Mathematica, MATLAB, and Python. It is written to be educational and to reinforce the concepts in the book, not to be as computationally efficient or robust as possible. <br />
<br />
The origin of the software is student solutions to homework exercises. A major update was committed in January 2017, correcting some bugs in the earlier version.<br />
<br />
[https://github.com/NxRLab/ModernRobotics/issues '''To report any issues with the software, please click the "Issues" tab in GitHub.''']<br />
<br />
== Simulation ==<br />
<br />
[[image:youbot.jpg|right]]<br />
<br />
We have found [http://www.coppeliarobotics.com/ '''the V-REP robot simulation environment'''] to be a valuable learning tool accompanying the book. It is free for educational use and cross platform. In ME 449 at Northwestern, we use it to experiment with the kinematics of different robots and to animate solutions to inverse kinematics, dynamic simulations, and controllers. <br />
<br />
[[Getting_Started_with_the_V-REP_Simulator|'''This page''']] gets you started with V-REP quickly.<br />
<br />
[[V-REP_Introduction|'''This page''']] provides "scenes" that allow you to interactively explore the kinematics of different robots (e.g., the Universal Robots UR5 6R robot arm and the KUKA youBot mobile manipulator) and to animate trajectories that are the results of exercises in chapters on kinematics, dynamics, and control.<br />
<br />
* [[Media:UR5-IK-720p.mov|A video of a UR5 trajectory created by solving numerical inverse kinematics (Chapter 6, Inverse Kinematics)]]<br />
* [[Media:UR5-falling-720p.mov|A video of the UR5 falling under gravity for 10 s, assuming no friction or gearing at the joints (Chapter 8, Dynamics of Open Chains)]]<br />
* [[Media:youbot-controlled.mov|A video of the KUKA youBot mobile manipulator using Jacobian-pseudoinverse-based control of the end-effector's motion (Chapter 13, Wheeled Mobile Robots)]]<br />
<br />
<br clear=all><br />
<!-- == Videos ==<br />
[https://youtu.be/ftOle31x9NM '''Welcome to Modern Robotics!''' (2:00)]<br />
<br />
Videos supporting the book will be posted to YouTube and linked to from this wiki. [https://youtu.be/PCeP30q795g '''Here is a sample video.'''] Others will be posted in August 2017. <br />
<br />
Videos are made with [http://lightboard.info Northwestern's Lightboard]. We have used this tool in the past to make the [http://nu32.org '''mechatronics videos at http://nu32.org'''].<br />
<br />
You can see an excellent collection of robotics videos at the [http://handbookofrobotics.org/ Springer Handbook of Robotics Multimedia Extension].<br />
--><br />
<br />
== Online Courses ==<br />
<br />
Modern Robotics is now available as a MOOC (massive open online course) Specialization on Coursera!<br />
<br />
'''[https://www.coursera.org/specializations/modernrobotics This is a link to the Specialization home page.]''' The Specialization consists of six short courses, each expected to take approximately four weeks of approximately five hours of effort per week:<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 some of the supplemental material used in the Coursera MOOCs]]'''.<br />
<br />
== Using the Online Course Materials in a Traditional Classroom Course ==<br />
<br />
If you are using the book in a traditional university setting, you can ask your students to sign up for the relevant courses on Coursera (see above). They can audit the courses, so they don't have to pay. They will have access to the video lectures and to the video comprehension questions that follow each video lecture. They will also have access to discussion forums. (They won't have access to graded tests and peer-graded assignments, which require paying the Coursera fee.) If students watch the videos and do the reading before class, you can spend class time working on example problems, homework problems, or discussing points where confusion arises, rather than delivering a traditional lecture.<br />
<br />
== Supplemental Information ==<br />
<br />
* UR5 parameters you can use for dynamic simulations (note: the values are not exact, and do not account for the effect of gearing at the joints)<br />
** [[Media:UR5-parameters.nb|UR5 parameters in a Mathematica notebook]]<br />
** [[Media:UR5-parameters.m|UR5 parameters in MATLAB]]<br />
** [[Media:UR5-parameters-py.txt|UR5 parameters in Python]]<br />
* The UR5 URDF file from Chapter 4 of the book ([[Media:UR5-URDF.pdf|.pdf format]] or [[Media:UR5-URDF.txt|.txt format]]). For learning purposes only, not actual use; it contains only kinematic and inertial properties, and does not fully account for the effects of gearing. This file is based on the [https://github.com/ros-industrial/universal_robot/blob/indigo-devel/ur_description/urdf/ur5.urdf.xacro UR5 URDF from the ROS-Industrial team].<br />
* [http://petercorke.com/Robotics_Toolbox.html Peter Corke's excellent Robotics Toolbox for MATLAB] and other robotics software linked to from his site.<br />
* [https://github.com/quangounet/TOPP Open-source software for time-optimal time scaling (Chapter 9.4), courtesy of Quang-Cuong Pham].<br />
<br />
== About the Authors ==<br />
<br />
[[image:kevin-m-lynch-headshot.jpg|right]]<br />
<br />
'''Kevin M. Lynch''' is Professor and Chair of the Mechanical Engineering Department at Northwestern University. He is a member of the [http://nxr.northwestern.edu Neuroscience and Robotics Lab] and the [http://nico.northwestern.edu Northwestern Institute on Complex Systems]. His research focuses on dynamics, motion planning, and control for robot manipulation and locomotion; self-organizing multi-agent systems; and physically interacting human-robot systems.<br />
<br />
He is Editor-in-Chief of the IEEE Transactions on Robotics, former Editor-in-Chief of the IEEE International Conference on Robotics and Automation Conference Editorial Board, and a former Editor of the IEEE Transactions on Robotics, the IEEE Robotics and Automation Letters, and the IEEE Transactions on Automation Science and Engineering. He is a co-author of [https://www.amazon.com/Principles-Robot-Motion-Implementations-Intelligent/dp/0262033275 ''The Principles of Robot Motion''] (MIT Press, 2005) and [http://nu32.org ''Embedded Computing and Mechatronics with the PIC32 Microcontroller''] (Elsevier, 2015), an IEEE fellow, and the recipient of the IEEE Early Career Award in Robotics and Automation, Northwestern's Professorship of Teaching Excellence, and the Northwestern Teacher of the Year award in engineering. He earned a BSE in Electrical Engineering from Princeton University and a PhD in Robotics from Carnegie Mellon University.<br />
<br />
<br clear=all><br />
<br />
[[image:frank-park-headshot.jpg|right]]<br />
<br />
'''Frank C. Park''' received his BS in electrical engineering from MIT and his PhD in applied mathematics from Harvard University. From 1991 to 1995 he was assistant professor of mechanical and aerospace engineering at the University of California, Irvine. Since 1995 he has been professor of mechanical and aerospace engineering at Seoul National University, where he is currently chair of the department. His research interests are in robot mechanics, planning and control, vision and image processing, and related areas of applied mathematics. He has been an IEEE Robotics and Automation Society Distinguished Lecturer, and received best paper awards for his work on visual tracking and parallel robot design. He has served on the editorial boards of the Springer Handbook of Robotics, Springer Advanced Tracts in Robotics (STAR), Robotica, and the ASME Journal of Mechanisms and Robotics. He has held adjunct faculty positions at the NYU Courant Institute and the Interactive Computing Department at Georgia Tech. He is a fellow of the IEEE, former Editor-in-Chief of the IEEE Transactions on Robotics, and developer of the edX course Robot Mechanics and Control I, II.<br />
<br clear=all><br />
<br />
<!--<br />
=== Why LynchAndPark.org? ===<br />
<br />
[[File:ModernRoboticsFlyer.jpg|right|thumb|x300px|Advertising flyer for the book.]]<br />
You may have gotten here from the URL http://lynchandpark.org. If you're like us, you forget the name of the textbook, but remember the names of the authors. We thought it would be easiest to remember this URL. If you ever have any problems with http://lynchandpark.org, you can try http://www.lynchandpark.org , http://modernrobotics.org, or http://www.modernrobotics.org.<br />
--><br />
<br clear=all><br />
<br />
== Mechatronics ==<br />
<br />
[[Image:NU32_Book_Cover.jpg|x200px |right | link=NU32]]<br />
<br />
<!--<br />
[[File:NU32_Book_Cover.jpg|x200px|thumb|right|''Embedded Computing and Mechatronics,'' Lynch Marchuk, and Elwin, Elsevier 2015.]]<br />
--><br />
''Modern Robotics'' is written at the system level: you learn about the kinematics, dynamics, motion planning, and control of an entire robot system. If you would like to learn more about the details of implementation, e.g., joint-level feedback control, driving motors (including brushed, brushless, steppers, and servos), gearing, sensors, signal processing, etc., check out [[NU32|''Embedded Computing and Mechatronics'']] by Lynch, Marchuk, and Elwin, Elsevier 2015.</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Sampling-Based_PlanningSampling-Based Planning2019-07-15T12:06:14Z<p>Lynch: /* Details */</p>
<hr />
<div>This page describes the Sampling-Based Planning project from the Coursera course "Modern Robotics, Course 4: Robot Motion Planning and Control."<br />
<br />
[[image:motion_planning_scene.png|right|thumb|x250px|The environment for motion planning for a point robot moving in the plane.]]<br />
<br />
===Introduction===<br />
In this programming assignment, you will implement a sampling-based planner, either an RRT or a PRM, to find a path for a point robot through the cluttered planar environment shown on the right.<br />
<br />
Your project will be graded on:<br />
* An evaluation of your description of your planner. It will be graded on clarity and completeness.<br />
* An evaluation of your source code, including its clarity for the reader.<br />
* The correctness of your code's output, according to the specification below.<br />
* The correctness of your V-REP screenshot of your solution path on the graph.<br />
<br />
===Details===<br />
<br />
In this assignment you will use the same V-REP visualization scene as in the previous assignment, [[V-REP Introduction|the csv motion planning kilobot scene]] (Scene 5). You have the choice of programming either an RRT or a PRM to find a path for a point robot moving in a plane among the obstacles shown in the image at the right. <br />
<br />
[[Media:planning_coursera.zip|'''You can download the files for this obstacle-cluttered environment in the zipped folder here.''']] Only the obstacles.csv file is relevant, since it is the input to your planner. The other files in the folder, nodes.csv, edges.csv, and path.csv, are placeholders; your program should write these files as output. The information in the obstacles.csv file is also replicated below:<br />
<br />
0.0, 0.0, 0.2<br />
0.0, 0.1, 0.2<br />
0.3, 0.2, 0.2<br />
-0.3, -0.2, 0.2<br />
-0.1, -0.4, 0.2<br />
-0.2, 0.3, 0.2<br />
0.3, -0.3, 0.2<br />
0.1, 0.4, 0.2<br />
<br />
<br clear=all><br />
<br />
Your program will choose its own random samples in the (x, y) C-space, which is the square [-0.5, 0.5] x [-0.5, 0.5]. You will also employ a straight-line planner as the local planner, regardless of whether you use the RRT or PRM. The distance between two configurations is simply the Euclidean distance <math>\sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}</math>. <br />
<br />
The start configuration is at (x, y) = (-0.5, -0.5), the bottom left corner of the square environment, and the goal configuration is at (x, y) = (0.5, 0.5), the top right corner of the square environment.<br />
<br />
You are responsible for collision checking. Given a straight line segment from (x1, y1) to (x2, y2), you must write your own collision checker to see if the line segment intersects a circle (all the obstacles are circles). This is a fairly simple mathematical exercise. If your solution involves finding the intersection of a line with a circle (there are 0, 1, or 2 intersections), make sure to test if the intersection(s) are within the length of the line segment! A less desirable, but still acceptable, solution could test sample points finely on the line segment between (x1, y1) and (x2, y2). You should treat the robot as a point; in other words, if the radius of the robot is actually <math>r</math> and the radius of an obstacle is <math>R</math>, you can assume the radius of the robot has been shrunk to 0 and the radius of the obstacle has been grown to <math>R+r</math>.<br />
<br />
Your program should take as input the obstacles.csv file that you created by cutting and pasting the obstacle description above. The output of your program should be three files: nodes.csv, edges.csv, and path.csv. ([[Writing_a_CSV_File|'''This page''']] has information on writing csv files in Python, MATLAB, and Mathematica.) All of these should be in the format described on the wiki page for the csv motion planning kilobot scene. When you put your input file and your three output files in a directory (named "results," for example), then when you call the V-REP scene with this directory as input, you should see the obstacles, your graph or tree, and the solution path, as well as an animation of the motion.<br />
<br />
You may optionally have another input file, perhaps called "parameters.csv" or "parameters.txt," that contain other input to your motion planner. Examples of such input could be the number of nodes to create in a PRM graph or the likelihood (as a percentage) that an RRT "random" sample is chosen as the goal node (to attempt to complete the motion planning problem). <br />
<br />
'''Your program will not be judged on efficiency!''' Ideally you would employ efficient data structures and algorithms to find the nearest nodes to a given configuration, or to check whether a given straight-line path collides with an obstacle. But the point of this assignment is to demonstrate your understanding of the motion planning technique, not to demonstrate mastery of efficient programming, nor to write software that runs quickly on large problems. For example, to find the nearest node to a particular configuration, you could simply calculate the distance to each of the nodes.<br />
<br />
'''However, your program will be judged on clarity!''' Remember that your code may be reviewed by someone unfamiliar with your programming language. Also, you must write your code modularly with multiple functions. For example, a function for testing whether a path from (x1, y1) to (x2, y2) is in collision with any obstacle could call another function which checks if it is in collision with a specific circular obstacle. This single-obstacle collision-detection function could then call a function that returns the intersection points of a line with a circle, then another function that checks if these intersections (if they exist) belong to the line segment or are on the line containing the line segment but are outside the segment.<br />
<br />
===If you choose to program an RRT===<br />
<br />
''Sampling'': You are free to choose your sampling method, though sampling from a uniform random distribution over the square [-0.5, 0.5] x [-0.5, 0.5] is a good choice. Every so often, perhaps 10% of the time (this is up to you, though), your sample should be at the goal configuration, to see if you can connect your tree to the goal.<br />
<br />
''Finding the nearest node to a sampled configuration'': As mentioned above, you can simply test the Euclidean distance to all nodes in the tree.<br />
<br />
''Local planner'': By default the local planner should be a straight-line planner, from the closest node to the sampled configuration. If you decide to do something else, clearly document it.<br />
<br />
===If you choose to program a PRM===<br />
<br />
If you decide to use a PRM planner, where you first build a graph representing the C-space before searching it, you should use the A* search you wrote for the previous assignment, the weight between nodes should be the Euclidean distance between the nodes, and the optimistic cost-to-go from a node should be the Euclidean distance to the goal configuration.<br />
<br />
''Phase 1, sampling'': You are free to choose your sampling method, though sampling from a uniform random distribution over the square [-0.5, 0.5] x [-0.5, 0.5] is a good choice. Since you will always use the same start and goal configurations, as described above, you should also choose samples at these configurations, so they are built into the tree. It is up to you to choose the number of nodes in your graph, but you should choose enough that the start and goal are likely to be in the same connected component of the graph.<br />
<br />
''Phase 2, creating edges'': It is up to you to choose the number of neighbors <math>k</math> to try to connect to each node.<br />
<br />
''Phase 3, searching the graph'': You should use A* search.<br />
<br />
===What to submit===<br />
<br />
Once your program is working, and you are able to consistently find solutions to the path planning problem, '''you will submit a single .zip file with the following contents''':<br />
#'''A README file, preferably as a plain text .txt file or as a .pdf file.''' This file should describe your solution to the motion planning problem: your choice of an RRT or PRM, decisions you made in your implementation, information on any supplementary files the planner needs as input (other than obstacles.csv), and any other comments that help the reader understand your solution. This file should typically be one page or less.<br />
#'''Your commented code in a directory called "code."''' Your code should be lightly commented, so it is clear to the reader what the code is doing. No need to go overboard, but keep in mind your reviewer may not be fluent in your programming language. Your code comments must include an example of how to use the code. You can write your program in any language, provided it is clearly structured, reasonably modular, easy to understand for a reader with no experience in your programming language, and with sufficient comments. Your program can span multiple files, or it can be a single file, if appropriate. If your code is in Mathematica, turn in (a) your .nb notebook file and (b) a .pdf printout of your code, so a reviewer can read your code without having to have the Mathematica software.<br />
#'''A directory called "results" with (at least) four files in it: nodes.csv, edges.csv, obstacles.csv, and path.csv.''' Your results directory should include the obstacles.csv input file as well as output files nodes.csv, edges.csv, and path.csv produced by your planner. These output files must correspond to the screenshot you submit. Your results directory can optionally have another file or files with other input needed by your planner, provided these files are clearly described in the README.<br />
#'''A V-REP screenshot of your solution path on the graph/tree.''' The graph among the obstacles should be clearly visible.<br />
#'''(OPTIONAL) A second results folder (e.g., "results-extra") with another interesting motion planning problem, its solution, and a V-REP screenshot.'''</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-11T17:11:02Z<p>Lynch: </p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specifid.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Preface ===<br />
<br />
* p xiv: Video lectures that accompany the textbook will also be available --> Video lectures that accompany the textbook are also available<br />
(This is a very minor change, so I don't think we have to re-date the preface or provide a separate update.)<br />
<br />
* p xv: Change "A partial list of errata contributors." in the preface to "Notes on the second printing." Then have:<br />
<br />
Readers are encouraged to consult the companion website \url{http://modernrobotics.org} for more information on the Modern Robotics software library, videos, online courses, robot simulations, practice problems with solutions, errata, a linear algebra refresher chapter, and more. <br />
<br />
Then thanking the errata contributors.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* '''Update Chapter 8.7 with an example and clearer text describing the equations.'''<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T20:10:21Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">In the "partial list of errata contributors," perhaps add "and" before the last name. Also, "posted in October, 2016" should be "posted online in October, 2016" to be more specifid.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T20:09:03Z<p>Lynch: /* A partial list of errata contributors */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know. Also, in the "partial list of errata contributors," perhaps add "and" before the last name.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, and Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:38:53Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know. Also, in the "partial list of errata contributors," perhaps add "and" before the last name.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:38:37Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know.<br />
<br />
In the "partial list of errata contributors," perhaps add "and" before the last name.<br />
</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:34:05Z<p>Lynch: /* Chapter 13 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know.</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$. <span style="color:#ff0000">The statement is equivalent with and without the absolute value signs, so we got rid of them.</span><br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:30:34Z<p>Lynch: /* Chapter 12 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know.</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" right after <math>\mathcal{F}_3</math> should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:30:02Z<p>Lynch: /* Chapter 12 */</p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know.</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively. <span style="color:#ff0000"> Also, I think the word "yield" should be "yielding."</span><br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:06:41Z<p>Lynch: </p>
<hr />
<div>=== Overall ===<br />
<br />
<span style="color:#ff0000">David: Are you implementing any other changes that are not listed below? Please let us know.</span><br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:05:51Z<p>Lynch: /* Chapter 5 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced. <span style="color:#ff0000">Kevin can provide.</span><br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T16:05:00Z<p>Lynch: /* Chapter 5 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <span style="color:#ff0000"> One more thing: let's add to the end of the first sentence in (b), so it is now "...direction, with zero components in other wrench directions." </span><br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid."<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T15:51:58Z<p>Lynch: /* Chapter 2 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... . I prefer my suggested ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T15:51:15Z<p>Lynch: </p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent." <span style="color:#ff0000"> In your correction, you say ... "generic cases", ... as opposed to the suggested ... "generic" cases, ... I prefer ... "generic" cases, ... but if there is a reason why your wording is better, shouldn't the comma be inside the quotes? </span><br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T15:47:05Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
<br />
* <span style="color:#ff0000"> p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after. </span><br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T15:43:44Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<br />
* <span style="color:#ff0000"> p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80) </span><br />
<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-07-09T15:41:32Z<p>Lynch: /* Overall */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
<span style="color:#ff0000"><br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
</span><br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T23:10:48Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/File:MR-clarification-ch08-July1-2019.zipFile:MR-clarification-ch08-July1-2019.zip2019-06-30T23:03:33Z<p>Lynch: </p>
<hr />
<div></div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T23:03:06Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able zip directory to create the pdf file; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T23:02:40Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able .zip file to play with it; the main file to be latex'ed is modern_robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T23:02:27Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue. [[Media:MR-clarification-ch08-July1-2019.zip|Here is a latex'able .zip file to play with it; the main file to be latex'ed is modern-robotics.tex.]] <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:54:59Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below, which can be cut-and-pasted. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]] The new text (replacing the old text) is in blue.<br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/File:MR-clarification-ch08-July1-2019.pdfFile:MR-clarification-ch08-July1-2019.pdf2019-06-30T22:53:50Z<p>Lynch: </p>
<hr />
<div></div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:52:50Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below. [[Media:MR-clarification-ch08-July1-2019.pdf|This is a pdf of what the revision should look like.]]<br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:50:28Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50, between equations (8.46) and (8.47): We would like to clarify this derivation by replacing the text beginning "Then" and ending just before "Substituting" with the latex below. <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity<br />
$a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$,<br />
and the transition from the fourth equality to the fifth follows from the identity<br />
$[\operatorname{ad}_{\twist_1}] \twist_2 = - [\operatorname{ad}_{\twist_2}] \twist_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:44:13Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50: We would like to clarify <br />
<br />
<nowiki><br />
To calculate the final term in this equation, we express $T_{i,i-1}$ and $\mathcal{A}_i$ as<br />
\[<br />
T_{i,i-1} = \left[\begin{array}{cc} R_{i,i-1} & p \\ 0 & 1\end{array}\right] \qquad \text{and} \qquad<br />
\mathcal{A}_i = \left[\begin{array}{c} \omega \\ v \end{array}\right].<br />
\]<br />
\color{blue}<br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}<br />
\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity $a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$, and the transition from the fourth equality to the fifth follows from the identity $[\operatorname{ad}_{V_1}] V_2 = - [\operatorname{ad}_{V_2}] V_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:42:21Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50: We would like to clarify <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}<br />
\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity $a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$, and the transition from the fourth equality to the fifth follows from the identity $[\operatorname{ad}_{V_1}] V_2 = - [\operatorname{ad}_{V_2}] V_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-30T22:42:00Z<p>Lynch: /* Chapter 8 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* pp 249-50: We would like to clarify <br />
<br />
<nowiki><br />
From the fact $\dot{T}_{i,i-1} T_{i,i-1}^{-1}= -[\mathcal{A}_i \dot{\theta}_i]$, we have<br />
\[<br />
\dot{R}_{i,i-1} = -[\omega\dot{\theta}_i]R_{i,i-1}, \quad \dot{p} = -[\omega\dot{\theta}_i]p -v\dot{\theta}_i.<br />
\]<br />
Then <br />
\begin{align*}<br />
\frac{d}{dt} & ([\text{Ad}_{T_{i,i-1}}])\mathcal{V}_{i-1} \\<br />
& = \frac{d}{dt} <br />
\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix} \mathcal{V}_{i-1}\\<br />
& = \begin{bmatrix}<br />
-[\omega\dot{\theta}_i]R_{i,i-1} && 0\\<br />
[-[\omega\dot{\theta}_i]p -v\dot{\theta}_i] R_{i,i-1}-[p][\omega\dot{\theta}_i]R_{i,i-1} && -[\omega\dot{\theta}_i]R_{i,i-1}<br />
\end{bmatrix}<br />
\mathcal{V}_{i-1}\\<br />
& = \underbrace{\begin{bmatrix}<br />
-[\omega\dot{\theta}_i] && 0\\<br />
-[v\dot{\theta}_i] && -[\omega\dot{\theta}_i]<br />
\end{bmatrix}}_{-[\operatorname{ad}_{\mathcal{A}_i \dot{\theta}_i}]}<br />
\underbrace{\begin{bmatrix}<br />
R_{i,i-1} && 0\\<br />
[p]R_{i,i-1} && R_{i,i-1}<br />
\end{bmatrix}}_{[\operatorname{Ad}_{T_{i,i-1}}]} \mathcal{V}_{i-1} \\<br />
& = -[\text{ad}_{\mathcal{A}_i\dot\theta_i}] \mathcal{V}_i\\<br />
& = [\text{ad}_{\mathcal{V}_i}] \mathcal{A}_i\dot\theta_i,<br />
\end{align*}<br />
where the transition from the second equality to the third follows from the Jacobi identity $a \times (b \times c) + b \times (c \times a) + c \times (a \times b) = 0$ for all $a, b, c \in \real^3$, and the transition from the fourth equality to the fifth follows from the identity $[\operatorname{ad}_{V_1}] V_2 = - [\operatorname{ad}_{V_2}] V_1$.<br />
</nowiki><br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Getting_Started_with_the_V-REP_SimulatorGetting Started with the V-REP Simulator2019-06-28T04:33:43Z<p>Lynch: </p>
<hr />
<div>Now that you have the [https://github.com/NxRLab/ModernRobotics MR code library], you need the cross-platform V-REP robot simulator to allow you to visualize the motions of robots. '''You should complete the items on this page before moving on with the rest of the course!''' Click on any of the images to make them larger.<br />
<br />
'''V-REP is computationally intensive. To minimize power usage, make sure to "pause" or "stop" a simulation when you are not using it.'''<br />
<br />
'''1.''' Go to [http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/] and download and install the free V-REP PRO EDU software for your operating system. If you are having trouble installing, you can look for help on the Coppelia site, read recommendations from other students on the Coursera week 1 discussion forum regarding V-REP, or even try installing an earlier version of V-REP (version 3.4 or later).<br />
<br />
'''2.''' Launch V-REP and experiment with it. I suggest you choose File > Open scene... and open one of the example "scenes" that comes with V-REP. V-REP "scenes" are specifications of environments, robots, and their actions, and when you press the "play" button the simulation begins. Experimenting with these scenes will show you some of the capabilities of V-REP. For example, you could choose the "motionPlanningAndGrasping.ttt" scene, as shown in the image below. (All scene files end in .ttt.)<br />
<br />
[[image:VREP-demo-open.png|700px]]<br />
<br clear=all><br />
<br />
: '''Important note regarding screen resolution:''' If you find the text and graphics to be too small on a high-resolution screen, you can edit the file "system/usrset.txt" to change the value of the variable "highResDisplay" to 1. On the Mac, this file is hidden in the directory "vrep.app" (the application you double-click to execute V-REP). You can see the contents of this directory using the Terminal utility on your Mac. In Terminal, use "cd" to navigate to the folder where vrep.app is, then cd to the directory "Contents/MacOS/system" to see usrset.txt.<br />
<br />
'''3.''' Press the "play" button at the top of the window to see the robots executing motion plans.<br />
<br />
[[image:VREP-motion-planning.png|700px]]<br />
<br clear=all><br />
<br />
'''4.''' We will be using several custom scenes in this specialization. You should download the .zip folder from [[V-REP Introduction]] and unzip it. The scenes include: interactive UR5 (Scene 1), csv animation UR5 (Scene 2), interactive youBot (Scene 3), and csv animation youBot (Scene 4). The Universal Robots UR5 is a 6-joint robot arm and the KUKA youBot is a mobile manipulator consisting of a 5-joint robot arm mounted on an omnidirectional robot base with 4 mecanum wheels. "Interactive" means that you can move sliders that represent the joint positions of the robot, and you'll see the robot move in response. "csv animation" means that the scene expects you to provide a "comma-separated values" (csv) file. A row of the file is a set of joint values, separated by commas, corresponding to the configuration of the robot at a particular instant. Subsequent rows are the configuration of the robot at later times, and the csv file is played as an animation by V-REP.<br />
<br />
Included in the .zip folder are the scene files themselves as well as example input files for some of the scenes. You should make sure your unzipped folder is in a convenient, memorable location on your computer, as you will have to type in the full path to the input files when you use them in the V-REP scenes that require them.<br />
<br />
'''5.''' If you currently have a simulation running in V-REP, press the "stop" button to stop it. Then choose File > Open scene... and open the interactive UR5 scene (Scene1_UR5.ttt) you downloaded. Press the "play" button, choose the "Joint Angle Sliders" tab, and experiment with moving the sliders to see how the joints move.<br />
<br />
[[image:vrep-im3.jpg|700px]]<br />
<br clear=all><br />
<br />
'''6.''' Open and run (press "play") the youBot csv animation scene (Scene4_youBot_csv.ttt). Load the example .csv file for the youBot. You will have to provide the full path to the file; in the example on the Mac below, the path is "/Users/kevin/V-REP_scenes/Scene4_example.csv". After clicking "Open File," press the "Play" button just below where you entered the file path. You should see the mobile robot continually executing the trajectory encoded in the .csv file.<br />
<br />
[[image:vrep-im4.png|700px]]<br />
<br clear=all><br />
<br />
The first line of the .csv file is<br />
<br />
0,-0.526,0,0,-0.785,0.785,-1.571,0,0,0,0,0<br />
<br />
where the comma-separated values represent: phi angle of mobile robot base, x position of mobile robot base, y position of mobile robot base, joint1, joint2, joint3, joint4, joint5, wheel1, wheel2, wheel3, wheel4. The angles of the wheels are included so you can see the wheels rotating as the robot moves.<br />
<br />
: '''Important note regarding csv file format:''' The example csv files included for use with the csv scenes assume that periods, not commas, are used as decimal points. So pi is written as 3.14, not as 3,14. If you are using Linux and your region settings are set to a region that uses commas as the decimal separator, one solution, suggested by a Coursera student, is to invoke V-REP using US English settings:<br />
LC_NUMERIC=en_US.UTF-8 ./vrep.sh<br />
: Another option, also suggested by a Coursera student, is to open your Linux "System Settings" -> "Language support" -> "Regional Formats" tab. After changing the region to "English (United States)", log out and back in for the change to take effect.<br />
<br />
'''7.''' During this specialization, you will have to generate videos of V-REP visualizations. We have found it easiest to use screenshot-video tools for your operating system. On the Mac, you can use Quicktime to record videos from the screen. On Linux, you can use [http://www.maartenbaert.be/simplescreenrecorder/ SimpleScreenRecorder] or [http://recordmydesktop.sourceforge.net/about.php recordMyDesktop], for example. On Windows, you can use [https://icecreamapps.com/Screen-Recorder/ Screen Recorder].<br />
<br />
V-REP provides its own tool, which you can find at Tools>Video recorder. 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 />
Try recording and saving a 10 second movie of the youBot animating the example .csv file. Your video should be of reasonable quality, but the compression should be such that the video doesn't use too much memory. For example, a few MB is a reasonably sized short video.<br />
<br />
'''When you're finished with the tasks above...'''<br />
<br />
'''Congratulations!''' Your MR code library and the V-REP simulator are ready to use. Do not move on to the rest of the course until these are working for you.<br />
<br />
In this specialization we will mostly be using V-REP to visualize the motion of robot arms and wheeled mobile robots. For example, we use V-REP to animate your solutions to inverse kinematics, to display the dynamic motion of a robot arm according to dynamics calculations that you will write, to animate the results of path planners you develop, and to simulate a mobile manipulator manipulating an object.<br />
<br />
The '''Modern Robotics''' specialization does not teach how to use V-REP in detail, and it uses only a small fraction of V-REP's capabilities. If you want to learn more, you can find links to documentation '''[[V-REP Introduction#Useful_Resources|at the bottom of this page]].'''</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Getting_Started_with_the_V-REP_SimulatorGetting Started with the V-REP Simulator2019-06-28T04:33:19Z<p>Lynch: </p>
<hr />
<div>Now that you have the [https://github.com/NxRLab/ModernRobotics MR code library], you need the cross-platform V-REP robot simulator to allow you to visualize the motions of robots. '''You should complete the items on this page before moving on with the rest of the course!''' Click on any of the images to make them larger.<br />
<br />
'''V-REP is computationally intensive. To minimize power usage, make sure to "pause" or "stop" a simulation when you are not using it.'''<br />
<br />
'''1.''' Go to [http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/] and download and install the free V-REP PRO EDU software for your operating system. If you are having trouble installing, you can look for help on the Coppelia site, recommendations from other students on the Coursera week 1 discussion forum regarding V-REP, or even try installing an earlier version of V-REP (version 3.4 or later).<br />
<br />
'''2.''' Launch V-REP and experiment with it. I suggest you choose File > Open scene... and open one of the example "scenes" that comes with V-REP. V-REP "scenes" are specifications of environments, robots, and their actions, and when you press the "play" button the simulation begins. Experimenting with these scenes will show you some of the capabilities of V-REP. For example, you could choose the "motionPlanningAndGrasping.ttt" scene, as shown in the image below. (All scene files end in .ttt.)<br />
<br />
[[image:VREP-demo-open.png|700px]]<br />
<br clear=all><br />
<br />
: '''Important note regarding screen resolution:''' If you find the text and graphics to be too small on a high-resolution screen, you can edit the file "system/usrset.txt" to change the value of the variable "highResDisplay" to 1. On the Mac, this file is hidden in the directory "vrep.app" (the application you double-click to execute V-REP). You can see the contents of this directory using the Terminal utility on your Mac. In Terminal, use "cd" to navigate to the folder where vrep.app is, then cd to the directory "Contents/MacOS/system" to see usrset.txt.<br />
<br />
'''3.''' Press the "play" button at the top of the window to see the robots executing motion plans.<br />
<br />
[[image:VREP-motion-planning.png|700px]]<br />
<br clear=all><br />
<br />
'''4.''' We will be using several custom scenes in this specialization. You should download the .zip folder from [[V-REP Introduction]] and unzip it. The scenes include: interactive UR5 (Scene 1), csv animation UR5 (Scene 2), interactive youBot (Scene 3), and csv animation youBot (Scene 4). The Universal Robots UR5 is a 6-joint robot arm and the KUKA youBot is a mobile manipulator consisting of a 5-joint robot arm mounted on an omnidirectional robot base with 4 mecanum wheels. "Interactive" means that you can move sliders that represent the joint positions of the robot, and you'll see the robot move in response. "csv animation" means that the scene expects you to provide a "comma-separated values" (csv) file. A row of the file is a set of joint values, separated by commas, corresponding to the configuration of the robot at a particular instant. Subsequent rows are the configuration of the robot at later times, and the csv file is played as an animation by V-REP.<br />
<br />
Included in the .zip folder are the scene files themselves as well as example input files for some of the scenes. You should make sure your unzipped folder is in a convenient, memorable location on your computer, as you will have to type in the full path to the input files when you use them in the V-REP scenes that require them.<br />
<br />
'''5.''' If you currently have a simulation running in V-REP, press the "stop" button to stop it. Then choose File > Open scene... and open the interactive UR5 scene (Scene1_UR5.ttt) you downloaded. Press the "play" button, choose the "Joint Angle Sliders" tab, and experiment with moving the sliders to see how the joints move.<br />
<br />
[[image:vrep-im3.jpg|700px]]<br />
<br clear=all><br />
<br />
'''6.''' Open and run (press "play") the youBot csv animation scene (Scene4_youBot_csv.ttt). Load the example .csv file for the youBot. You will have to provide the full path to the file; in the example on the Mac below, the path is "/Users/kevin/V-REP_scenes/Scene4_example.csv". After clicking "Open File," press the "Play" button just below where you entered the file path. You should see the mobile robot continually executing the trajectory encoded in the .csv file.<br />
<br />
[[image:vrep-im4.png|700px]]<br />
<br clear=all><br />
<br />
The first line of the .csv file is<br />
<br />
0,-0.526,0,0,-0.785,0.785,-1.571,0,0,0,0,0<br />
<br />
where the comma-separated values represent: phi angle of mobile robot base, x position of mobile robot base, y position of mobile robot base, joint1, joint2, joint3, joint4, joint5, wheel1, wheel2, wheel3, wheel4. The angles of the wheels are included so you can see the wheels rotating as the robot moves.<br />
<br />
: '''Important note regarding csv file format:''' The example csv files included for use with the csv scenes assume that periods, not commas, are used as decimal points. So pi is written as 3.14, not as 3,14. If you are using Linux and your region settings are set to a region that uses commas as the decimal separator, one solution, suggested by a Coursera student, is to invoke V-REP using US English settings:<br />
LC_NUMERIC=en_US.UTF-8 ./vrep.sh<br />
: Another option, also suggested by a Coursera student, is to open your Linux "System Settings" -> "Language support" -> "Regional Formats" tab. After changing the region to "English (United States)", log out and back in for the change to take effect.<br />
<br />
'''7.''' During this specialization, you will have to generate videos of V-REP visualizations. We have found it easiest to use screenshot-video tools for your operating system. On the Mac, you can use Quicktime to record videos from the screen. On Linux, you can use [http://www.maartenbaert.be/simplescreenrecorder/ SimpleScreenRecorder] or [http://recordmydesktop.sourceforge.net/about.php recordMyDesktop], for example. On Windows, you can use [https://icecreamapps.com/Screen-Recorder/ Screen Recorder].<br />
<br />
V-REP provides its own tool, which you can find at Tools>Video recorder. 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 />
Try recording and saving a 10 second movie of the youBot animating the example .csv file. Your video should be of reasonable quality, but the compression should be such that the video doesn't use too much memory. For example, a few MB is a reasonably sized short video.<br />
<br />
'''When you're finished with the tasks above...'''<br />
<br />
'''Congratulations!''' Your MR code library and the V-REP simulator are ready to use. Do not move on to the rest of the course until these are working for you.<br />
<br />
In this specialization we will mostly be using V-REP to visualize the motion of robot arms and wheeled mobile robots. For example, we use V-REP to animate your solutions to inverse kinematics, to display the dynamic motion of a robot arm according to dynamics calculations that you will write, to animate the results of path planners you develop, and to simulate a mobile manipulator manipulating an object.<br />
<br />
The '''Modern Robotics''' specialization does not teach how to use V-REP in detail, and it uses only a small fraction of V-REP's capabilities. If you want to learn more, you can find links to documentation '''[[V-REP Introduction#Useful_Resources|at the bottom of this page]].'''</div>Lynchhttp://hades.mech.northwestern.edu/index.php/Modern_Robotics_ErrataModern Robotics Errata2019-06-23T20:15:58Z<p>Lynch: /* Chapter 10 */</p>
<hr />
<div>[https://docs.google.com/forms/d/1iZ_3LsWR1iuPJmRsUQsa2ehZj6p-qKQfx8NRKaTlIuE/edit '''Please click here to report any corrections for the book, practice exercises, or linear algebra refresher appendix. (Please make sure you are using the May 3, 2017, online version of the book, or the hardcover book published by Cambridge University Press.)''']<br />
<br />
Errata below are for [[Modern_Robotics|the hardcover book published by Cambridge University Press, the preprint version of the book posted on May 3, 2017, the practice exercises, and the linear algebra refresher appendix]]. Thanks to everyone who provided corrections to earlier versions!<br />
<br />
<br />
== Book: Significant corrections ==<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2 says that Grubler's formula "provides a lower bound on the number of degrees of freedom" of a mechanism to account for the case where the joint constraints are not independent. This statement is misleading, as it assumes a linear analysis of mobility. In fact, some mechanisms may have '''fewer''' dof than implied by Grubler's formula by a higher-order analysis. A more correct statement is that Grubler's formula yields the correct number of dof in the "generic" case (where the joint constraints are independent and a linear analysis of mobility suffices), but a mechanism may have more dof (e.g., if the joint constraints are not independent everywhere) or fewer dof (e.g., the zero-dof four-bar linkage where the sum of the lengths of three links equals the length of the fourth link). This comment also applies to the sentence immediately after Example 2.6, the fifth bullet of the Summary in Chapter 2.6, and the second-to-last sentence of the third paragraph of Chapter 1's summary of Chapter 2.<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3, it should read <math>\hat{\text{x}}_{\text{b}} = (1/2, \sqrt{3}/2)</math> and <math>\hat{\text{y}}_{\text{b}} = (-\sqrt{3}/2, 1/2)</math>.<br />
* Under "Representing a configuration" in Chapter 3.3.1.2, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. (Also, there is no need to use <math>T_{ad}</math> in this example.)<br />
* In the displayed equation just after Equation (3.76), the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Exercise 3.16(i) asks for "the <math>\{q,\hat{s},h\}</math> representation" but it should say "a <math>\{q,\hat{s},h\}</math> representation" since <math>q</math> is not unique.<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3): The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7): The first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b): The wrench applied by the last link, expressed in the {s} frame, is 5 N in the <math>\hat{\text{y}}_{\text{s}}</math> direction, with zeros in all other components. (The wording seems to imply that the force is through the tip of the last link, which is incorrect.)<br />
<br />
* Exercise 5.16 and Figure 5.26: The robot is referred to as PRRRRR, but it is PRPRRR.<br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first line after Eq (6.7): the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists.<br />
<br />
=== Chapter 8 ===<br />
<br />
* In Equation (8.14), <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 should read "columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* In the parenthetical text a few lines after Equation (8.94): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10: The operating region is light gray and the continuous operating region is dark gray.<br />
<br />
* Exercise 8.6(a): The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* First line of chapter 10.6.4: The equation should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). Similarly, in the last sentence of chapter 10.6.4, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18), the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>.<br />
<br />
* In Equation (11.33), the right-hand side should be zero (<math>c = 0</math>).<br />
<br />
* Figure 11.24, the Robonaut 2 series elastic actuator, 4th sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>, i.e., <math>(-2,0,1), (1,-1,0), (1,1,0)</math>, respectively.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5): All instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12), two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
== Book: Minor typos, etc., no danger of misunderstanding ==<br />
<br />
=== Chapter 1 ===<br />
<br />
* (online version only) Description of Chapter 6: "jont positions" should be "joint positions."<br />
<br />
=== Chapter 2 ===<br />
<br />
* Chapter 2.2.2, Example 2.3: "Substituting" is misspelled.<br />
<br />
=== Chapter 3 ===<br />
<br />
* Near the end of Chapter 3.6 Software, the function "AxisAng" should be written "AxisAng6."<br />
<br />
=== Chapter 5 ===<br />
<br />
* Figure 5.15(b): The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.25: This problem instructs you to use the space Jacobian, so you should use it for the manipulability ellipsoids in this problem (even though it is generally preferred to use the body Jacobian for manipulability ellipsoids).<br />
<br />
=== Chapter 6 ===<br />
<br />
* (online version only) Figure 6.7: <math>\theta_0</math> should be <math>\theta^0</math> (five times) and <math>\theta_1</math> should be <math>\theta^1</math> (one time).<br />
<br />
=== Chapter 7 ===<br />
<br />
* (online version only) Last line of first paragraph of Chapter 7.1: "valuees" should be "values."<br />
* Just below caption for Figure 7.8: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* (online version only) Chapter 8.1.1, last paragraph: <math>\dot{\theta}_1</math> is improperly typeset.<br />
<br />
=== Chapter 12 ===<br />
<br />
* Caption of Figure 12.14, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
* (online version only) Example 12.11: The sentence "... can remain standing if there is a consistent solution if there exist <math>k_i \geq 0</math> ..." should read simply "... if there exist <math>k_i \geq 0</math> ..."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29): <math>y_p</math> should be <math>y_P</math>.<br />
<br />
== A partial list of errata contributors ==<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi<br />
<br />
<!-- <br />
Other updates and corrections can be found in the google drive folder.<br />
<br />
--></div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-23T20:12:29Z<p>Lynch: /* Chapter 7 */</p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* p218 displayed equation after (7.12): replace <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* '''FRANK CHECK:''' Possible derivation error between equations (8.46) and (8.47), pp 249-50.<br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynchhttp://hades.mech.northwestern.edu/index.php/MR_Second_PrintingMR Second Printing2019-06-23T20:09:33Z<p>Lynch: </p>
<hr />
<div>=== Overall ===<br />
<br />
There are a few places in the book where we have an italic ''T'' instead of a roman T for transpose, often where they are preceded by a negative (inverse) sign. These should be corrected. The ones we're aware of are listed below:<br />
<br />
* Equation (5.4) p149<br />
* Fifth line of p163<br />
* p168 third line of Eq (5.27)<br />
* Last line of p216<br />
* p239: eq (8.21) and equation just above.<br />
* p254: Eqs (8.75), (8.76), (8.78), (8.79), 8.80)<br />
* pp256-7: several instances in Ch 8.6. Just after eq (8.87) (two times), four times in eq (8.88), just after (8.88), and (8.90) and (8.91).<br />
* p272, in each of the two displayed equations in the 2nd bullet<br />
* p491, second-to-last bullet, in each of the two displayed equations and the in-line equation just after.<br />
<br />
=== Chapter 1 ===<br />
<br />
* p3, middle: Change "convenient way to calculate a lower bound on the dof" to "convenient way to calculate the dof"<br />
<br />
=== Chapter 2 ===<br />
<br />
* Proposition 2.2, p16: "This formula holds only if all joint constraints are independent. If they are not independent then the formula provides a lower bound on the number of degrees of freedom." should be "This formula holds in "generic" cases, but it fails under certain configurations of the links and joints, such as when the joint constraints are not independent."<br />
<br />
* Chapter 2.2.2, Example 2.3, p16: "Substituting" is misspelled.<br />
<br />
* Eliminate two sentences on p19: "Grubler's formula provides ... are discussed in Chapter 7."<br />
<br />
* Fifth bullet of Chapter 2.6 p32: Eliminate the last sentence "If the constraints enforced ... degrees of freedom."<br />
<br />
=== Chapter 3 ===<br />
<br />
* In the caption of Figure 3.3 p53, <math>(0.5,1/\sqrt{2})</math> should read <math>(1/2, \sqrt{3}/2)</math>, and <math>(-1/\sqrt{2},0.5)</math> should read <math>(-\sqrt{3}/2, 1/2)</math>.<br />
<br />
* Under "Representing a configuration" in Chapter 3.3.1.2 p78 near the bottom, the text says "<math>T_{bc} = (R_{bc},p_{bc})</math> represents {b} relative to {c}" but it should say "represents {c} relative to {b}".<br />
* There is a typo in the final matrix, <math>T_{ce}</math>, of Example 3.19, p82. The term <math>130/\sqrt{2}</math> should be <math>160/\sqrt{2}</math>. <br />
* In the displayed equation just after Equation (3.76) p85, the left-hand side should be <math>[\mathcal{V}_s]</math> (the brackets are missing).<br />
* Near the end of Chapter 3.6 Software p97, the function "AxisAng" should be written "AxisAng6."<br />
* Exercise 3.16(i) p103 asks for "the" <math>\{q,\hat{s},h\}</math> representation but it should say "a" <math>\{q,\hat{s},h\}</math> representation (since <math>q</math> is not unique). Replace "the" with "a".<br />
<br />
=== Chapter 4 ===<br />
<br />
* Example 4.1, last row of the table (screw axis for joint 3), middle of p122: The linear component <math>v_i</math> should be <math>(0, -L_2, 0)</math> (the <math>-</math> sign is missing).<br />
<br />
=== Chapter 5 ===<br />
<br />
* Equation (5.7) p153: The the first two terms on the right-hand side of the equation should be <math>J_{s1} \dot{\theta}_1 + J_{s2}(\theta) \dot{\theta}_2</math>.<br />
<br />
* Exercise 5.2(b) p173: Change (a) to "Suppose that the last link must apply a wrench corresponding to a force of ..." (then continue as current, "5 N in the..."). In (b), change "the tip" to "the last link". <br />
<br />
* Figure 5.15(b) p174: The circular arrow indicating the rotation of joint 3 is slightly misplaced.<br />
<br />
* Exercise 5.11(a) p178: Change "What are the..." to "Is this motion possible? If so, what are the ..."<br />
<br />
* Exercise 5.16 p180: change "PRRRRR" to "PRPRRR". Similarly, caption of Figure 5.26, p181, change "PRRRRR" to "PRPRRR." <br />
<br />
* Exercise 5.25(b) p186: At the end of part (b), add the sentence "Comment on why it is usually preferred to use the body Jacobian instead of the space Jacobian for the manipulability ellipsoid." <br />
<br />
=== Chapter 6 ===<br />
<br />
* Chapter 6.3, first sentence after Eq (6.7), p199: the matrices <math>T_{sd}^{-1} \dot{T}_{sd}</math> and <math>\dot{T}_{sd} T_{sd}^{-1}</math> are referred to as twists, but these are the se(3) matrix representations of the twists. Change the beginning of this sentence to "The matrix form <math>[\mathcal{V}_d(t)]</math> of the desired twist is either <math>T_{sd}^{-1}(t) \dot{T}_{sd}(t)</math> (the matrix form of the body twist of the desired trajectory at time <math>t</math>) or <math>\dot{T}_{sd}(t) T_{sd}^{-1}(t)</math> (the matrix form of the spatial twist), depending ..." and then complete the sentence as is. <br />
<br />
=== Chapter 7 ===<br />
<br />
* '''FRANK CHECK:''' p218 displayed equation after (7.12): suggest replacing <math>\phi_5</math> with <math>\psi_5</math> in <math>q_p</math> to be consistent with definition of <math>q_a</math>.<br />
<br />
* Just below caption for Figure 7.8 p222: There is an extraneous dot.<br />
<br />
=== Chapter 8 ===<br />
<br />
* Description of constrained dynamics (see conversation with Zack).<br />
<br />
* In Equation (8.14) p236, <math>\mathcal{K}(\theta)</math> should be replaced by <math>\mathcal{K}(\theta,\dot{\theta})</math>.<br />
<br />
* Figure 8.5 p244 says the volume of the rectangular parallelepiped is <math>abc</math> but it should be <math>hlw</math>.<br />
<br />
* End of first sentence after Eq (8.26) in Section 8.2.1 p244 should read "... columns of <math>R_{bc}</math> correspond to the eigenvectors of <math>\mathcal{I}_b</math>." (The word "eigenvalues" should be replaced by "eigenvectors.")<br />
<br />
* '''FRANK CHECK:''' Possible derivation error between equations (8.46) and (8.47), pp 249-50.<br />
<br />
* p258: In the parenthetical text a few lines before Equation (8.95): "...there is an equality constraint..." should instead be "...there is also an inequality constraint..."<br />
<br />
* Caption of Figure 8.10 p264: The operating region is light gray and the continuous operating region is dark gray (swap the two parenthetical statements).<br />
<br />
* Exercise 8.6(a) p276: The expression <math>\text{ad}_{J_i}(J_j)</math> has the indices switched; the correct expression is <math>\text{ad}_{J_j}(J_i)</math>.<br />
<br />
* Exercise 8.7 p276: The expression should be written:<br />
<math><br />
\dot{M} = -\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{W}^{\rm T} [\mbox{ad}_{\mathcal{A} \dot{\theta}}]^{\rm T} \mathcal{L}^{\rm T} \mathcal{GLA} -<br />
\mathcal{A}^{\rm T} \mathcal{L}^{\rm T} \mathcal{GL} [\mbox{ad}_{\mathcal{A} \dot{\theta}}] \mathcal{WLA}<br />
</math><br />
<br />
=== Chapter 10 ===<br />
<br />
* Equation (10.4) p332 should read <math> u = F(q) - B \dot{q}</math> (the plus sign in the book should be a minus sign).<br />
<br />
* p335, first line of chapter 10.6.4: should be <math>u = F(q) - B \dot{q}</math> (plus sign should be a minus sign). In the second-to-last line on the same page, the plus sign should be a minus sign.<br />
<br />
=== Chapter 11 ===<br />
<br />
* In the displayed equation after Equation (11.18) p360, the vector <math>X_e(t)</math> is a six-vector. The bottom three elements are written correctly, but the top three elements, an angular velocity, are written instead in their 3x3 <math>so(3)</math> form. Also, the term written <math>R^{\text{T}}(d)</math> should be written <math>R^{\text{T}}(t)</math>. So, replace the top three elements in the vector by <math>\omega_e(t)</math>, make the period after the equation a comma, and insert a line immediately following saying "where <math>[\omega_e(t)] = \log(R^{\text{T}}(t) R_d(t))</math>."<br />
<br />
* In Equation (11.33) p366, the right-hand side should be zero, not <math>c</math>.<br />
<br />
* Figure 11.24 p384, the Robonaut 2 series elastic actuator, fourth sentence of the caption: The words "outer" and "inner" should be switched, so the new sentence reads "The inner ring of hole mounts connects to the harmonic gearhead output, and the outer ring of hole mounts is the output of the SEA, connecting to the next link."<br />
<br />
=== Chapter 12 ===<br />
<br />
* In Example 12.4 p404, the elements of the wrenches <math>\mathcal{F}_1, \mathcal{F}_2, \mathcal{F}_3</math> are erroneously written in the order <math>(f_x,f_y,m_z)</math>; they should be written in the order <math>(m_z,f_x,f_y)</math>. In other words, change these to <math>(-2,0,1)</math>, <math>(1,-1,0)</math>, and <math>(1,1,0)</math>, respectively.<br />
<br />
* Caption of Figure 12.14 p412, second-to-last sentence: "rotation if possible" should be "rotation is possible."<br />
<br />
=== Chapter 13 ===<br />
<br />
* Equation (13.29) p467: <math>y_p</math> should be <math>y_P</math> (P is capitalized).<br />
<br />
* p469, first line just below the figure: get rid of the absolute value signs, so should be $v_d \neq 0$.<br />
<br />
=== Appendix C ===<br />
<br />
* Section C.3, Equation (C.5) p507: All four instances of <math>\phi_{i-1}</math> should be replaced by <math>\phi_i</math>.<br />
<br />
* In Equation (C.12) p510, two instances of <math>M_{i-1}</math> should be replaced by <math>M_i</math>.<br />
<br />
<br />
<br />
<br />
=== A partial list of errata contributors ===<br />
<br />
Thanks to the following people who provided corrections, starting from the preliminary version of the book posted in October, 2016:<br />
<br />
H. Andy Nam, Eric Lee, Yuchen Rao, Chainatee Tanakulrongson, Mengjiao Hong, Kevin Cheng, Jens Lundell, Elton Cheng, Michael Young, Jarvis Schultz, Logan Springgate, Sofya Akhmametyeva, Aykut Onol, Josh Holcomb, Yue Chen, Mark Shi, AJ Ibraheem, Yalun Wen, Seongjae Jeong, Josh Mehling, Felix Wang, Drew Warren, Chris Miller, Clemens Eppner, Zack Woodruff, Jian Shi, Jixiang Zhang, Shachar Liberman, Will Wu, Dirk Boysen, Awe Wang, Ville Kyrki, John Troll, Andrew Taylor, Nikhil Bakshi</div>Lynch