3 Quaternion conventions. My choice
3.1 Quaternion flavors
쿼터니언은 다양한 표기법이 존재한다. 일반적으로 다음과 같이 4개의 선택지가 존재한다.
- 실수부와 허수부를 어디에 둘 것인가에 따라
- 쿼터니언 대수학을 어떻게 정의하느냐에 따라
이는 곧 오른손법칙, 왼손법칙과 관련이 있다.
3차원 공간에서 임의의 축
- 회전 연산자로써 기능에 따라
프레임을 회전시키느냐, 벡터를 회전시키느냐 차이가 있다.
- 프레임을 회전시키는 Passive 케이스인 경우, 연산의 방향에 따라서
위 경우의 수만 보더라도 총 12가지의 서로 다른 조합이 나온다. 최근 대표적으로 사용하는 규약(convention)은 Hamilton, STS, JPL, ISS, ESA, 로봇공학회 표기법 정도가 존재한다. 대부분의 규약들은 서로 미세한 차이를 가지고 있으나 자주 정확히 명시하지 않은 상태로 사용된다. 이러한 차이점은 실제 회전연산에 큰 차이를 가져오고 서로 호환이 불가능하기 때문에 어떤 쿼터니언 표기법을 사용하는지 명확한 설명이 필요하다.
가장 유명한 2개의 규약은 Hamilton 표기법과 JPL 표기법이다. JPL 표기법은 항공분야에서 주로 사용되는 반면, Hamilton 표기법은 로보틱스 분야에서 주로 사용된다. 필자는 본 페이퍼에 Hamilton 표기법을 사용하여 쿼터니언을 표기하였다. 이는 로보틱스에서 자주 사용하는 라이브러리인 Eigen, ROS, Ceres에서 채택한 쿼터니언 표기법이고 칼만필터를 이용한 IMU 상태 추정 자료에도 주로 Hamilton 표기법이 사용되기 때문이다. JPL은 Hamilton에 비해 상대적으로 로보틱스 분야에서 적게 사용된다.
3.1.1 Order of the quaternion components
Hamilton과 JPL의 가장 근본적인 차이는 아니지만 확연히 구분 가능한 차이는 쿼터니언 원소를 표기하는 순서이다. Hamilton은 스칼라 파트를 앞에 위치시키고 JPL은 뒤에 위치시킨다. 이러한 스칼라, 벡터의 표현 순서 차이는 명확히 구분 가능하나 해석의 어려움을 줄 정도로 큰 차이는 아니다. 예를 들어 Hamilton 표기법을 따르는 Eigen 라이브러리 또한 쿼터니언의 실수부를 맨 뒤에 위치시키는 경우가 존재한다. 일반적으로 쿼터니언
3.1.2 Specification of the quaternion algebra
Hamilton 표기법의 쿼터니언 대수 규칙은 다음과 같다. (
반면에, JPL 표기법의 쿼터니언 대수 규칙은 다음과 같다. (
흥미롭게도 이러한 작은 부호의 변화는 실제 회전 연산에서 근본적인 변화를 야기한다. 수학적으로 부호의 차이는 외적 결과의 차이이므로 Hamilton은 왼손법칙을 사용하고 JPL은 오른손법칙을 사용해서 외적을 해석하는 것으로 볼 수 있다. 왼손법칙 회전을 수행하는 쿼터니언을
3.1.3 Function of the rotating operator
지금까지 설명했던 쿼터니언의 회전은 3차원 공간의 벡터를 회전시키는 것이었다. (Shuster, 1993)에서는 이를 active 회전 연산이라고 해석한다.
다른 회전의 관점으로 벡터는 가만이 있으나 기존의
이 때,
passive와 active는 다음과 같은 역함수 관계가 성립한다.
Hamilton과 JPL 모두 동일한 passive 연산 규약을 따른다.
Direction cosine matrix passive 연산자는 종종 회전 연산자(rotation operator)로 보지 않고 방향에 대한 표기법(orientation specification)으로 보는 시각 또한 존재한다. 이를 direction cosine matrix라고 한다.
3.1.4 Direction of the rotation operator
passive 회전 연산에서 쿼터니언 곱의 방향에 따라 local to global 변환인지, global to local 변환인지 달라지게 된다.
반대의 변환은 다음과 같다.
이 때, 다음이 성립한다.
Hamilton은 local-to-global을 기본 회전 연산으로 사용한다.
반면에 JPL은 global-to-local 규약을 사용한다.
따라서 다음이 성립한다.
위 식은 특별히 유용한 식은 아니지만 두 표현 규약이 얼마나 혼동되어 사용될 수 있는지 보여준다. 결론적으로
4 Perturbations, derivatives and integrals
4.1 The additive and subtractive operators in SO(3)
n차원 벡터 공간
The plus operator. 덧셈 연산자는
이러한 연산은 다양한 SO(3) 표기법에 대해 적용될 수 있다. 쿼터니언과 회전행렬에 대한 표기법은 다음과 같다.
The minus operator. 뺄셈 연산자는
위 두 연산자를 사용할 때 벡터
4.2 The four possible derivative definitions
4.2.1 Functions from vector space to vector space
벡터 공간에서 함수
오일러 적분은 다음과 같이 선형적인 형태로 정의할 수 있다.
4.2.2 Functions from SO(3) to SO(3)
함수
오일러 적분은 다음과 같이 정의할 수 있다.
4.2.3 Functions from vector space to SO(3)
함수
오일러 적분은 다음과 같이 정의할 수 있다.
4.2.4 Functions from SO(3) to vector space
함수
오일러 적분은 다음과 같이 정의할 수 있다.
4.3 Useful, and very useful, Jacobians of the rotation
3차원 공간에서 임의의 벡터
4.3.1 Jacobian with respect to the vector
벡터
4.3.2 Jacobian with respect to the quaternion
이와 대조적으로, 벡터
위 유도를 통해
따라서 자코비안은 다음과 같이 구할 수 있다.
4.3.3 Right Jacobian of SO(3)
임의의 회전행렬
이는 다음과 같이 나타낼 수 있다.
또한, 다음과 같이 나타낼 수 있다.
파라미터 공간에서 미세 변화량
이는

오른 자코비안은 다음과 같이 정의된다.
이는 회전 연산자 표기법과 독립적으로 정의할 수 있다. (
오른 자코비안의 역함수는 다음과 같이 closed form으로 계산할 수 있다. (Chirikjian, 2012, paper 40).
추가적으로 SO(3)의 오른 자코비안은 미세 변화량
4.3.4 Jacobian with respect to the rotation vector
임의의 회전벡터
이 때,
4.3.5 Jacobians of the rotation composition
SO(3)군의 합성
접평면에서 미세 변화량
4.4 Perturbations, uncertainties, noise
4.4.1 Local perturbations
섭동 쿼터니언 (perturbed quaternion)
또한, 로컬 섭동
위 식을 로컬 섭동을 기준으로 정리하면 다음과 같다.
만약
작은 회전량
4.4.2 Global perturbations
다음으로 전역적으로 정의된(globally-defined) 섭동을 생각해볼 수 있다. Hamilton 표기법에서 기존 원소 왼쪽에 곱함으로써 나타낼 수 있다.
전역 섭동은 다음과 같이 나타낼 수 있다.
4.5 Time derivatives
회전의 로컬 섭동(local perturbations)을 벡터로 표현함으로써 이에 대한 시간미분을 쉽게 계산할 수 있는 이점이 있다. 시간에 따른 쿼터니언 함수를
또한, 로컬 각속도
이 때,
쿼터니언의 시간 미분은 다음과 같이 유도할 수 있다.
표기의 편의를 위해 다음과 같이 정의한다.
최종적으로 (
이는 (
(
이 때,
4.5.1 Global-to-local relations
전역 미분값과 지역(=로컬) 미분값의 관계는 다음과 같다.
이를 정리하면 다음과 같다.
충분히 작은 시간 변화량
이는 각속도 벡터
4.5.2 Time-derivative of the quaternion product
회전 곱셈 연산자에 대한 시간 미분은 다음과 같다.
회전의 곱셈 연산자는 교환법칙이 성립하지 않기 때문에, 순서를 엄격하게 지켜서 표기해야 한다. 이는 즉,
4.5.3 Other useful expressions with the derivatives
로컬 회전에 대한 미분을 정리하면
전역 회전에 대한 미분을 정리하면
4.6 Time-integration of rotation rates
시간에 따른 쿼터니언 회전 변화는 이전 섹션에서 유도했던 (
실제 센서 데이터는 이산시간(discrete time) 입력으로 들어오기 때문에 위 식을 바로 사용할 수 없다. 따라서 여러 가지 수치적분 방법들이 개발되었는데 본 문서에서는 0차, 1차 수치적분(zeroth, first order integration) 방법에 대해서 설명한다. 두 방법은 모두
쿼터니언 미분 값은 (
위 식은 표기의 편의 상


4.6.1 Zeroth order integration
Forward integration 각속도
위 식에서 뒷 부분은
따라서 다음 식이 유도된다.
Backward integration
위 방법은 마지막으로 측정된 각속도
Midward integration 각속도
이를 통해 다음 식을 구할 수 있다.
4.6.2 First order integration
1차 수치적분은 각속도
이를 사용하여 중간값
또한 각속도의 지수승
이를 쿼터니언 테일러 급수 식에 넣고 정리하면 다음과 같다. 식이 복잡하므로
위 식에서 첫번째 줄은
위 식은 (Trawny and Roumelotis, 2005)의 결과와 동일하지만 Hamilton 쿼터니언 표기법을 사용하는점이 다르다. 최종적으로
위 식에서 앞에 있는 항은 midward 1차 수치적분과 동일한 형태 (
Case of fixed rotation axis 회전축
또한, 회전축이 고정되어 있으면 미세 변화량에 대해 쿼터니언의 교환법칙이 성립한다.
또한 다음 공식이 성립한다.
이 때,
Case of varying rotation axis 회전축이 고정되어 있지 않다면
실제 활용 예시에서, 0차 수치적분은 단위 쿼터니언(unit quaternion)을 유지하는 반면에 1차 수치적분은 앞서 말한 2차항의 값으로 인해 단위 쿼터니언 제약조건이 꺠질 수 있다. 따라서 1차 수치적분을 사용한다면 주기적으로 단위 쿼터니언 제약조건을 업데이트 해야 한다 (
References
[1] Sola, Joan. "Quaternion kinematics for the error-state Kalman filter." arXiv preprint arXiv:1711.02508 (2017).
'Fundamental' 카테고리의 다른 글
Quaternion kinematics for the error-state Kalman filter 내용 정리 Part 3 (8) | 2022.10.10 |
---|---|
[SLAM] 파티클 필터(Particle Filter) 개념 정리 (1) | 2022.10.07 |
Quaternion kinematics for the error-state Kalman filter 내용 정리 Part 1 (8) | 2022.08.27 |
칼만 필터(Kalman Filter) 개념 정리 (+ KF, EKF, ESKF, IEKF, IESKF) Part 1 (15) | 2022.06.18 |
선형대수학 (Linear Algebra) 개념 정리 Part 2 (1) | 2022.06.18 |