Notation#
mink-warp follows the same frame and task conventions as Mink and Pink (Pinocchio). Subscripts are read right-to-left for transforms; superscripts indicate the frame in which a vector is expressed.
Quantity |
Notation |
|---|---|
Transform from frame \(A\) to frame \(B\) |
\(T_{BA} \in SE(3)\) |
Position of frame \(B\) origin in frame \(A\) |
\({}^A p_B\) |
World (inertial) frame |
\(0\) or \(W\) |
Configuration vector |
\(q \in \mathbb{R}^{n_q}\) (batched: |
Tangent / velocity |
\(v \in \mathbb{R}^{n_v}\), \(\Delta q = v\,\mathrm{d}t\) |
Task error and Jacobian |
\(e(q) \in \mathbb{R}^k\), \(J(q) \in \mathbb{R}^{k \times n_v}\) |
Composition (read transforms left to right):
Frame task#
For regulated frame \(b\), target \(t\), and world \(0\):
See FrameTask and [FrameTaskJacobian].
Stacked IK problem#
Tasks contribute to normal equations (equivalent to a weighted least-squares QP):
Hard limits add \(\ell \leq \Delta q \leq u\) and/or \(G \Delta q \leq h\).
See Constrained IK (hard limits) and solve_ik().
The task function approach used here was formalized by Samson, Espiau and Le Borgne [Samson1991]. Lie-group errors use the logarithm map on \(SE(3)\); see Solà et al. [Sola2018] for background. LM damping on large errors follows Sugihara [Sugihara2011].
Further reading#
Task-based inverse kinematics (Pink / Mink lineage [Pink])
Mink API parity — API mapping from Mink