6
$\begingroup$

I'm in the early stages of working with a simple robot arm, and learning about the Jacobian and inverse kinematics.

From my understanding, the Jacobian can be used to determine the linear and angular velocity of the end effector, given the angular velocity of all joints in the arm. Can it also be used to determine the Cartesian position of the end effector, given the angles and/or positions of the joints?

Furthermore, suppose that I want to determine the required angular velocities of the joints, in order to bring about a desired linear velocity of the end effector. Can this be done by simply inverting the Jacobian and plugging in the desired parameters?

$\endgroup$
6
$\begingroup$

Yes, the Jacobian relates the joint velocities to end-effector velocity through this equation:

$$ \mathbf{v}_e = \mathbf{J}(\mathbf{q}) \dot{\mathbf{q}} $$

Where $\mathbf{q}$ is the joint angles, $\dot{\mathbf{q}}$ is the joint velocities, and $\mathbf{v}_e$ is the end-effector velocity. As you can see, the Jacobian, $\mathbf{J}$, is configuration dependant. So plug in some joint angles and velocities then you will get the velocity of the end-effector.

To get the Cartesian position of the end-effector, given the joint angles, you use the direct kinematics function also called forward kinematics. There are various methods to do this. Geometric analysis if your arm is simple enough e.g. a planar 2 link arm. Product-of-exponentials is another method. But the Denavit-Hartenberg method is probably the most widely used. I am not going to go into the details of this here. But basically you will get a transformation matrix for each joint: $\mathbf{A}_i^{i-1}(q_i)$. That when you plug in the joint angle, you get the pose of joint $i$ relative to joint $i-1$. These can be combined in a recursive fashion to get the pose of the end-effector relative to the base of the arm:

$$ \mathbf{T}_n^0(\mathbf{q})=\mathbf{A}_1^{0}(q_1) \mathbf{A}_2^{1}(q_2) ... \mathbf{A}_n^{n-1}(q_n) $$

Note that you can differentiate $\mathbf{T}_n^0(\mathbf{q})$ to get the analytical Jacobian. But people typically use the geometric Jacobian which is not as hard to compute.

Now to compute the required joint velocities to achieve a desired end-effector velocity, you must invert the Jacobian. But this only works if the number of DOFs equals the number of dimensions of your space:

$$ \dot{\mathbf{q}} = \mathbf{J}^{-1}(\mathbf{q}) \mathbf{v}_e $$

(Note that there are some arm configurations (such as singularities) where the Jacobian will not be invertable.) If you have more DOFs, you are under-constrained. (i.e. there is more than one solution). Typically, people use the right pseudo-inverse of the Jacobian which locally minimizes the norm of joint velocities.

$$ \dot{\mathbf{q}}=\mathbf{J}^{\dagger}\mathbf{v}_{e} $$ where: $$ \mathbf{J}^{\dagger} = \mathbf{J}^T(\mathbf{J}\mathbf{J}^T)^{-1} $$

Note that J is still dependant on q, but (q) is dropped for clarity.

$\endgroup$
  • 1
    $\begingroup$ Nice resume. This survey on Inverse Kinematics might help too: math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pdf $\endgroup$ – Ugo Jan 16 '15 at 20:10
  • 1
    $\begingroup$ you must invert the Jacobian. But this only works if the number of DOFs equals the number of dimensions of your space I think it is also possible that there is no inverse for J, even if the DOF is the same dimensions as workspace. For example, if the desired end-effector position or velocity is physically not possible to achive due to some constraints. Then there is no solution. $\endgroup$ – Nasser Jan 30 '15 at 5:50
  • $\begingroup$ That's true. At singularities, the Jacobian will not be invertable. $\endgroup$ – Ben Jan 30 '15 at 21:01

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.