kins − kinematics definitions for LinuxCNC
loadrt trivkins (use for most cartesian machines)
loadrt genhexkins
loadrt genserkins
loadrt lineardeltakins (see separate manpage)
loadrt maxkins
loadrt pumakins
loadrt rotarydeltakins
loadrt rotatekins
loadrt scarakins
loadrt tripodkins
loadrt xyzac-trt-kins
loadrt xyzbc-trt-kins
loadrt 5axiskins
Rather than exporting HAL pins and functions, these components provide the forward and inverse kinematics definitions for LinuxCNC.
trivkins
− generalized trivial kinematics
Joint numbers are assigned sequentialy according to the axis
letters specified with the coordinates=
parameter.
If the
coordinates= parameter is omitted, joint numbers are
assigned sequentially to every known axis letter
("xyzabcuvw").
Example: loadrt trivkins
Assigns all axis letters to joint numbers in sequence:
x==joint0,
y==joint1, z==joint2
a==joint3, b==joint4, c==joint5
u==joint6, v==joint7, w==joint8
Example: loadrt trivkins coordinates=xyz
Assigns: x==joint0, y==joint1, z==joint2
Example: loadrt trivkins coordinates=xz
Assigns: x==joint0, z==joint1
Example: loadrt trivkins coordinates=xyzy
Assigns: x==joint0, y0==joint1, z==joint2, y1==joint3
The default
kinematics type is KINEMATICS_IDENTITY. Guis may
provide special features for configurations using this
default kinematics type. For instance, the axis gui
automatically handles joint and world mode operations so
that the distinctions between joints and axes are not
visible to the operator. This is feasible since there is an
exact correspondence between a joint number and its matching
axis letter.
The kinematics type can be set with the kinstype=
parameter:
kinstype=1 for KINEMATICS_IDENTITY (default if
kinstype= omitted)
kinstype=[b|B] for KINEMATICS_BOTH
kinstype=[f|F] for KINEMATICS_FORWARD_ONLY
kinstype=[i|I] for KINEMATICS_INVERSE_ONLY
Example: loadrt trivkins coordinates=xyz
kinstype=b
Use kinstype=KINEMATICS_BOTH for configurations that need to move joints independently (joint mode) or as coordinated (teleop) movements in world coordinates.
When using the axis gui with KINEMATICS_BOTH, the ’$’ key is used to toggle between joint and teleop (world) modes.
An axis letter
may be assigned more than once.
Example: coordinates=xyyzw kinstype=BOTH
Assigns: x==joint0, y==joint1 AND joint2, z==joint3,
w==joint4
The above example is representative of a gantry configuration that uses two joints (joint1 and joint2) to move a single axis (y). Using kinstype=BOTH allows the configuration to be toggled between joint and world modes of operation.
genhexkins
− Hexapod Kinematics
Gives six degrees of freedom in position and orientation
(XYZABC). The location of base and platform joints is
defined by hal parameters. The forward kinematics iteration
is controlled by hal pins.
genhexkins.base.N.x
genhexkins.base.N.y
genhexkins.base.N.z
genhexkins.platform.N.x
genhexkins.platform.N.y
genhexkins.platform.N.z
Parameters describing the Nth joint’s coordinates.
genhexkins.convergence-criterion
Minimum error value that ends iterations with converged solution.
genhexkins.limit-iterations
Limit of iterations, if exceeded iterations stop with no convergence.
genhexkins.max-error
Maximum error value, if exceeded iterations stop with no convergence.
genhexkins.last-iterations
Number of iterations spent for the last forward kinematics solution.
genhexkins.max-iterations
Maximum number of iterations spent for a converged solution during current session.
genserkins
− generalized serial kinematics
Kinematics that can model a general serial-link manipulator
with up to 6 angular joints.
The kinematics
use Denavit-Hartenberg definition for the joint and links.
The DH definitions are the ones used by John J Craig in
"Introduction to Robotics: Mechanics and Control"
The parameters for the manipulator are defined by hal pins.
genserkins.A-N
genserkins.ALPHA-N
genserkins.D-N
Parameters describing the Nth joint’s geometry.
maxkins
− 5-axis kinematics example
Kinematics for Chris Radek’s tabletop 5 axis mill
named ’max’ with tilting head (B axis) and
horizintal rotary mounted to the table (C axis). Provides
UVW motion in the rotated coordinate system. The source
file, maxkins.c, may be a useful starting point for other
5-axis systems.
pumakins
− kinematics for puma typed robots
Kinematics for a puma-style robot with 6 joints
pumakins.A2
pumakins.A3
pumakins.D3
pumakins.D4
Describe the geometry of the robot
rotarydeltakins
− kinematics for a rotary delta machine
Rotary delta robot (3 Joints)
rotatekins
− Rotated Kinematics
The X and Y axes are rotated 45 degrees compared to the
joints 0 and 1.
scarakins
− kinematics for SCARA-type robots
scarakins.D1
Vertical distance from the ground plane to the center of the inner arm.
scarakins.D2
Horizontal distance between joint[0] axis and joint[1] axis, ie. the length of the inner arm.
scarakins.D3
Vertical distance from the center of the inner arm to the center of the outer arm. May be positive or negative depending on the structure of the robot.
scarakins.D4
Horizontal distance between joint[1] axis and joint[2] axis, ie. the length of the outer arm.
scarakins.D5
Vertical distance from the end effector to the tooltip. Positive means the tooltip is lower than the end effector, and is the normal case.
scarakins.D6
Horizontal distance from the centerline of the end effector (and the joints 2 and 3 axis) and the tooltip. Zero means the tooltip is on the centerline. Non-zero values should be positive, if negative they introduce a 180 degree offset on the value of joint[3].
tripodkins
− Tripod Kinematics
The joints represent the distance of the controlled point
from three predefined locations (the motors), giving three
degrees of freedom in position (XYZ)
tripodkins.Bx
tripodkins.Cx
tripodkins.Cy
The location of the three motors is (0,0), (Bx,0), and (Cx,Cy)
xyzac-trt-kins
− 5 Axis mill (Table Rotary/Tilting)
Tilting table (A) and horizontal rotary mounted tothe table
(C) (5 Joints)
xyzbc-trt-kins
− 5 Axis mill (Table Rotary/Tilting)
Tilting table (B) and horizontal rotary mounted to table (C
axis) (5 Joints)
5axiskins
− 5 Axis bridge mill
XYZBC (5 Joints)
Kinematics section in the LinuxCNC documentation