Finger and hand kinematics

The ADAPT finger and hand are rigid chains of phalanges driven through tendons and cables, with fewer motors than joints. This page gives the equations of robots.adapt: how motor angles set joint angles, and how joint angles place the fingertip, and then how the hand’s motors drive its joints.

The finger

The finger has three phalanges, proximal, middle and distal, of 40.0, 30.0 and 17.5 mm, joined by three revolute joints, MCP, PIP and DIP (the metacarpophalangeal, proximal interphalangeal and distal interphalangeal joints), all turning about \(x\). Straight, it points along \(y\). Bending it turns the tip towards \(z\).

../_images/4d7326d3215e194e2ad3bb750bf016976d19ee857ef58e9d7660d22a253bd313.svg

Motors to joints

Two motors drive the three joints. The first pulls a cable on a pulley of the MCP joint. The second drives the PIP joint through a cable, and the DIP joint follows the PIP joint. With motor angles \(q_0, q_1\),

\[ \theta_\text{MCP} = \frac{r_p}{r_m}\,q_0, \qquad \theta_\text{PIP} = \theta_\text{DIP} = \frac{r_m}{c_p}\,q_1, \]

with \(r_m\) the motor pulley’s radius, \(r_p\) that of the MCP pulley and \(c_p\) the cable constant of the PIP drive. For the template, \(r_p/r_m\) and \(r_m/c_p\) are 0.446 and 0.615 rad per radian of motor angle. In matrix form \(\theta = C\,q\), a LinearCoupling of the chain.

Joints to the fingertip

Each joint turns everything beyond it about \(x\), so with \(\phi_1 = \theta_\text{MCP}\), \(\phi_2 = \phi_1 + \theta_\text{PIP}\) and \(\phi_3 = \phi_2 + \theta_\text{DIP}\) the fingertip is at

\[\begin{split} p = \begin{bmatrix} 0 \\ a\cos\phi_1 + b\cos\phi_2 + c\cos\phi_3 \\ a\sin\phi_1 + b\sin\phi_2 + c\sin\phi_3 \end{bmatrix}, \end{split}\]

in the finger’s base frame. Its Jacobian with respect to the motor angles is \(J = (\partial p/\partial\theta)\,C\), which the library computes by automatic differentiation.

The hand

The hand has a thumb and four fingers, each a chain of revolute joints from the hand’s base. The thumb has the joints CMC1, CMC2 (carpometacarpal), MCP and IP (interphalangeal), and each finger has the joints spread, MCP, PIP and DIP. The origins and axes of the joints are tables in robots.adapt (HAND_JOINTS, HAND_FINGER_BASES). 13 motors drive its 20 joints, \(\theta = C\,q\):

  • each thumb joint has a motor of its own;

  • each finger’s MCP joint has a motor, and one more drives its PIP and DIP joints together, as on the finger;

  • one motor spreads the fingers, turning the index, middle, ring and pinky spread joints by -0.033, 0, +0.033 and +0.050 rad per radian of its angle: the middle finger stays in place.

../_images/b36345c03e85c2632e79aa79a3067767ff62d91a431c5712a7d06613352a8ede.svg

The joint-limit springs keep each joint within the ranges in adapt.JOINT_LIMITS and adapt.HAND_JOINT_LIMITS.