Machinery TwinDocs

Serial manipulator

DH-parameter robot arms, joint-space and workspace (IK) control, base orientation, and frames.

The serial manipulator models any serial kinematic chain, a 6-axis articulated arm, a SCARA, a custom 3-joint loader, from a table of Denavit–Hartenberg (DH) parameters. Each joint is driven by its own variable, or the whole arm follows a Cartesian target with the built-in inverse kinematics.

The DH table

Each row (link) of the table defines one joint, using the classic DH convention, per joint: rotate about Z, translate along Z, translate along X, rotate about X:

FieldMeaning
Joint typeRevolute (rotates, value in degrees) or Prismatic (slides, value in scene units)
dLink offset along the previous Z axis
θ (theta)Fixed angle offset added to the joint's variable value
aLink length along the common normal (X)
α (alpha)Twist, angle between successive Z axes, about X
Min / max valueJoint limits
VariableThe variable driving this joint (joint-space mode)
ModelThis link's CAD, with its own model-space offset

If you have the robot's datasheet DH table, you can type it in directly. If not, the kinematics reference walks through deriving one.

Two control modes

Joint space, each joint follows its own variable. This is the natural mode for mirroring a real robot in Online mode: map each joint variable to the controller's reported axis positions and the twin replays the robot exactly.

Workspace, you provide the tool center point (TCP) pose, X, Y, Z, roll, pitch, yaw, each bound to a variable, and the built-in IK solves all joint values. This is the mode for describing tasks: a pick-and-place path defined by a state machine and cams in Cartesian coordinates.

Workspace frame: global vs local

Workspace targets can be interpreted in two frames:

  • Global, targets are world coordinates: "move the TCP to this point in the scene". The natural choice when the target comes from scene-level logic.
  • Local, targets are in the robot's own base frame, as a robot controller would express them. The natural choice when the PLC/robot controller supplies Cartesian setpoints.

Base orientation, why your robot lies down

The DH convention builds the chain along successive Z axes, with the first joint rotating about the base Z. Machinery Twin's world is Y-up, so a freshly configured DH robot typically appears lying on its side. Fix it once by rotating the manipulator object's base: set the object's world rotation X to -90°. The whole chain, and workspace IK in local frame, follows the base.

Checklist when the arm looks wrong

  1. Base lying down → rotate the object's world pose (X: -90°).
  2. A link points the wrong way → check that row's α sign and θ offset.
  3. Joint moves opposite to the real robot → add a 180° θ offset or invert the variable with a Copy function (scale −1).
  4. CAD doesn't sit on its joint → adjust that link's model pose, not the DH row.

Joint limits

Min/max value per joint clamps motion in both control modes, set them to the real robot's limits so the twin can never show a pose the machine cannot reach.

Dressing the arm

Each link row carries its own model. Attach end-of-arm tooling as child objects of the last link via the hierarchy, so the gripper both rides the flange and keeps its own open/close binding.

On this page