My Adventure with Inverse Kinematics Chris Hecker definition

  • Slides: 39
Download presentation
My Adventure with Inverse Kinematics Chris Hecker definition six, inc. checker@d 6. com

My Adventure with Inverse Kinematics Chris Hecker definition six, inc. checker@d 6. com

What is this lecture about? • the path I took while solving a problem

What is this lecture about? • the path I took while solving a problem with inverse kinematics • how I use math to model and [sometimes] solve problems • decisions I made, both good and bad • learn from my successes and failures • work in progress!

What isn’t this lecture about? • not an IK tutorial or introduction • not

What isn’t this lecture about? • not an IK tutorial or introduction • not going to give you the One True Way to do IK • has nothing to do with graphics • not about my rock climbing game • Experimental Gameplay Workshop Friday, 4 pm - 7 pm

Takeaway • You will get insight into how IK on a whole human body

Takeaway • You will get insight into how IK on a whole human body is different from IK on a single arm. • You will see how IK is a building block, but not a complete solution to character animation.

Prerequisites • must be very comfortable with math – doesn’t mean you know tons

Prerequisites • must be very comfortable with math – doesn’t mean you know tons of math – does mean you follow quickly and aren’t afraid of it • probably best if you’ve implemented a simple IK system – foot placement, arm grabbing door, etc.

Talk Structure (linear with occasional branches) • • . . . attempted solution problem

Talk Structure (linear with occasional branches) • • . . . attempted solution problem statement and discussion related theory. . .

Problem: How to move a guy with the mouse? • • move like a

Problem: How to move a guy with the mouse? • • move like a [rock climbing] human interactive direct body/limb control did not want to use physics

Theory: How to move a guy with the mouse? • inverse kinematics vs. forward

Theory: How to move a guy with the mouse? • inverse kinematics vs. forward kinematics – FK: p=f(q) – IK: q = f-1(p) – p is Euclidean, angles – q is configuration space p = (x, y) q = (q 1, q 2) g p q 2 q 1

Theory: How to move a guy with the mouse? (cont. ) • degrees of

Theory: How to move a guy with the mouse? (cont. ) • degrees of freedom (DOF) p q 2 • incredibly important concept • “ways in which system can change” • configuration space • find DOF of system to understand it • control & constrain DOF to control it • examples q 1 p = (x, y) q = (q 1, q 2) • physical system, polynomial, etc. • fundamental task of IK is to control degrees of freedom to attain goal

Solution: How to move a guy with the mouse? • analytical IK • invert

Solution: How to move a guy with the mouse? • analytical IK • invert p = f(q) to get q from p • relatively easy for the 2 D arm – inverse trig, some vector algebra • gets complicated as n increases

Problem: Analytical IK can’t handle human. • human has lots of DOF q 3

Problem: Analytical IK can’t handle human. • human has lots of DOF q 3 – even 2 D arm with shoulder has more DOF than needed to reach goal • solving p = f(q) requires certain characteristics q 2 q 1 p = (x, y) q = (q 1 , q 2 , q 3) p g

Theory: Analytical IK can’t handle human. • p = f(q) is a set of

Theory: Analytical IK can’t handle human. • p = f(q) is a set of nonlinear equations – generally no closed forms – must iterate numerically q 3 q 2 • must be square, n. DOF = ngoal • over-, under-constrained system – “redundant manipulator” – ex. human reaching for point and/or orientation • vast literature on solving f(q) = p p q 1 p = (x, y) q = (q 1 , q 2 , q 3)

Solution: Analytical IK can’t handle human. • use Cyclic Coordinate Descent (CCD) to solve

Solution: Analytical IK can’t handle human. • use Cyclic Coordinate Descent (CCD) to solve arms – iterative, recursive position-space algorithm – fast, easy, robust – start from last position • not path independent, but faster – I draw every outside iteration • looks like animation, but it’s not q 3 p g q 2 q 1 p = (x, y) q = (q 1 , q 2 , q 3)

Problem: CCD only handles serial chains. p • multiple goals are necessary for human

Problem: CCD only handles serial chains. p • multiple goals are necessary for human – stack up vectors in p=f(q) – coupled at branches 2 g 2 q 3 q 5 p 1 g 1 q 4 q 2 q 1 p = (x 1, y 1, x 2, y 2) q = (q 1 , q 2 , q 3 , q 4 , q 5)

Theory: CCD only handles serial chains. p • coupling between goals g 2 •

Theory: CCD only handles serial chains. p • coupling between goals g 2 • either solvable alone, neither solvable together • how to distribute desired-angle error? 2 q 3 q 5 p 1 g 1 q 4 q 2 q 1 p = (x 1, y 1, x 2, y 2) q = (q 1 , q 2 , q 3 , q 4 , q 5)

Solution: CCD only handles serial chains. p • simply average desired angles at branch

Solution: CCD only handles serial chains. p • simply average desired angles at branch parents to attain q 5 multiple goals and distribute error – q 1 in example, imagine p 1, p 2 pulled in opposite directions 2 q 3 p 1 q 4 q 2 q 1 p = (x 1, y 1, x 2, y 2) q = (q 1 , q 2 , q 3 , q 4 , q 5)

Problem: Drift on multiple goals. • average can’t satisfy all goals • or even

Problem: Drift on multiple goals. • average can’t satisfy all goals • or even prioritize them • I specifically want to drag climber hand with mouse and have other end effectors stay on holds q

Theory: Drift on multiple goals. • want a rigid constraint at end effectors •

Theory: Drift on multiple goals. • want a rigid constraint at end effectors • closed loops are hard, CCD doesn’t handle them, nor do common IK algorithms – must solve simultaneously – not hierarchical anymore – closed loops don’t have local behavior q

Solution: Drift on multiple goals. • attempt to “Gram-Schmidt” off any movement that would

Solution: Drift on multiple goals. • attempt to “Gram-Schmidt” off any movement that would result in error b c a

Problem: Gram-Schmidt removes the wrong direction sometimes. • could have tried real Jacobian force

Problem: Gram-Schmidt removes the wrong direction sometimes. • could have tried real Jacobian force mapping Gram-Schmidt

Problem: Human is not rooted tree. • Which end effector (hand, foot) is the

Problem: Human is not rooted tree. • Which end effector (hand, foot) is the root? • There is no persistent fixed root in a rock climber – or walking person • CCD must start at a fixed root

Theory: Human is not rooted tree. • switching root is basically a datastructure problem

Theory: Human is not rooted tree. • switching root is basically a datastructure problem • relative angles must change – joint limits (see below) • behavior will change slightly as well, since CCD isn’t symmetric with respect to the root

Solution: Human is not rooted tree. • just type it in • invert tree

Solution: Human is not rooted tree. • just type it in • invert tree to new root • Caml is pretty good at this sort of thing – see last year’s GDC talk • dragging torso is done by inverting to a torso node, then changing the root position – the hands and feet are all end-effectors – hack!

Problem: Joint limits • elbow can’t bend backwards • should lend believability and intuition

Problem: Joint limits • elbow can’t bend backwards • should lend believability and intuition

Theory: Joint limits • inequality constraints: q ³ qmin – abandon all (most) hope

Theory: Joint limits • inequality constraints: q ³ qmin – abandon all (most) hope of analytical solution – these inequalities are axis aligned planes in configuration space qmax q qmin

Solution: Joint limits • • CCD makes parent-child limits easy do min/max clamp in

Solution: Joint limits • • CCD makes parent-child limits easy do min/max clamp in CCD inner iteration easy, and rest of system compensates issue: CCD doesn’t “know” about the joint limits – often compensates, but doesn’t know to avoid them

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: –

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: – left foot root – right foot root – chest root

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: –

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: – left foot root – right foot root – chest root

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: –

Problem: Child-child limits • parent-child not enough with moving root • pelvis example: – left foot root – right foot root – chest root ?

Theory: Child-child limits • both angles are dependent on each other, coupled – parent

Theory: Child-child limits • both angles are dependent on each other, coupled – parent is fixed in CCD – constraints are now non-axis aligned planes in C-space • simultaneous solution necessary at branches with child-child limits

Solution: Child-child limits • Good solution should: – satisfy constraints always – have zero

Solution: Child-child limits • Good solution should: – satisfy constraints always – have zero error in goals if possible – have least squares error if not possible • Nonlinear Least Squares with Linear Inequalities: minimize (q 1 - d 1)2 + (q 2 - d 2)2 w. r. t. qmin 12 £ q 1 - q 2 £ qmax 12 – lots of literature on NLSLI – I convert to LCP and use Lemke’s algorithm – works great!

Accomplishments • We extended CCD to handle: – multiple end effector goals – dynamically

Accomplishments • We extended CCD to handle: – multiple end effector goals – dynamically changing root node – arbitrary joint limits

Problems • drift on multi-goals is still a problem • CCD doesn’t know about

Problems • drift on multi-goals is still a problem • CCD doesn’t know about joint limits • sometimes non-physical movement – CCD isn’t doing physics, not conserving energy, or anything else for that matter • rooted hierarchies are inconvenient • how to control redundant DOF?

Body Knowledge System • system to manage movement and keep it natural – “situation”

Body Knowledge System • system to manage movement and keep it natural – “situation” & “reaction” – ex. joint limits handled in body knowledge • huge rules system • allocates redundant DOF – this is the key to natural movement!

Body Knowledge System (cont. ) • IK just a rough initial guess for body

Body Knowledge System (cont. ) • IK just a rough initial guess for body knowledge system; should be: – physically plausible • no added energy, etc. – easy to layer conflicting goals – able to cope with over-constrained goals • don’t know enough about this yet, but I think it will be more important than IK for good dynamic animation

What I Didn’t Talk About • development process stuff – developing on lower dimensional

What I Didn’t Talk About • development process stuff – developing on lower dimensional subproblems – using visualizations to help debug math – Mathematica and Matlab for development and debugging – running multiple techniques on top of each other • physics-based techniques I tried

What I Didn’t Try • I should have done a weighted average based on

What I Didn’t Try • I should have done a weighted average based on error for multi-goals, duh. – even weighted average wouldn’t be rigid • although could make weight very big. . . • similar to a stiff system • Wrong: “CCD must have fixed root” – now that I understand better, this isn’t actualy true • the root’s position is just more DOF • CCD probably wouldn’t deal with this very well?

What I Didn’t Try (cont. ) • pseudo-inverse methods • give explicit control over

What I Didn’t Try (cont. ) • pseudo-inverse methods • give explicit control over redundant DOF • data-based methods (model-based) • functions as lookup tables • totally ad-hoc methods

References • two great theses: – Paolo Baerlocher – Chris Welman • google &

References • two great theses: – Paolo Baerlocher – Chris Welman • google & citeseer • GDC talks – David Wu – Ken Perlin • Jeff Lander’s articles & code • Experimental Gameplay Workshop