Drag the target. Watch the arm follow. Understand the math.
You have a robotic arm. You know where you want the hand to go. But the arm is controlled by joint angles, not hand position.
Forward kinematics is easy: given the angles, calculate where the hand ends up. It's just trigonometry.
Inverse kinematics is the reverse: given where you want the hand, find the angles. This is hard. Often there are multiple solutions, or none at all.
Think of your own arm. You can easily point at something - your brain solves IK instantly. But try to consciously figure out the exact angles of your shoulder, elbow, and wrist? Much harder.
Instead of solving IK directly, we ask a simpler question: if I wiggle a joint slightly, how does the hand move?
The Jacobian matrix captures exactly this relationship. Each column tells you how the end effector's position changes when you rotate one joint.
J = [ dx/dθ₁ dx/dθ₂ ... dx/dθₙ ]
[ dy/dθ₁ dy/dθ₂ ... dy/dθₙ ]
Each entry is a partial derivative - the sensitivity of position to angle. If J[0][1] is large, rotating joint 2 moves the hand a lot in the x direction.
The Jacobian is a map of sensitivities. It tells you which joints are most effective at moving the hand in each direction, right now, in this configuration.
Here's the trick: we don't solve IK in one step. We take small steps toward the target.
Each frame:
Δθ = J⁺ · Δx where: Δθ = change in joint angles J⁺ = pseudoinverse of Jacobian Δx = (target - current position)
The pseudoinverse (J⁺) reverses the Jacobian's mapping. Instead of "angles → position change", we get "position change → angles".
It's like navigating by feel. You can't teleport to your destination, but you can sense which direction to move and take a step. Repeat until you arrive.
This approach works because the Jacobian linearizes the problem locally. Even though the full IK problem is nonlinear and complex, small movements are approximately linear.
The tradeoff: we need multiple iterations, and we might get stuck in local minima (configurations where no small movement helps, even though a solution exists).
But for real-time applications like games and robotics, iterative methods are fast and good enough. The arm smoothly follows the target, which often looks more natural anyway.