1 / 39

# My Adventure with Inverse Kinematics - PowerPoint PPT Presentation

My Adventure with Inverse Kinematics. Chris Hecker definition six, inc. [email protected] 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

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### My Adventure with Inverse Kinematics

Chris Hecker

definition six, inc.

[email protected]

• the path I took while solving a problem with inverse kinematics

• how I use math to model and [sometimes] solve problems

• learn from my successes and failures

• work in progress!

• 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 WorkshopFriday, 4pm - 7pm

• 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.

• 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 statement and discussion

• related theory

• attempted solution

• problem statement and discussion

• related theory

• ...

• 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 kinematics

• FK: p=f(q)

• IK: q = f-1(p)

• p is Euclidean, angles

• q is configuration space

p

p = (x, y)

q = (q1, q2)

q2

q1

q2

q1

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

• degrees of freedom (DOF)

• 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

• physical system, polynomial, etc.

• fundamental task of IK is to control degrees of freedom to attain goal

• p = (x, y)

q = (q1, q2)

• analytical IK

• invert p = f(q) to get q from p

• relatively easy for the 2D arm

• inverse trig, some vector algebra

• gets complicated as n increases

Problem: Analytical IK can’t handle human.

p

• human has lots of DOF

• even 2D arm with shoulderhas more DOF than neededto reach goal

• solving p = f(q) requirescertain characteristics

q3

q2

q1

p = (x, y)

q = (q1 , q2 , q3)

p

• p = f(q) is a set of nonlinear equations

• generally no closed forms

• must iterate numerically

• must be square, nDOF = ngoal

• over-, under-constrained system

• “redundant manipulator”

• ex. human reaching for point and/or orientation

• vast literature on solving f(q) = p

q3

q2

q1

p = (x, y)

q = (q1 , q2 , q3)

Solution: Analytical IK can’t handle human.

p

• use Cyclic Coordinate Descent(CCD) to solve arms

• iterative, recursive position-spacealgorithm

• fast, easy, robust

• start from last position

• not path independent, but faster

• I draw every outside iteration

• looks like animation, but it’s not

q3

q2

q1

p = (x, y)

q = (q1 , q2 , q3)

g1

g2

Problem: CCD only handles serial chains.

p2

p1

• multiple goals are necessaryfor human

• stack up vectors inp=f(q)

• coupled at branches

q3

q5

q4

q2

q1

p = (x1, y1, x2, y2)

q = (q1 , q2 , q3 , q4 , q5)

g1

g2

Theory: CCD only handles serial chains.

p2

p1

• coupling between goals

• either solvable alone,neither solvable together

• how to distribute desired-angleerror?

q3

q5

q4

q2

q1

p = (x1, y1, x2, y2)

q = (q1 , q2 , q3 , q4 , q5)

p2

p1

• simply average desired angles atbranch parents to attainmultiple goals and distributeerror

• q1 in example, imagine p1, p2pulled in opposite directions

q3

q5

q4

q2

q1

p = (x1, y1, x2, y2)

q = (q1 , q2 , q3 , q4 , q5)

• 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

• 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

• attempt to “Gram-Schmidt” off any movement that would result in error

b

c

a

• could have tried real Jacobian force mapping Gram-Schmidt

• Which end effector (hand, foot) is the root?

• There is no persistent fixed rootin a rock climber

• or walking person

• CCD must start at a fixed root

• 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 withrespect to the root

• just type it in

• invert tree to new root

• Caml is pretty good at thissort 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!

• elbow can’t bend backwards

• should lend believability and intuition

• inequality constraints: q³qmin

• abandon all (most) hope of analytical solution

• these inequalities are axis aligned planes in configuration space

qmax

q

qmin

• 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

• parent-child not enough with moving root

• pelvis example:

• left foot root

• right foot root

• chest root

• parent-child not enough with moving root

• pelvis example:

• left foot root

• right foot root

• chest root

• parent-child not enough with moving root

• pelvis example:

• left foot root

• right foot root

• chest root

?

• both angles are dependent on each other, coupled

• parent is fixed in CCD

• constraints are now non-axisaligned planes in C-space

• simultaneous solution necessaryat branches with child-childlimits

• 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 (q1 - d1)2 + (q2 - d2)2 w.r.t. qmin12£ q1 - q2 £qmax12

• lots of literature on NLSLI

• I convert to LCP and use Lemke’s algorithm

• works great!

• We extended CCD to handle:

• multiple end effector goals

• dynamically changing root node

• arbitrary joint limits

• 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?

• 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!

• IK just a rough initial guess for body knowledge system; should be:

• physically plausible

• 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

• 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

• 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?

• pseudo-inverse methods

• give explicit control over redundant DOF

• data-based methods (model-based)

• functions as lookup tables

• two great theses:

• Paolo Baerlocher

• Chris Welman