개념에서 수식으로
먼저 이해할 내용
자세 계산은 쿼터니언으로 수행하더라도 결과를 Roll·Pitch·Yaw로 읽고 싶을 수 있다. 이 글에서는 쿼터니언을 회전행렬 성분에 연결한 뒤, 그 성분에서 세 각도를 구하는 과정을 다룬다.
기호를 먼저 읽기
- q₁ … q₄
- 입력 쿼터니언의 네 성분
- φ, θ, ψ
- 출력할 세 회전각
- ArcTan[x,y]
- 원문의 두 인수 아크탄젠트
- ArcSin[·]
- 사인 값에서 각도를 읽는 역함수
이 글의 흐름
먼저 원문의 ArcTan 인수 정의를 확인한다. 각도식에 들어가는 행렬 성분을 찾고, 그 자리에 쿼터니언 성분식을 넣은 관계를 읽는다.
역삼각함수의 입력을 먼저 확인한다
원문은 ArcTan[x,y]를 y/x의 각도로 설명한다. 따라서 첫 인수와 둘째 인수의 역할을 읽은 뒤 코드의 함수 인수 순서와 맞춘다. 분수 y/x만 계산하면 두 값의 부호 조합을 잃을 수 있으므로, 두 인수 표기의 의미를 유지한다.
주제와 표기
Quaternion →Rotation Matri→Euler Angle (Roll φ , Pitch θ , Yaw ψ , ZYX)
각도에 필요한 행렬 성분을 q로 바꾼다
Roll은 r₃₃과 r₃₂, Pitch는 r₃₁, Yaw는 r₁₁과 r₂₁의 관계로 읽는다. 다음 등호 뒤의 q 성분식은 같은 값을 쿼터니언으로 표현한 것이다. q₁² 등의 제곱항과 서로 다른 성분의 곱을 구분해 계산한다.
반대 방향의 좌표 표기를 혼용하지 않는다
뒤에서는 좌표계 첨자가 다른 형태의 식을 다시 제시한다. 이를 별도의 확인 구간으로 읽고, 앞의 행렬과 무조건 같은 방향의 변환이라고 가정하지 않는다. 세 각도를 하나의 결과로 사용할 때에는 같은 좌표계 규약에서 계산한 값끼리 묶는다.
수식을 불러오지 못했습니다.
정리하면
각도 복원에는 수식뿐 아니라 각도 구간의 선택이 필요하다. 좌표계가 바뀌거나 인수 순서를 뒤집으면 같은 숫자도 다른 자세로 해석될 수 있다.