AHRS Quaternions and Rotations
Quaternions
Quaternion은 사원수 또는 쿼터니언이라고 부르며, 복소수를 확장해 만든 수 체계입니다.
i2=j2=k2=ijk=−1q=xi+yj+zk+wq=[xyzw]T
Norm
q=x2+y2+z2+w2
Conjugate quaternion
qˉ=−xi−yj−zk+w
pq=qˉpˉ
Pure quaternion
q=[xyz0]T
Identity quaternion
I=[0001]T
Inverse quaternion
q−1=∣∣q∣∣2qˉ(q−1=qˉif ||q|| = 1)
Hamilton product
pq=L(p)q=R(q)p=pwpz−py−px−pzpwpx−pypy−pxpw−pzpxpypzpwqxqyqzqw=qw−qzqy−qxqzqw−qx−qy−qyqxqw−qzqxqyqzqwpxpypzpw
Rotations
Rotate Vector
a(∣∣a∣∣=1)를 기준으로 벡터를 θ만큼 회전시키는 데 필요한 쿼터니언은 아래와 같습니다.
q(a,θ)=[asin(2θ)cos(2θ)]T
벡터와 쿼터니언 연산 시 벡터는 pure quaternioin으로 나타낼 수 있습니다.
v=vxi+vyj+vzk
v=[vxvyvz0]
a(∣∣a∣∣=1)를 기준으로 v를 θ만큼 회전시킨 v′를 구하는 식은 아래와 같습니다.
v′v′=qvqˉ=R(qˉ)L(q)v=1−2(qy2+qz2)2(qxqy+qzqw)2(qxqz−qyqw)02(qxqy−qzqw)1−2(qx2+qz2)2(qyqz+qxqw)02(qxqz+qyqw)2(qyqz−qxqw)1−2(qx2+qy2)00001vxvyvz0
연속적인 회전은 아래와 같이 구할 수 있습니다.
v1v2v3⋮===q01v0qˉ01q12v1qˉ12q23v2qˉ23⋮==q12q01v0qˉ01qˉ12q23q12q01v0qˉ01qˉ12qˉ23⋮
vk=qk−1kqk−2k−1⋯q01v0qˉ01⋯qˉk−2k−1qˉk−1k
q0k=qk−1kqk−2k−1⋯q01
Rotate Frame
처음에 A와 B 좌표계는 동일했다가 B 좌표계가