robots.planar

Planar arms with fewer motors than coordinates.

A three-link arm with one passive joint, a five-link arm with three, and a three-section continuum arm driven by two tendons.

Module Attributes

PRESETS

Link lengths [m] and masses [kg], base to tip, and the joints with a motor (0-based).

GRAVITY

the arm moves in the x-y plane, y up.

CONTINUUM

two tendons, one through all three sections and one through the first only, so the bending of sections 2 against 3 has no motor.

CONTINUUM_GRAVITY

it points up the z axis.

Functions

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

Give the continuum arm its gravity and, on every section, a bending spring and damper.

add_dynamics(robot[, stiffness, damping])

Give the arm its gravity and, on each passive joint, a torsional spring and damper.

arm([preset, name, gravity, lengths, ...])

The arm as a robot mechanism: q holds the joint angles [rad], the motors drive the actuated joints only, and every link is a uniform rod (a mass and the inertia m l²/12 at its center).

continuum([name, gravity, lengths, masses, ...])

A planar continuum arm of constant-curvature sections, driven by tendons.

model(lengths)

The kinematics: revolute joints about z, links along x at q = 0 (q = relative angles).

passive_joints(robot)

The joints no motor drives (the rows of the input matrix B that are zero).

tendon_matrix(offsets, depths, spool_radius, ...)

The input matrix B of tendons on bending angles: tendon i, at offsets[i] [m] from the axis, wound on a spool of radius spool_radius [m], runs through the first depths[i] sections; B[j, i] = −offset / spool_radius there and 0 elsewhere.