Limits

Limits implemented as inequality constraints in the IK problem.

class pink.limits.ConfigurationLimit(model, config_limit_gain=0.5)

Subspace of the tangent space restricted to joints with position limits.

config_limit_gain

gain between 0 and 1 to steer away from configuration limits. It is described in “Real-time prioritized kinematic control under inequality constraints for redundant manipulators” (Kanoun, 2012). More details in this writeup.

model

Robot model the limit applies to.

joints

Joints with configuration limits.

projection_matrix

Projection from tangent space to subspace with configuration-limited joints.

compute_qp_inequalities(q, dt)

Compute the configuration-dependent velocity limits.

Those limits are returned as:

\[{q \ominus q_{min}} \leq \Delta q \leq {q_{max} \ominus q}\]

where \(q \in {\cal C}\) is the robot’s configuration and \(\Delta q \in T_q({\cal C})\) is the displacement in the tangent space at \(q\). These limits correspond to the derivative of \(q_{min} \leq q \leq q_{max}\).

Parameters:
  • q (ndarray) – Robot configuration.

  • dt (float) – Integration timestep in [s].

Return type:

Optional[Tuple[ndarray, ndarray]]

Returns:

Pair \((G, h)\) representing the inequality constraint as \(G \Delta q \leq h\), or None if there is no limit.

class pink.limits.VelocityLimit(model)

Subset of velocity-limited joints in a robot model.

indices

Tangent indices corresponding to velocity-limited joints.

joints

List of velocity-limited joints.

model

Robot model.

projection_matrix

Projection from tangent space to subspace with velocity-limited joints.

compute_qp_inequalities(q, dt)

Compute the configuration-dependent velocity limits.

Those limits are defined by:

\[-\mathrm{d}t v_{max} \leq \Delta q \leq \mathrm{d}t v_{max}\]

where \(v_{max} \in {\cal T}\) is the robot’s velocity limit vector and \(\Delta q \in T_q({\cal C})\) is the displacement computed by the inverse kinematics.

Parameters:
  • q (ndarray) – Robot configuration.

  • dt (float) – Integration timestep in [s].

Return type:

Optional[Tuple[ndarray, ndarray]]

Returns:

Pair \((G, h)\) representing the inequality constraint as \(G \Delta q \leq h\), or None if there is no limit.

Configuration limits

Subset of bounded joints associated with a robot model.

class pink.limits.configuration_limit.ConfigurationLimit(model, config_limit_gain=0.5)

Subspace of the tangent space restricted to joints with position limits.

config_limit_gain

gain between 0 and 1 to steer away from configuration limits. It is described in “Real-time prioritized kinematic control under inequality constraints for redundant manipulators” (Kanoun, 2012). More details in this writeup.

model

Robot model the limit applies to.

joints

Joints with configuration limits.

projection_matrix

Projection from tangent space to subspace with configuration-limited joints.

compute_qp_inequalities(q, dt)

Compute the configuration-dependent velocity limits.

Those limits are returned as:

\[{q \ominus q_{min}} \leq \Delta q \leq {q_{max} \ominus q}\]

where \(q \in {\cal C}\) is the robot’s configuration and \(\Delta q \in T_q({\cal C})\) is the displacement in the tangent space at \(q\). These limits correspond to the derivative of \(q_{min} \leq q \leq q_{max}\).

Parameters:
  • q (ndarray) – Robot configuration.

  • dt (float) – Integration timestep in [s].

Return type:

Optional[Tuple[ndarray, ndarray]]

Returns:

Pair \((G, h)\) representing the inequality constraint as \(G \Delta q \leq h\), or None if there is no limit.

Velocity limits

Subset of velocity-limited joints in a robot model.

class pink.limits.velocity_limit.VelocityLimit(model)

Subset of velocity-limited joints in a robot model.

indices

Tangent indices corresponding to velocity-limited joints.

joints

List of velocity-limited joints.

model

Robot model.

projection_matrix

Projection from tangent space to subspace with velocity-limited joints.

compute_qp_inequalities(q, dt)

Compute the configuration-dependent velocity limits.

Those limits are defined by:

\[-\mathrm{d}t v_{max} \leq \Delta q \leq \mathrm{d}t v_{max}\]

where \(v_{max} \in {\cal T}\) is the robot’s velocity limit vector and \(\Delta q \in T_q({\cal C})\) is the displacement computed by the inverse kinematics.

Parameters:
  • q (ndarray) – Robot configuration.

  • dt (float) – Integration timestep in [s].

Return type:

Optional[Tuple[ndarray, ndarray]]

Returns:

Pair \((G, h)\) representing the inequality constraint as \(G \Delta q \leq h\), or None if there is no limit.