So I thought I understood well enough what a Jacobian was (in the context of an $n$-DOF robot) -- a function that takes a vector of n joint positions and returns an $n \times n$ matrix that can be multiplied with a vector of $n$ joint velocities to return a velocity vector for the end effector.

I'm using ROS and MoveIt, so I actually already have a function to calculate the Jacobian for my robot from the URDF.

However, I'm reading lecture notes from the 2005 MIT Intro to Robotics course, and in one (mission-critical, it seems) portion of chapter 7 (between pages 11 and 12), he refers to "$3 \times n$ Jacobian matrices relating the centroid linear velocity and the angular velocity of the $i^\text{th}$ link to joint" as $J^L$ and $J^A$.

He introduces Jacobians in Chapter 5, and indeed I looked through all the rest of the course material, and I don't think he ever explains what these matrices are or how to compute them.

Could someone enlighten me as to what he's talking about?


Short answer

Robot Dynamics and Control by Spong et al. (especially Chapter 5) can definitely help you on this matter.

Long answer

First of all, you are partially correct about a Jacobian. It is indeed a function of joint values (say $q \in \mathbf{R}^n$). However, as a Jacobian maps a joint velocity to an end-effector velocity, its dimension is not generally $n \times n$, but rather $m \times n$, where $n$ is the number of DOFs your robot has and $m$ is the dimension of the velocity vector you want to map a joint velocity vector to.

Let's consider the following equation $$\dot{x} = J(q)\dot{q},$$ where $\dot{x}$ is an end-effector velocity vector. The vector $\dot{x}$ is generally a 6-vector that is (generally) a vertical stack of linear and angular velocity, i.e. $$\dot{x} = \begin{bmatrix}v\\ \omega\end{bmatrix}.$$

Looking closely, one can see that the first three rows of $J(q)$ are mapping the joint values $q$ to the linear end-effector velocity $v \in \mathbf{R}^{3}$. Similarly, the last three rows are mapping $\dot{q}$ to the angular end-effector velocity $\omega \in \mathbf{R}^{3}$. Therefore, one can actually writes $$J = \begin{bmatrix}J^L\\J^A\end{bmatrix},$$ where $J^L$ and $J^A$ are such that $v = J^L \dot{q}$ and $\omega = J^A \dot{q}.$ Computing $J^L$ and $J^A$ can then be done accordingly by analyzing the relationship between the joint velocity and the end-effector velocity.

For detailed analysis (and also how $J^L$ and $J^A$ can be computed), you can consult Spong's book I mentioned above.

  • $\begingroup$ Wow, thank you so much both for the formatting and for the answer! $\endgroup$ – River Tam Jan 7 '18 at 22:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.