robots.adapt

ADAPT finger and hand: tendon-driven phalanges, the last two joints of each finger coupled.

Module Attributes

LINK_LENGTHS

Proximal, middle and distal phalanx [m], from the MCP joint to the fingertip.

COUPLING

Joint angles (MCP, PIP, DIP) = COUPLING · motor angles, at the default transmission.

JOINT_AXES

Axes of the MCP, PIP and DIP joints in the finger's base frame.

LINK_MASSES

Masses of the three phalanges [kg].

LINK_COGS

Centers of gravity in each phalanx's frame [m].

GRAVITY

Gravity in the finger's base frame [m/s²], as mounted (the frame's z axis points down).

JOINT_LIMITS

Joint ranges [rad].

MOTOR_EFFICIENCY

Delivered over commanded torque of the two motors (MCP, PIP), a static calibration for force estimates.

FINGER_MOTOR_IDS

Bus IDs of the finger's motors (MCP, PIP).

HAND_PALM_ORIGIN

Palm origin in the hand base frame [m] (the wrist is held rigid at zero).

HAND_FINGER_BASES

Base of each digit relative to the palm [m].

HAND_JOINTS

name, origin in the parent link frame [m], axis in the joint frame.

HAND_TIP_OFFSETS

Fingertip in the last joint frame [m].

HAND_FINGER_TRANSMISSIONS

Motor pulley, finger pulley and PIP cable constant of each finger [m].

HAND_THUMB_TRANSMISSION

Motor pulley, CMC pulleys and MCP/IP cable constants of the thumb [m].

HAND_SPREAD_CORRECTION

Spread angle of each finger = spread motor angle · correction · ratio.

HAND_LINK_MASSES

Link masses [kg].

HAND_LINK_COGS

Center of gravity of each link in its frame [m].

HAND_JOINT_LIMITS

Joint ranges [rad].

HAND_MOTOR_EFFICIENCY

a static calibration, like MOTOR_EFFICIENCY.

HAND_MOTOR_IDS

Bus ID of each hand motor.

HAND_WRIST_IDS

Bus IDs of the wrist motors, held at their start position.

HAND_MOTORS

Motor order of the hand (the wrist motors 13 and 14 are position-controlled, not modelled).

HAND_GRAVITY

Gravity in the hand base frame [m/s²] when the hand is upright; on an arm, keep it live.

Functions

add_dynamics(robot[, damping])

Give the finger or the hand its gravity, for simulation.

add_hand_masses(robot[, prefix, link_masses])

Add the hand's link masses [kg] at the sites "{prefix}<digit>/<link>_cog"; link_masses overrides HAND_LINK_MASSES by key.

finger([name, gravity, link_lengths, ...])

The finger as a robot mechanism; q holds the two motor angles [rad].

finger_coupling([motor_radius, ...])

Joint angles (MCP, PIP, DIP) per motor angle; the DIP joint mimics the PIP joint.

finger_friction([width])

The static friction of the finger's motors, from the lab's friction identification: the breakaway torque is FRICTION[0] and none is left once they move.

finger_hardware()

The finger's motors.

hand([name, gravity, link_masses, efficiency])

The hand as a robot: q holds the 13 motor angles [rad] in HAND_MOTORS order.

hand_coupling(*[, finger_transmissions, ...])

Joint angles (20: thumb CMC1, CMC2, MCP, IP; each finger spread, MCP, PIP, DIP) per motor.

hand_friction([width])

The static friction of the hand's motors, as finger_friction for the finger, with HAND_FRICTION[0] as the breakaway torque.

hand_gravity(R_flange[, mounting_angle, g_world])

Gravity in the hand base frame [m/s²] for a flange orientation R_flange (world frame).

hand_hardware()

The hand's motors in HAND_MOTORS order and the held wrist; a driver publishes the 13 motors in the order of their IDs.

hand_joint_angles(robot)

Coordinate of the hand's 20 joint angles [rad] (see hand_coupling for the order).

hand_joint_limit_spring(robot[, stiffness, ...])

Springs that push each of the 20 joints back inside its range; limits [rad] overrides HAND_JOINT_LIMITS by key, joints is the hand's own joints override.

hand_model(*[, palm_origin, finger_bases, ...])

The hand's kinematics: five digit chains in the hand base frame, coupled to 13 motors.

hand_output_stage()

The hand's output stage: friction compensation, then a torque clip.

joint_angles(robot)

Coordinate of the three joint angles (MCP, PIP, DIP) [rad] of a finger.

joint_limit_spring(robot[, stiffness, limits])

A spring that pushes each joint back inside its range (zero force inside); limits [rad] overrides ranges by joint name ("MCP", "PIP", "DIP").

output_stage()

The finger's output stage: friction compensation, then a torque clip.