Generic Inverse Kinematics

Generic Inverse Kinematics makes it possible to assign inverse kinematics to most types of Devices with 6 or fewer DOF. The solution works by breaking the general kinematic problem into 8 classes of positioners coupled with a wrist (or orienter).

Note: Example Devices for each class can be found in Syslib/DEVICES/GENERIC. The Default Device in each class directory represents a pristine example of each kinematic class with default parameters. The Kinematic Class section below describes the Joint types for each class. See also Assigning Inverse Kinematics

The Default Device may be used as an aid when assigning Generic kinematic parameters. The generic parameters are defined by changes that must be made to make the Default Device look like the new Device. The Default Device is stored with all rotational Joints at zero and all translational Joints at 50mm travel.

The following steps should be followed to determine the appropriate parameters for the new Device:

  • Assign basic DOF functions and joint types as usual for each Joint
  • Set the Device mounting plate as usual
  • Assign kinematics to be Generic
  • If necessary, modify the Actuator Space map for the Device
  • If the Device has fewer than 6 DOF define which joints are Present and which are Absent with the PRESENT function
  • Use the Compute command to automatically compute the generic parameters
  • If the kinematics fails (i.e. the Device's TCP does not move to a Tag Point it should be able to reach) the problem lies with the DOF assignments and/or the generic parameters.

About automatically assigned Generic kinematics parameters Devices with fewer than 6 DOF must have the appropriate combination of Joints present/absent set before invoking this function. When attempting to set up such devices with fewer than 6 DOF, the Compute command may issue messages regarding the selection of the Joints Present choices. For example, if the device has only one wrist joint (from among the generic joints 4,5,6) then the message would be Joint 6 must be Present for this device implying that Joint 6 should be set to Present and Joints 4 and 5 should be Absent for such a device.

Except for the Joints Present parameters, this information is determined by the Compute command and probably never needs to be set/changed by you.

The Joints Present parameters define which Joint solutions to use for a Generic Kinematic Device with less than 6 kinematic DOF.

  • Present indicates that the kinematic solution for this Joint is to be used for the Device. The 1st Present Joint solution is mapped to the Device DOF 1, the 2nd Present Joint to DOF 2 and so on.
  • Absent-Fixed indicates that the kinematic solution for this Joint is not to be used for the Device, but if the solution for this Joint is non-zero, the destination will be declared unreachable.
  • Absent-Free indicates that the kinematic solution for this Joint is to be ignored.

The Kinematic Class parameter defines the Generic kinematic class for a Device. The Generic kinematic classes are based on the 4 planar positioning mechanisms: TsT, RpR, RsT, TsR. T means translate, R means rotate, s implies perpendicular axes for the two operations, and p implies parallel axes (e.g. RpR could mean two successive rotations about the Z axis and TsR could mean translate along X and rotate about either Y or Z).

Each class of positioner is followed by an RsRsR (Default: RzRyRz) orienting wrist. Choose the class which best models the Device being constructed. There are eight generic kinematic positioner classes to choose from:

  • Cartesian TsTsT (Default: Tx Ty Tz )
  • Scara TpRpR (Default: Tz Rz Rz )
  • Cylindrical TpRsT (Default: Tz Rz Ty )
  • Block TsTsR (Default: Tz Ty Rz )
  • Bore RpTsT (Default: Rz Tz Ty )
  • Articulated RsRpR (Default: Rz Ry Ry )
  • Spherical RsRsT (Default: Rz Ry Tz )
  • Pendulum RpTsR (Default: Rz Tz Ry )

Of the eight classes, Cartesian and Scara are special in the sense that the solution is independent of the sequence of the first three Joints.

  • The Link Lengths parameters define the Joint lengths and offsets for a Generic kinematic Device.
  • The Zero Offsets parameters define the Joint offsets from the zero position for a Generic kinematic Device. Generic kinematics expects the Joint zero positions to be the same as that of the Default generic Device. This function makes it possible to specify an offset from that position.
  • The Joint Signs parameters define the Joint direction signs for a Generic kinematic Device. Generic kinematics expects the Joint directions to be the same as that of the Default generic Device. This function makes it possible to specify a different direction.
  • The Wrist Rotation parameters define the relative wrist rotation for a Generic kinematic Device. Generic kinematics expects the wrist Part orientation to be the same as that of the Default generic Device. This function makes it possible to specify a different orientation.
  • The Base Offset parameters define the Base Part offset for a Generic kinematic Device. Generic kinematics expects the Base Part location/orientation to be the same as that of the Default generic Device. This function makes it possible to specify a different transformation.
  • The Mount Offset parameters define the Mount Part offset for a Generic kinematic Device. Generic kinematics expects the Mount Part location/orientation to be the same as that of the Default generic Device. This function makes it possible to specify a different transformation. In case the parameters are being set manually, the kinematic class should be set before defining the other Generic parameters since the class determines what other information is required.

Additional Tips

  • Devices with fewer than 6 DOF must have the appropriate combination of Joints present/absent set before invoking the Compute command.
  • When setting Joints Present, set absent Joints to Absent-Fixed (this forces the Device to always go exactly to a point with the proper orientation).
  • If the Device is required to move to wrist positions that are singular, the Controller Attribute for Singularity Tolerance should be set to 0.0. Otherwise, the inverse kinematics will return Unreachable for any solution that results in a wrist Joint 4 solution whose magnitude is less than the value of the Singularity Tool.