Inverse Kinematics Jason Clark ([email protected])

35
Inverse Kinematics Jason Clark ([email protected])

Transcript of Inverse Kinematics Jason Clark ([email protected])

Page 1: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Inverse Kinematics

Jason Clark ([email protected])

Page 2: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Inverse Kinematics

• Actors are animated in game.

• Animations are independent of the world

• Want to have more realistic response to what the Actors are interacting with.

• Need a mechanism for reacting to goals specified during the game.

Page 3: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Kinematics

• Have a hierarchical skeleton structure

• Each joint is defined local to its parent Rotation Constant Translation

• defines set for entire structure.

Is the global position of end joint

Page 4: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Kinematics

• Consider the kinematic chain below.

• • • •

Page 5: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Inverse Kinematics

• Animations can be thought of as driving the kinematics in a game

• Want reaction to world. I.e. Position a limb based on a goal defined by game situation.

• Need method given goal position to update to achieve it.

Page 6: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Inverse Kinematics

• Kinematics.

• Therefore Inverse Kinematics is.

As a general problem this is hard.

G

E

D1

D2

D3

1

2

3

Page 7: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Types of solutions

• Analytical Equation that can be directly solved Preferred, practically impossible as a general

solution

• Numerical Expensive In-accurate Unfortunately only practical option for general

solver.

Page 8: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Three Common Methods

• Jacobian (Numerical)

• Cyclic Coordinate Descent. (Numerical)

• Anthropomorphic. (Analytical? Depends)

Page 9: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

The Jacobian

• What is it? A linear approximation to

• Matrix of partial derivatives of entire system.

• In this case, defined relative to

• Defines how changes relative to instantaneous changes in the system.

Page 10: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

The Jacobian

• Linear approximation

E

Linear Approximation

Actual

Page 11: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

The Jacobian

• Limiting discussion to positional goals only.

Page 12: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

The Jacobian

Page 13: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Not quite right

• Jacobian defines changes in relative to changes in

• Want to know how a desired change in maps to changes in

• Recall that the equation of inverse kinematics is defined as

• Therefore we need

Page 14: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Inverse Jacobian Problems

• Typically system is over specified (under defined)

• Ameliorate problem by limiting joints. E.g. Specify elbow as a 1DOF joint.

• No guarantee it is invertible. Typically not a square matrix. Singularities.

Page 15: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Cheat. Pseudo Inverse

• Square so can be inverted.

• But why is it okay to use this?

• Principle of Virtual Work

Page 16: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Principle of Virtual Work

• Tends towards the right solution. (I.e. It’s the right idea, if not completely accurate)

• Take small steps to minimize error.

• Calculate error, and if too large adjust step size, or size of

• Error =

Page 17: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Calculating the Jacobian

• Given angle and axis of rotation• is relative to as defined by• Velocity of relative to change in• Gives one column of Jacobian

EN1

N2

V1

V2

Page 18: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Algorithm

• Only considering positional goals.

• Define the following variables – end effector – ith Joint position – ith Joint axis of rotation

Page 19: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Algorithm

1) Calculate the Jacobian

2) Calculate:

3) Calculate:

4) Determine error =

5) If error > tolerance thenrepeat 4 till within tolerance.

Page 20: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Algorithm

6) Calculate:

7) Apply to entire system

8) Repeat until Or max steps is reached.

Page 21: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Addendum

• Minimizes joint angle rates. Configuration produced may not be natural looking

• Add gain values for each joint. Add “stiffness” I.e. Bias which joints are moved

• Add constraints, Clamp joint angles.• Both these ideas slow down convergence of

the algorithm. Need more steps• as force. transforms to internal

velocities

Page 22: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

One last thing

• As stated previously, the Jacobian is a linear approximation to the problem.

• Using the pseudo inverse is an approximation to solve for intractability of the problem.

• So already cheating, why not cheat more? Can simply use as approximation. Slower convergence, but much cheaper to compute than

Page 23: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Cyclic Coordinate Descent

• The Jacobian is hard. It deals with entire system as a whole. Good results, more complicated to code, and expensive.

• That’s too much work, lets deal with each joint individually.

• Heuristic only. Not as mathematically grounded as the Jacobian.

Page 24: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

CCD

• Reduce problem to local consideration at each joint. Start at leaf and move up.

• Calculate change in joint needed to minimize “error”. Error =

• Calculate

Page 25: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

CCD

• Calculate rotation necessary to align into

• Modify current joint by and adjust entire chain below. This is important.

• Move up chain and repeat.

• Repeat over entire chain till.

• Done!

cVcV

Page 26: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Addendum

• Pretty easy. Much simpler than the Jacobian.

• Problems. Takes more updates of chain and steps than Jacobian does. Simpler individual steps, need more of them.

Page 27: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Addendum

• Moves end joints first. Heuristic inherently favors them. Local minima problem

• Results in unnatural configurations. E.g Wrist bent oddly to reach goal. Worse than Jacobian about this.

• Basically Gauss-Seidel. SOR can help.

Page 28: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Demo

• Snake From Jeff Lander darwin3d.com/gdm/1998.htm

Page 29: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Anthropomorphic

• Other 2 solutions are general purpose solutions

• Most games have people. We know something about them.

• Standard principle of computer science. Use knowledge of problem domain to simplify problem

Page 30: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Rainbow 6: Lockdown

• Leave wrist alone. Inaccurate, but good enough and difficult to get right.

• Treat elbow as a 1DOF joint. Not precisely accurate. But good enough.

• Treat the shoulder as 3DOF joint with no constraints. Again, not entirely true but good enough.

Page 31: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Rainbow 6: Lockdown

• Leg can be run through same algorithm as Arm. (mostly)

• Knee can be simulated as a 1DOF joint. (Elbow)

• Hip can be simulated as a 3DOF joint (Shoulder)

• Have second pass to fix Ankle.

Page 32: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Algorithm

• Elbow defines the distance between the shoulder and the end effector.

• Simple Trig problem

• Law of Cosines

C

Page 33: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

Algorithm

• After that, simply run one step of the CCD algorithm on the shoulder.

• Done! Simple, accurate within a tolerable margin, and cheap.

Page 34: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Essential Math for Games

References

• Welman, Chris, “Inverse Kinematics and Geometric Constraints for Articulated Figure Manipulation”, Simon Fraser University. 1993.

• Meredith, Michael and Maddock, Steve, “Real-Time Inverse Kinematics: The Return of the Jacobian” University of Sheffield

• Tolani, Goswami, and Badler, “Real-Time Inverse Kinematics Techniques for Anthropomorphic Limbs”, University of Pennsylvania. 2000

• Blow, Jonathan, “Oh My God! I Inverted Kine”. Game Developer. September 1998

• Parent, Rick, “Computer Animation: Algorithms and Techniques”, Morgan-Kaufmann, San Francisco, 2001.

Page 35: Inverse Kinematics Jason Clark (jason@essentialmath.com)

Questions?