Body Kinematics
Body Kinematics
Motion Capture
Joints, Bowel
Kinematics
Kinematics motion of the body with respect to time
- Position
- velocity
- acceleration
Skeleton
skeleton=tree like data structures representing a hierarchy of joints
joint hierarchy
Joints
Joints: local rotating frame of reference
where
- i=joint index
- i=Parent of joint j
- =bone(link) between joint j and joint i
Each joint node contains data
- Angle/quaternions
- bone length
- Pointers(links) to parent joint
- Pointers(links) to child joints
- Local transform
- global transform
- other data
- moment of in
- Joint limits
- presents (bind pose)
Each joint a Frame of ref
local frame of ref
j is the parent of joint j
global transform, now joint j is positioned and oriented w.s.t. world
To find the position and orientation of any joint in the skeleton wal the kinematic chain from woot to that joint
position of joint 4 w.r.t world
,
Body state vector
is an (m x 1) vector of end joint positions
is an (n x 1) body joint vector of the form,
Combines positions and orientations of all the joints
most general case for joint j
6 dofs
want to know position of joint 3 in the world
position of joints
velocity
jacobian matrix
Leg example
quiz:给一个chain,让求一个p的坐标
下次课讲如何计算任意一个chain的J
Shape animation
Forward Kinematic (FK)
Notations
where a set of homo trans
position:
velocity:
Angular velocity:
where =axis, =spin rate
Euler Angle rate:
where
only if axis is one of the x-y-z axis, they are the same
Euler Angle rates to angular velocity conversion
Inverse Kinematic (IK)
Notations
almost impossible to compute amony
Very difficult to compute, analytically
Ideally,
Integrate things
Spin 1
if joint 2, 3 is fixed, joint 1 spin at , then:
where
Spin 2
if joint 3 is fixed, joint 1 spin at , then:
where
total:
rewrite:
where
Euler Angle rates to angular velocity conversion
Jacobian Matrix (J) Calculation
N is the number of joint
where
Pseudo Inverse
IK want to compute , can only normally do this if J is square
given , desired velocity of the end joint
2 types of "pseudo" inverse
left => more DOF in x
right => more DOF in y
让方阵是比较小的那个纬度
left pseudo
When: m>n
right pseudo
most likely
When: m<n
choose
choose
Discrete time, k = frame#
Backward differences
Leg example:
Know
Want
What is
Joint velocity spance, dim n
end Joint velocity spance, dim m
often interested in values of that produce
trivial case:
When , it is possible that When
null space
IK solver
choose , null space
c is arbitrary vector at dim same dim as
spring-like behavior for joints
desired joint angles
actual joint angles
IK solver
Choose
primary constraint, secondary constraint
some times there are problems with inversion of J, when loss of 2 degree of freedom
In this case use a "damped pseudo inverse"
Normally
Damped
with , I is identity matrix
Limb-Based Approach
Main idea
law of Cosine
dot product
cross product
Joint 3 orientation
Steps
Compute only to get distance between joint 1 and joint 3 equal to
Compute quaternion at joint 1 to rotate so it points at
Joint 3 Orientation (optional)
if indicate
Coordinate Cyclic Descent (CCD)
Main Concept: If rotate joint 1 by angle get end joint 2 as close as possible to pd
motion capture
Create a kinematic chain of joints of length n ( j = 1 to n )
- Start with the second to last joint in the chain (i.e. j = n-1)
- Compute error between end joint ( ) and goal ( )
- Compute and for joint
- Compute and for joint
- Scale joint rotation
- Compute
- Update after setting joint j rotation to
- Update