Numerical Solution of Inverse Kinematics
1. Introduction
1-1. Notations
- IK : Target position에 end effector가 닿기
- Joint angles
- θj
- column vector θ=(θ1,...,θn)T
- end effector positions
- s1,s2,...,sk
- column vector (s1,s2,...,sk)T:s
- target positions
- ti -> i-th end effecor's target position
- column vector (t1,t2,..,tk)T
- desired change
- ei=ti−si
- FK
- s=f(θ)
- IK
- sd:θ=f−1(sd)
1-2. Introduction
- 위에서 언급한 function f는 non-linear 하고 풀기 어렵다.
- IK를 풀기 위해선 Kinetic Angular variables 알아야 합니다..
1-3. Kinetic Angular Variables
Angular Velocity in 2D
- 곡선위를 움직이는 particle의 위치를 표현하는 방법
- Cartesian coordinate (using angle theta)
- x=Rcosθ,y=Rsinθ
- Kinetic Angular Variables
- captured by the concept of the angular velocity
- ω=limΔt→0ΔtΔθ=dtdθ
- θ(t)=θi+ω(t−ti)
- Δθ=ωΔt
- angular acceleration
- α=limΔt→0ΔtΔω=dtdω
- ω(t)=ωi+α(t−ti), Δω=αΔt
- θ(t)=θi+ω(t−ti)+21α(t−ti)2, Δθ=ωiΔt+21α(Δt)2
- arc
- s=R∣Δθ∣
- 매우 작은 변위에서.. s≅∣Δr∣
- s=R∣Δθ∣ 를 Δt로 나누면
- 순간 속도 (각도와 속도간의 거리를 알 수 있다)
- v:∣v∣=∣limΔt→0Δts∣=R∣ω∣
- Angular Velocity in 2D
- Polar coordinates (r,ϕ) 예시
- 원점 O에서 P까지의 거리 r
- p에서 가해지는 힘(캐릭터를 움직이는 힘 v) 벡터 분해
- v⊥, v∥
- 각속도 w=dtdϕ=rv⊥=rvsin(θ) -> v⊥=rω 이므로
Angular Velocity in 3D
- 3d에서는 rotation angle이 axis angle로 표현된다.
- unity vector : 회전축 u
- 축 주위의 회전 크기를 설명하는 각도 : θ
- orbital angular velocity vector (3차원)
- ω=ω2du=dtdθu=rvsin(θ)u
-> ω=dtdθ, v⊥=rω 사용
-> w2d : 2차원 각속도
- ω=rvsin(θ)u=rrrvsin(θ)u=r2r×v
Angular Momentum & Moment of inertia
- Angular Momentum
- 물체의 회전 운동을 위해 존재
- Linear momentum (참고)
- linear momentum :p
- mass : m
- linear speed : v
-> p=mv
- Angular momentum
- angular momentum : L
- inertia : I
- angular speed : ω
-> L=Iω
- Moment of inertia
- 물체의 운동 변화에 대한 제한을 나타낸다.
- 회전축 주변의 질량 분포에 의존
- mr2
2. Basic Math
2-1. Gradient
- 한 점에서 가장 maximum으로 가는 방향을 나타낸다.
- notation
- 함수에 대한 1차 편미분 형태
- ∇f=(∂x∂f,∂y∂f,...)
2-2. Hessian
- local curvature 을 나타낸다.
- 계산
- 제한 조건
- f의 2차 미분 형태가 존재해야함
- 함수의 domain에서 연속이어야 함
-> f의 Hessian은 n x n matrix이다.
- 특징
- 대칭 행렬
- Jacobian 과의 관계 : H(f(x))=J(∇f(x))
3. Jacobian Inverse Methods
3-1. Jacobian Problems
- Jacobian은 IK 문제를 푸는 linear approximation 방식이다.
- 이때 Δt가 매우 작으면 J가 f와 같아질 것이라고 생각하기
- 이렇게 근사치로 계산하는 경우 J를 매 t 마다 구해야 하므로 느리다.
- J(θ)ij=(∂θj∂si)ij
- j-th joint가 1 DoF의 rotational joint 인 경우 (간소화 하기)
- ω2d=∂θj∂si=vj×(si−pj)
- s는 end effector위치
- p는 joint 위치
- v는 회전축의 unit vector
3-2. Jacobian으로 IK 풀기
- 우리가 구하고 싶은 것 : s=f(θ)
- 미분 하면...
- dttds=J(θ)dttdθ -> J(θ)=dθds
- 구하려고 하는 것이 end effector가 가야하는 곳
-> end effector가 desired change in position 이어야 한다.
-> e=JΔθ
-> Δθ=J−1e
3-3. Jacobian Pseudo-inverse
- Δθ=J−1e 식의 문제점
- J 의 det가 없는 경우..
- not be square
- invertible
-> desired position에 닿지 못함
- 해결책
- Jacobian Psudo-inverse (Moore-Penrose inverse)
- 대략적으로 invertible 한 것 찾기
- notation : J†
- e=JΔθ 를 푸는데 Least Square 형식의 가장 좋은 해결책!!
3-4. Pseudo-inverse
- 우리가 풀어야 하는 문제는... e=JΔθ
- (I−J†J)
- J(I−J†J)φ
-> Δθ=J†e+(I−J†J)φ
-> J†e : for IK
-> (I−J†J)φ : pseudo inverse error
3-5. Pseudo-inverse approaches
- Analytical Jacobian Method
- Moore-Penrose Method
- Jacobian Transpose Method
- Damped Least Square Method
- SVD Method