Home▸Society & Economics▸3D Robot Arm Kinematics

3D Robot Arm Kinematics — Forward & Inverse Kinematics

A base-yaw + shoulder + elbow manipulator you can drive two ways: dial the three joint angles directly (forward kinematics) or drag a target sphere through 3D space and watch the arm solve its own joint angles to reach it (inverse kinematics), inside a translucent shell showing exactly how far it can reach.

Society & Economics3DModerate60 FPS📱 Mobile-adapted⇄ 2D version
3d-robotics-kinematics-simulator ↗ Open standalone

This 3D companion extends the flat 2-link arm of the original into a genuine spatial manipulator: a base rotates the whole reaching plane around a vertical axis (θ1), a shoulder joint tilts an upper arm up from horizontal (θ2), and an elbow bends the forearm relative to it (θ3), so the end effector sweeps out real x, y and z coordinates rather than staying confined to a single plane. Forward-kinematics mode lets you dial all three angles directly and watch the gripper trace the resulting position; inverse-kinematics mode flips the problem around — drag the red target sphere anywhere in the scene (or use its x/y/z sliders) and the arm solves the shoulder and elbow angles analytically via the law of cosines to reach it, clamping and flagging the pose whenever the target falls outside the arm's physical reach. A translucent double shell shows that reachable workspace directly: an outer hemisphere at the arm's maximum extension (L1+L2) and, since the two links are different lengths, an inner hemisphere marking the dead zone the gripper can never enter no matter how the joints are posed.

⚙ Under the hood

A 3-DOF spatial arm (base yaw, shoulder pitch, elbow) driven by forward kinematics or an analytic inverse-kinematics solver, with a live x/y/z and joint-angle readout and a reachable-workspace envelope shell.

roboticskinematicsforward kinematicsinverse kinematicsmanipulatorworkspace envelope

3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install

FAQ

What's the difference between forward and inverse kinematics here?

Forward kinematics computes the end-effector position from joint angles you set directly. Inverse kinematics does the reverse: you set a target position and the solver computes the joint angles needed to reach it.

Why does the target sometimes stay unreachable?

A 2-link arm can only reach points between |L1−L2| and L1+L2 from the shoulder. Drag the target past that outer shell, or into the inner dead-zone shell, and the "reach" readout switches to "clamped" — the arm poses toward the nearest reachable point instead.

Why two hemisphere shells instead of one?

The outer shell is the maximum reach (arm fully extended). Because the upper arm and forearm have different lengths, there's also a small inner sphere around the shoulder the gripper can never enter, even fully folded — that's the second shell.

Is the inverse-kinematics solution unique?

No — a 2-link planar arm generally has an "elbow up" and "elbow down" solution for the same target. This simulator always picks the elbow-down branch for a predictable, non-flickering pose.

How is this different from the 2D version?

The 2D original solves the same forward/inverse kinematics equations but stays in a single flat plane. Here a base-yaw joint rotates that entire plane around a vertical axis, so the arm genuinely occupies 3D space and you can orbit the camera around it.

What did you find?

Add reproduction steps (optional)