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:
| Field | Meaning |
|---|---|
| Joint type | Revolute (rotates, value in degrees) or Prismatic (slides, value in scene units) |
| d | Link offset along the previous Z axis |
| θ (theta) | Fixed angle offset added to the joint's variable value |
| a | Link length along the common normal (X) |
| α (alpha) | Twist, angle between successive Z axes, about X |
| Min / max value | Joint limits |
| Variable | The variable driving this joint (joint-space mode) |
| Model | This 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
- Base lying down → rotate the object's world pose (X: -90°).
- A link points the wrong way → check that row's α sign and θ offset.
- Joint moves opposite to the real robot → add a 180° θ offset or invert the variable with a Copy function (scale −1).
- 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.