Robotic manipulator Jacobian by product of exponentials - Robotics Stack Exchange most recent 30 from robotics.stackexchange.com 2020-01-23T08:03:41Z https://robotics.stackexchange.com/feeds/question/8940 https://creativecommons.org/licenses/by-sa/4.0/rdf https://robotics.stackexchange.com/q/8940 4 Robotic manipulator Jacobian by product of exponentials Drew https://robotics.stackexchange.com/users/11625 2016-01-19T19:56:25Z 2016-01-29T23:34:29Z <p>I've taken a class and started a thesis on robotics and my reference for calculating the Jacobian by product of exponentials seems incorrect, see:</p> <p><a href="http://www.cds.caltech.edu/~murray/books/MLS/pdf/mls94-complete.pdf" rel="nofollow">http://www.cds.caltech.edu/~murray/books/MLS/pdf/mls94-complete.pdf</a></p> <p>Specifically the resulting Jacobian matrix for the SCARA manipulator on page 118 would have us believe that the end effector translational velocity depends on joints 2 and 3 rather than 1 and 2.</p> <p>Could someone please explain me why?</p> https://robotics.stackexchange.com/questions/8940/-/9011#9011 2 Answer by RLH for Robotic manipulator Jacobian by product of exponentials RLH https://robotics.stackexchange.com/users/11712 2016-01-27T06:59:58Z 2016-01-29T23:34:29Z <p>The Jacobian in that equation is from the joint velocity to the "spatial velocity" of the end effector.</p> <p>The spatial velocity of an object is a somewhat unintuitive concept: it is the velocity of a frame rigidly attached to the end effector <em>but currently coincident with the origin frame</em>. It may help to think of the rigid body as extending to cover the whole space, and you're measuring the velocity by standing at the origin and looking at what is happening to the end effector where you are, instead of at the end of the arm.</p> <p>In the example given, the origin is at the same location as the first joint. This means that rotating the joint will sweep the end effector in a circle, but that the frame at the origin will only pivot around the vertical axis; this is encoded by the first column of the Jacobian being [0 0 0 0 0 1]'.</p> <p>Rotating joints two and three will pull the origin-overlapping frame away from the origin, and hence have translational components.</p> <p>To see how this works in action, note that the Jacobian that you asked about from MLS can be simplified to</p> <p>$J_{st,SCARA}^{s} = \begin{bmatrix} 0 &amp; \phantom{-}y_{2} &amp; \phantom{-}y_{3} &amp; 0\\ 0 &amp; -x_{2} &amp; - x_{3} &amp; 0 \\ 0 &amp;0&amp;0&amp;1 \\ 0&amp; 0&amp; 0&amp;0\\ 0&amp; 0&amp; 0&amp;0\\ 1&amp;1&amp;1 &amp;0 \end{bmatrix},$</p> <p>in which the first three columns encode the velocity at the origin of an object rotating around the corresponding axis and the fourth column gives the velocity at the origin of an object sliding up the fourth axis.</p> <p>You can convert the spatial-velocity Jacobian into a world-frame Jacobian by incorporating the Jacobian from base-frame motion to motion at the end effector's current position and orientation. For the SCARA arm, this works out fairly cleanly, with the only difference between the two frame velocities being the "cross product" term that accounts for the extra motion of the end effector sweeping around the base,</p> <p>$J^{w}_{st, SCARA} = \begin{bmatrix} % \begin{pmatrix} 1 &amp;&amp;\\ &amp;1&amp;\\ &amp;&amp; 1 \end{pmatrix} % &amp; % \begin{pmatrix} 0 &amp; &amp; -y_{4}\\ &amp; 0 &amp; \phantom{-}x_{4} \\ &amp; &amp; \phantom{-}0 \end{pmatrix} \\ \begin{pmatrix} 0&amp;&amp; \\ &amp;0&amp;\\ &amp;&amp;0 \end{pmatrix} &amp; \begin{pmatrix} 1 &amp; &amp; \\ &amp; 1 &amp; \\ &amp;&amp; 1 \end{pmatrix} \end{bmatrix} J^{s}_{st,\text{SCARA}}.$</p> <p>This product evaluates to</p> <p>$J_{st,SCARA}^{w} = \begin{bmatrix} -y_{4} &amp; -(y_{4}-y_{2}) &amp; -(y_{4}-y_{3}) &amp; 0\\ \phantom{-}x_{4} &amp; \phantom{-}x_{4}-x_{2} &amp; \phantom{-}x_{4}- x_{3} &amp; 0 \\ 0 &amp;0&amp;0&amp;1 \\ 0&amp; 0&amp; 0&amp;0\\ 0&amp; 0&amp; 0&amp;0\\ 1&amp;1&amp;1 &amp;0 \end{bmatrix},$</p> <p>which matches what we would expect to see: Each of the rotary joints contributes to the end effector velocity by the cross product between its rotational velocity and the vector from the joint to the end effector (note that $x_{4}-x_{3}$ and $y_{4}-y_{3}$ are both zero).</p> <p>===</p> <p>In the general case, where the rotations are not only around the $z$ axis, you would want to use the full form of the matrix mapping between the spatial to world Jacobians,</p> <p>$J_{w} = \begin{bmatrix} % \begin{pmatrix} 1 &amp;&amp;\\ &amp;1&amp;\\ &amp;&amp; 1 \end{pmatrix} % &amp; % \begin{pmatrix} \phantom{-}0 &amp; \phantom{-}z &amp; -y\\ -z&amp; \phantom{-}0 &amp; \phantom{-}x \\ \phantom{-}y&amp; -x &amp; \phantom{-}0 \end{pmatrix} \\ \begin{pmatrix} 0&amp;&amp; \\ &amp;0&amp;\\ &amp;&amp;0 \end{pmatrix} &amp; \begin{pmatrix} 1 &amp; &amp; \\ &amp; 1 &amp; \\ &amp;&amp; 1 \end{pmatrix} \end{bmatrix} J^{s},$</p> <p>which encodes the cross product terms for all three rotation axes when the end effector is at $(x,y,z)$ relative to the base frame.</p>