# Redundancy and Null space projection

I'm reading "Theory of Robot Control" by Carlos Canudas Wit, Bruno Siciliano, Georges Bastin. In Task space control chapter, exploiting the redundancy by means of null space as shown below is not clear to me. What is $$\dot{q}_0$$ in the below picture? I do understand the null space of a matrix though. For robot, the null space of Jacobian is the set of joints' velocities vectors that yield zero linear and angular velocities of the end-effector but I'm not able to understand the idea of projecting such vectors. Any further suggestion how to understand this topic?

• A nice way of understanding the nullspace of the jacobian is to consider your own arm. Grab on to a fixed object with your hand, you'll realize that you can still move your elbow, even though your hand is fixed. In other words, the task-space coordinates (your hand) do not move, but the joint-space coordinates (the arm joints $q$) are moving. You are thus moving the arm in the nullspace of the jacobian. Jun 23 at 11:41

If you multiply both members of the equation (3.9) by $$J$$, you'll get: $$J\dot{q} = JJ^+v + \left( J -JJ^+J \right)\dot{q_0}.$$

Then, we can exploit that $$JJ^+=I$$, obtaining: $$J\dot{q}=v,$$ which is the well-known forward differential kinematics law.

Until now, we didn't specify anything about $$\dot{q_0}$$, which indeed can be whatever vector of the same size of $$\dot{q}$$, meaning we can plug whatever $$\dot{q_0}$$ into (3.9) that the fundamental differential law will be still guaranteed. Thus, the resulting velocities $$\dot{q}$$ complies with the law and at the same time will be the closest to $$\dot{q_0}$$ in the least-squares sense.

Further, the equation (3.9) is clearly made up of two contributions:

• $$J^+v$$ that is the primary task as defined by $$v$$.
• $$\left( I -J^+J \right)\dot{q_0}$$ that is the secondary task as defined by $$\dot{q_0}$$.

Because $$\dot{q_0}$$ can be anything, we say that the secondary task does not interfere with the primary task thanks to the projector $$\left( I -J^+J \right)$$.

Therefore, the flexibility offered by the redundancy of the manipulator at hand allows us to employ $$\dot{q_0}$$ for achieving a supplementary goal (i.e., the secondary task).

Usual secondary tasks are implemented to stay away from the joint bounds or to improve manipulability.

To this end, one can thus establish the relation: $$\dot{q_0} = k_0 \frac{\partial w(q)}{\partial q},$$ where $$w(q)$$ is some sort of function of the joints $$q$$ that we aim to minimize/maximize through its gradient.

For example, if we want to stay away from the joint limits while converging to the primary target defined by $$v$$, we could set: $$w(q) = -\frac{1}{2n}\sum^n_{i=1}\left( \frac{q_i-\bar{q_i}}{q_{iM}-q_{im}} \right)^2,$$ with $$q_{iM}$$, $$q_{im}$$ the upper and lower bounds of joint $$i$$, and $$\bar{q_i} = \frac{q_{iM}+q_{im}}{2}$$.

Just a concluding remark about the following statement:

For robot, the null space of Jacobian is the set of joints' velocities vectors that yield zero linear and angular velocities of the end-effector

This is often the case but it's not 100% true. It very depends on the primary task, which in turn dictates the form of the Jacobian $$J$$.

If the primary task aims to get full control of the tip frame (i.e., linear and angular velocity), then the statement above holds outright.

However, if our primary task deals only with the position of the tip frame, for example, and not its orientation ($$J$$ is defined in $$\mathbb{R}^{3 \times n}$$), then the secondary task may impact the orientation of the end-effector by applying to it nonnull angular velocities.

• Nice answer. it makes perfect sense. Is it possible to add more subtasks? Jun 26 at 7:37
• Yep, adding multiple subtasks is something that roboticists usually do and the technique is called Stack of Tasks. To get a flavor of how to compose multiple subtasks, check out the second section of this paper: diag.uniroma1.it/~labrob/pub/papers/… Jun 26 at 13:35