220726) 사원수(Quaternion), 오일러회전(Yaw,Pitch,Roll), 짐벌락(gimbal lock)
사원수(Quaternion)
a+bi+cj+dk 형태의 수(a,b,c,d는 실수)이다.
다음과 같은 성질을 만족시킨다.
※ 사원수의 곱셈은 교환법칙을 만족시키지 않는다.
어떤 물체의 자세를 기준좌표계에 대하여 표현할 때, 단위벡터 (e1,e2,e3)에 대하여 θ만큼 회전한 자세는 사원수로 다음과 같이 표현한다.
오일러각도와 YawPitchRoll
1. 오일러 각도를 통한 회전(post-multiplication, 행렬을 뒤에 곱하는 방법)
2. YawPitchRoll을 통한 회전(pre-multiplication, 행렬을 앞에 곱하는 방법)
-----
오일러 각도
강체의 자세를 좌표축의 회전으로 표현하는 여러 방법 가운데 하나로, 3x3 회전행렬을 직관적으로 이해하고 행렬의 원소를 단 3개의 Parameter로 간략하게 표현하기 위해 사용하는 방법이다.
-----
Yaw, Pitch, Roll
강체의 자세를 '고정된' 회전축을 기준으로 회전을 표현하는 방법이다.
Pitch: y축을 기준으로 회전한 각도
Yaw: z축을 기준으로 회전한 각도
이를 행렬으로 표현하면 다음과 같다.
짐벌락 현상(Gimbal lock)
1. x축, y축, z축 각각의 회전행렬을 만든다.
yaw(y축 회전각) pitch(x축), roll(z축)
2. 회전 행렬을 객체의 변환행렬과 각각 순서대(x, y, z)로 곱한다.(오일러각)
3. x축을 90도 틀고난 후 y축으로 90도 튼것과
y축을 90도 틀고난 후 z축으로 90도 튼것과의 회전 값이 같다.
4. 세 개의 축 각을 이용하여 항상 순서대로 회전을 하면 위와같이 한 개의 축이
쓸모 없게 된다. 이 현상이 짐벌락이다.
이 문제는 계산을 한 번에 하지 않아서(세 번으로 나누어서)이다.
쿼터니온을 쓰면 한 번에 계산되어 문제가 해결된다.
즉 짐벌락현상을 없애기 위해서 사원수를 쓰는것이다.