Tip 0, 0, 0 m Error 0 mm Manipulability w 0 Condition 0 Reach 0 % — FPS 0
Solid arm: current pose. Translucent arms: ghost snapshots along the planned move. Curve: tool-tip path, blue (start) to orange (end). Glowing orb in the wire cube: the target. Dashed floor circles: reach radii 0.5 m steps. Axes at the base: red X, blue Y (up), green Z. Drag to orbit, wheel or pinch to zoom.
Six-Axis Robot Arm: DLS IK Lab
Forward kinematics, Jacobian, damped least squares and singularities on a simplified industrial arm. Virtual model: no dynamics, no collisions.
Plan and go Home pose Grip: open Quality: High
Hero view Top-down Side (planar)
Target (m, from the base axis)
Solver
Live follow (arm tracks the target with a few IK iterations per frame)
Tool orientation Free (position only, 3 rows) Tool pointing down (6 rows)
Planned move Joint-space interpolation Straight line in Cartesian space
Live readouts
Joint angles along the planned move
Manipulability along the planned move
IK tracking error history (live)
Missions
Mission 5: predict the maximum reach from the shoulder joint with everything stretched straight (m) Check
Add up the link lengths from the shoulder to the tool point; the model's dimensions are in the science panel.
Experiments
Headless: from a nearly stretched arm, solves a target at 98.5 % of full reach (10 degrees off vertical) with different damping, no per-step clamp, and reports iterations, final error and the largest single joint step.
Sweep damping lambda
Independent numerical checks
Controls Drag / one finger: orbit; wheel / pinch: zoom; three camera presets. Sliders move the target. With Live follow on, the arm chases it; switch it off and press Plan and go for a timed move (minimum-jerk time law) with ghost snapshots. Lambda trades accuracy for stability: near a singularity small lambda gives huge joint steps, large lambda gives a smooth but slightly wrong answer.
The science
Forward kinematics. The tool pose is a product of joint transforms: T = Ry (q1 ) · Tr(0,h) · Rx (q2 ) · Tr(0,L1 ) · Rx (q3 ) · Tr(0,L2 ) · Ry (q4 ) · Rx (q5 ) · Tr(0,L3 ) · Ry (q6 ) · Tr(0,L4 ) with h = 0.40 m, L1 = 0.95 m, L2 = 0.85 m, L3 = 0.22 m, L4 = 0.30 m (model values). Maximum reach from the shoulder is L1 +L2 +L3 +L4 = 2.32 m.
Jacobian. For revolute joint i with world axis a i and origin o i , the linear-velocity column is ai × (p − oi ) and the angular column is ai , so [v; ω] = J q̇.
Damped least squares. Δq = Jᵀ (J Jᵀ + λ² I)⁻¹ e (Wampler; Nakamura and Hanafusa). For λ = 0 this is the pseudo-inverse, whose joint speeds grow like 1/σmin near a singularity; damping bounds them at the price of a residual error. Joint limits are enforced by clamping, a simple approach that can stall IK; random restarts are used for the headless checks.
Singularities. Position manipulability w = √det(Jv Jv ᵀ) = σ1 σ2 σ3 (Yoshikawa) and the condition number σmax /σmin are computed from the eigenvalues of Jv Jv ᵀ. Fully stretched or folded arms and a wrist axis aligned with the forearm roll axis lose a direction of motion.
Trajectories. Time law s(τ) = 10τ³ − 15τ⁴ + 6τ⁵ (zero velocity and acceleration at both ends). Joint-space interpolation is simple and respects limits but the tool path curves; the Cartesian line is straight but may pass near singularities or hit joint limits.
Simplifications. No dynamics, torques, collisions or encoder noise; the elbow-type geometry and the link lengths are illustrative and not a specific commercial robot. Assets built with Blender; scene by Three.js.