Developer notes

This section documents internal functions and other notes shared between contributors to this project.

Design guidelines

  • Pink is designed for clarity before performance

  • Exceptions raised by the library all derive from a Pink exception base class to avoid abstraction leakage. See this design decision for more details on the rationale behind this choice.

  • Task representation strings:
    • Only report parameters that have an effect (for instance, the damping task does not report its lm_damping since its error is always zero).

    • Parent-class attributes come after the class’s own.

    • A de facto practice has emerged where we define __repr__ at the bottom of task Python source files.

Exceptions

Exceptions specific to Pink.

exception pink.exceptions.ConfigurationError

Exception raised when encountering an invalid configuration vector.

exception pink.exceptions.FrameNotFound(name, frames)

Exception raised when a frame is not found in the robot model.

exception pink.exceptions.NoSolutionFound(problem, results)

The QP solver did not find a solution to the differential IK problem.

exception pink.exceptions.NotWithinConfigurationLimits(joint, value, lower, upper)

Exception thrown when a robot configuration violates its limits.

joint

Index of the joint in the configuration vector.

value

Invalid value of the joint.

lower

Minimum allowed value for this joint.

upper

Maximum allowed value for this joint.

exception pink.exceptions.PinkError

Base class for Pink exceptions.

exception pink.exceptions.TargetNotSet

Exception raised when attempting to compute with an unset target.

exception pink.exceptions.TaskDefinitionError

Exception raised when a task definition is ill-formed.

exception pink.exceptions.TaskJacobianNotSet

Exception raised when attempting to compute without a task Jacobian.