1 / 39

My Adventure with Inverse Kinematics

My Adventure with Inverse Kinematics. Chris Hecker definition six, inc. checker@d6.com. 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

crystalc
Download Presentation

My Adventure with Inverse Kinematics

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. My Adventure with Inverse Kinematics Chris Hecker definition six, inc. checker@d6.com

  2. 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!

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

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

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

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

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

  8. g 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

  9. p 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)

  10. Solution: How to move a guy with the mouse? • 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

  11. g 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)

  12. Theory: Analytical IK can’t handle human. 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)

  13. g 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)

  14. 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)

  15. 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)

  16. Solution: CCD only handles serial chains. 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)

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

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

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

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

  21. Problem: Human is not rooted tree. • 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

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

  23. Solution: Human is not rooted tree. • 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!

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

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

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

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

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

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

  30. Theory: Child-child limits • 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

  31. 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 (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!

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

  33. 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?

  34. 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!

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

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

  37. 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?

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

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

More Related