Presentation is loading. Please wait.

Presentation is loading. Please wait.

Skeletal Motion, Inverse Kinematics

Similar presentations


Presentation on theme: "Skeletal Motion, Inverse Kinematics"— Presentation transcript:

1 Skeletal Motion, Inverse Kinematics
Ladislav Kavan

2 Animating Skeleton Character animation decomposed to
skinning (skin deformation) previous lesson animation of the skeleton this lesson We consider only rotational joints n ... the number of joints joint rotations described by matrices T(0), ..., T(n) The task: Acquire T(0), ..., T(n) for each frame of the animation Ladislav Kavan

3 Summary of Animation Methods
direct control of rotations (forward kinematics) tedious work - only key postures designed others computed automatically indirect control: inverse kinematics specify a goal, rotations computed automatically more intuitive to use motion capture records a real motion difficult to control (but possible!) forward dynamics physics engines Ladislav Kavan

4 Keyframe Animation very old concept (Disney's studios)
Idea: specify only important (key) frames others given by interpolation of key frames Anything can be controlled via keyframes (not only rotation of joints) variety of interpolation curves piecewise constant, linear, polynomial (spline) For rotation: good interpolation of rotations essential! SLERP (recall quaternions) SQUAD (Spherical QUADratic interpolation) Ladislav Kavan

5 Forward Kinematics (FK)
used for keyframe design originated in robotics kinematic chain: a chain (path) of joints base: the fixed part of a kinematic chain end-effector: the moving part of a kinematic chain Assume (wlog): each joint rotates only about one fixed axis (... only 1-DOF) Replace the 3-DOF joints by three 1-DOF joints (with the same origin) Ladislav Kavan

6 Forward Kinematics (FK)
Input: state vector  = (1, ..., k)T - joint rotations k is the number of DOFs of the kinematic chain Task: compute position (and orientation) of the end-effector: x = f() only position: 3-DOF end-effector, xR3 position and orientation: 6-DOF, xR6 first three coordinates: translation second three coordinates: rotation in scaled axis representation (unit axis multiplied by angle of rotation) Solution: f is concatenation of transformations computed in the part about skinning: matrix F Ladislav Kavan

7 Inverse Kinematics (IK)
Input: the end-effector (goal) x is given typically 3 to 6-DOFs Task: compute state vector  = (1, ..., k)T such that f() = x, i.e.  = f-1(x) Problems: sometimes no solution (example?) solution may not be defined uniquely (example?) infinite number of solutions (example?) f is non-linear because of the sin and cos in rotations Ladislav Kavan

8 IK: Analytical Solution
Idea: solve the system of equations f() = x for  very difficult for longer kinematic chains used only for 6/7-DOF manipulators usually the fastest method (if possible) Example: Human Arm Like (HAL) chain 7 DOFs: 3 shoulder, 1 elbow, 3 wrist fast analytic solution for given position and orientation - IKAN library 1 DOF remains: parametric solution the parameter is a "swivel angle" Ladislav Kavan

9 IK: Non-linear Optimization
Idea: minimize function E() = f() - x solved by non-linear optimization (programming) Advantages easy to incorporate joint limits add conditions li  i  hi, where li and hi are the limits allows more general goals (planar, half-space, ...) Disadvantages non-linear optimization can give a local minimum (instead of the global one) slow for real-time applications Ladislav Kavan

10 IK: Numerical Solutions
Solve the problem for velocities (small displacements) local approximation of f by linear function - called Jacobian k ... number of joints (DOFs) d ... dimension of goal (end-effector, usually 3-6) Ladislav Kavan

11 IK: Jacobian Methods Typically: d=6 and f = (Px, Py, Pz, Ox, Oy, Oz)
(Px, Py, Pz) ... position (Ox, Oy, Oz) ... scaled rotation axis Then Ji, the i-th column of Jacobian is computed as where i is the axis or rotation of the i-th joint ri is the end-effector vector w.r.t. the i-th joint Ladislav Kavan

12 IK: Jacobian Inversion
Original equation: x = f() Using Jacobian:  x = J()  Jacobian maps small  changes to small x changes Assume the Jacobian can be inverted:  = J()-1x IK algorithm Input: current posture , goal xg, current end-effector position xc Repeat until xc close to xg: x = k(xg - xc) // k ... small constant compute J()-1  =  + J()-1 x xc = f() Ladislav Kavan

13 IK: Jacobian Inversion
Problems with inversion of J(): J() rectangular (square only if k=d) J() singular (rank-defficient) Ad 1) (Moore-Penrose) pseudo-inversion compute from Singular Value Decomposition (SVD) Ad 2) serious problem: configuration  singular Example: fully outstretched kinematic chain near singularity: large velocities & oscilation SVD detects singularity Ladislav Kavan

14 Singular Value Decomposition (SVD)
Theorem: Any real mn matrix M can be written out as M = UDVT, where U ... mn with orthonormal columns D ... nn diagonal (singular values) V ... mm orthonormal Properties: M regular iff D contains no zeroes if Di is D with non-zero elements inverted, then UDiVT is the pseudo-inverse matrix efficient and robust algorithms for SVD exist implemented for example in LAPACK Ladislav Kavan

15 IK: Jacobian Transpose
Idea: force acts on the end-effector and pushes it to the goal configuration Principle of virtual work: work = force  distance, work = torque  angle FTx =T (work = work) x = J() (Jacobian approximation) FT J() =T (putting together) FT J()=T  = J()TF (transposing) Ladislav Kavan

16 IK: Jacobian Transpose
Instead of  = J()-1x use simply  = J()Tx interpret  as , and F as x The algorithm: the same as Jacobian Inverse, just use transpose instead of inversion Comparison with the Jacobian Inverse: (pseudo-)inversion more accurate - less iterations transposition faster to compute transposition: physically based intuitive control (rubber band) Ladislav Kavan

17 IK: Cyclic Coordinate Descent (CCD)
Idea: change only one joint angle i per step others constant: analytical solution possible Input: Pc - current end-effector position Pg - goal end-effector position (u1c, u2c, u3c) - orthonormal matrix: curr. orientation (u1g, u2g, u3g) - orthonormal matrix: goal orientation Objective: minimize Ladislav Kavan

18 IK: Cyclic Coordinate Descent (CCD) IK: Cy
In the i-th step: 1, ..., i-1, i+1..., k constant Minimize E() = E(1, ..., k) only w.r.t. i Pic - current end-effector position w.r.t. joint i Pig - goal end-effector position w.r.t. joint i Pic'(i) - Pic rotated about joint i's axis with angle i Minimization of w.r.t. i equivalent to Maximization of g1(i) = Ladislav Kavan

19 IK: Cyclic Coordinate Descent (CCD)
(u1c'(i), u2c'(i), u3c'(i)) orthonormal matrix of the current orientation rotated by angle i about the i-th joint's axis Minimization of w.r.t. i equiv. to Maximization of Position and rotation together: g(i) = wpg1(i) + wog2(i) wp resp. wo is weight of position resp. orientation goal Ladislav Kavan

20 IK: Cyclic Coordinate Descent (CCD)
The function g(i) can be maximized analytically (complicated formulas, but fast to evaluate) CCD Algorithm: i = 1; Repeat until E() close to zero: compute i giving maximal g(i) i = (i % k) + 1 CCD has no problems with singularities converges well in practice Ladislav Kavan

21 IK: Modern Trends Character animation: joint limits important
First idea: impose limits on individual DOFs (angles) too simple to express real joint range Advanced joint limits quaternion field boundaries: human motion recorded using motion-capture rotations of joint (shoulder) converted to quaternions boundaries expressed on unit quaternion sphere Ladislav Kavan


Download ppt "Skeletal Motion, Inverse Kinematics"

Similar presentations


Ads by Google