Task Priority Redundancy Resolution

Definition

Task-priority redundancy resolution is a velocity-level (resolved-motion-rate) inverse-kinematics
scheme for a kinematically redundant manipulator that satisfies several tasks in a strict order of
priority: the lower-priority (secondary / constraint) task is fulfilled only within the null space
of the higher-priority (primary / end-effector) task
, so that — out of singularities — the secondary
task never corrupts the primary task. Chiaverini (1997) studies how this scheme degrades near two kinds
of singularity: kinematic singularities of the primary Jacobian , and algorithmic
singularities, where the projected secondary Jacobian
loses rank even though and are individually full-rank. The paper is fixed-base
and terrestrial
(a 7-DOF arm); it makes no space-base assumption — neither free-flying nor free-floating.

Key Equations

Symbols per notation.md.

The Chiaverini task-priority symbols (primary / end-effector Jacobian),
(secondary / constraint Jacobian), (task velocities) and the
Moore–Penrose pseudoinverse are not in notation.md (they are source-faithful generic
inverse-kinematics symbols); is the identity per notation.md.

Classic task-priority solution (Nakamura–Hanafusa–Yoshikawa form; Eq. 8) — secondary task projected
through the augmented inverse :

+ \big(\mathbf{J}_{C}(\boldsymbol E-\mathbf{J}_{E}^{\dagger}\mathbf{J}_{E})\big)^{\dagger} \big(\dot{\mathbf{x}}_{C}-\mathbf{J}_{C}\mathbf{J}_{E}^{\dagger}\dot{\mathbf{x}}_{E}\big).$$ **Proposed singularity-robust solution** (Eq. 34) — decouples algorithmic singularities from the inversion by projecting the *separately* solved secondary velocity into the primary null space: $$\dot{\mathbf{q}} = \mathbf{J}_E^{\dagger}\,\dot{\mathbf{x}}_E + \big(\boldsymbol E-\mathbf{J}_E^{\dagger}\mathbf{J}_E\big)\,\mathbf{J}_C^{\dagger}\,\dot{\mathbf{x}}_C.$$ Near an algorithmic singularity ($\tilde{\mathbf{J}}_C$ loses rank — in Chiaverini's SVD analysis this is a row of the projected matrix going null, driven by the scalar products $\mathbf{v}_{C,i}^{T}\mathbf{v}_j\to0$, distinct from a singularity of $\mathbf{J}_C$ where $\sigma_{C,i}\to0$) the classic form (8) *raises* the null-space velocity to track the becoming-infeasible secondary component, whereas (34) *lowers* it — yielding continuous joint velocities. When a kinematic singularity of $\mathbf{J}_E$ is also present, either pseudoinverse may be swapped for a damped-least-squares inverse ([damped_least_squares](damped_least_squares.md)). ## Source Support - [chiaverini1997singularity](../sources/chiaverini1997singularity.md) — primary source: defines the task-priority strategy, distinguishes kinematic vs algorithmic singularities, derives the singularity-robust solution (34), and shows in 7-DOF case studies that (34) keeps joint velocities continuous and the primary task accurate where the classic solution (8) breaks down. ## Related Topics - [task_priority_redundancy](task_priority_redundancy.md) — the broader strategy this page specializes; the priority ordering and null-space subordination of secondary tasks. - [kinematic_redundancy_resolution](kinematic_redundancy_resolution.md) — the parent problem of choosing one inverse-kinematics solution among infinitely many for a redundant arm. - [singularity_robust_inverse](singularity_robust_inverse.md) — the robustified Jacobian inverse used to tame the ill-conditioning that task-priority resolution suffers near singularities. - [redundancy_resolution](redundancy_resolution.md) — the general activity of exploiting extra DOF; this page is the task-priority instance of it. - [damped_least_squares](damped_least_squares.md) — the damping mechanism Chiaverini substitutes for the pseudoinverse when a kinematic singularity coincides with the priority scheme. - [algorithmic_singularity](algorithmic_singularity.md) — the rank loss of $\tilde{\mathbf{J}}_C$ that this technique is specifically designed to survive. - [null_space_projection](null_space_projection.md) — the projector $\boldsymbol E-\mathbf{J}_E^{\dagger}\mathbf{J}_E$ that enforces the priority by confining the secondary task to the primary null space. ## Open Questions - The source is fixed-base and terrestrial. For our free-flying base, the relevant Jacobian is the circumcentroidal $\boldsymbol J_{\nu_e}^{\oplus}$ (or $\boldsymbol\Gamma$); does the algorithmic-vs-kinematic singularity split, and the (34) robustification, carry over when base actuation couples into the task map? - Chiaverini's (34) sacrifices secondary-task accuracy for continuity; for our inspection viewpoint / pointing secondary objectives, is that trade acceptable, or does the primary task itself need re-prioritizing? - The closed-loop version of (34) (Case B: primary = EE position, secondary = EE orientation) left two distinct steady-state errors: the *secondary* (orientation) error is due to the algorithmic singularity and is unavoidable, while the *primary* (position) error is tied to the damping in the null-space-filtering inverse $\mathbf{J}_E^{*}$. How do these interact with our [steady_state_error_floor](../results/steady_state_error_floor.md) (cruise-lag)?