본 포스트는 Joan Solà의 "Quaternion kinematics for the error-state Kalam filter (2017)" 페이퍼를 정리한 포스트이다. 이는 Quaternion과 SO(3) 군, Error-state Kalman filter 모델링에 대해 자세히 나와있어서 SLAM을 공부할 때 이론적인 부분을 참고하면 좋은 페이퍼이다.
1 Quaternion Definition and properties
1.1 Definition of quaternion
두 개의 복소수
이 때,
이는 다음과 같은 성질을 만족한다.
임의의 쿼터니언
또한 실수가 0일 때도 쿼터니언을 만족해야 하는데 이때는 특별히 복소수
쿼터니언을 표기하는데는 다양한 방법들이 존재한다. 본 페이지에서 설명하는 쿼터니언은
1.1.1 Alternative representations of the quaternion
쿼터니언은 앞서 설명한 실수부+허수부로 표기할 수 있을 뿐만 아니라 스칼라+벡터로도 표기할 수 있다.
여기서
가장 자주 사용되는 표기법은 다음과 같이 벡터로 표기하는 법이다.
이와 같은 표기법은 쿼터니언과 관련된 대수 연산을 사용할 수 있도록 해준다.
1.2 Main quaternion properties
1.2.1 Sum
두 쿼터니언의 덧셈은 다음과 같이 정의한다.
쿼터니언의 덧셈 연산은 교환법칙과 결합법칙을 만족한다
1.2.2 Product
Hamilton Quaternion의 곱은
이를 스칼라와 벡터 표기로 다시 나타내면 다음과 같다.
위 연산에는 cross product가 포함되어 있으므로 쿼터니언의 곱셈은 교환법칙이 성립하지 않는다.
하지만 만약
그리고 덧셈에 대한 분배법칙이 성립한다.
두 쿼터니언의 곱은 다음과 같이 행렬곱으로도 나타낼 수 있다.
이 때,
또한, (
여기서
또한 반대칭행은
따라서 임의의 3개의 쿼터니언
이는 곧 아래 공식이 성립하는 것을 의미한다.
1.2.3 Identity
항등 쿼터니언(identity quaternion)
1.2.4 Conjugate
쿼터니언의 켤레복소수는 다음과 같이 정의된다.
이는 다음과 같은 성질을 갖는다.
1.2.5 Norm
쿼터니언의 놈은 다음과 같이 정의된다.
이는 다음과 같은 성질을 갖는다.
1.2.6 Inverse
쿼터니언의 역은
1.2.7 Unit or normalized quaternion
단위 쿼터니언은
단위 쿼터니언은 3차원 공간에서 물체의 방향을 표현하거나 회전을 수행하는 연산자로써 사용된다. 위 성질은 역방향 회전이 기존 벡터에 켤레복소수 쿼터니언을 곱함으로써 얻어질 수 있다는 것을 의미한다. 단위 쿼터니언은 항상 다음과 같이 표현될 수 있다.
이 때,
1.3 Additional quaternion properties
1.3.1 Quaternion commutator
쿼터니언 교환자(commutator는
이는 곧 다음과 같다.
해당 성질은 특정 공식의 유도과정에서 종종 사용된다.
1.3.2 Product of pure quaternions
순수 쿼터니언은
동일한 순수 쿼터니언의 곱셈에 대해서는 다음과 같다.
또한 pure unitary quaternion
이는 허수의 곱셈
1.3.3 Natural powers of pure quaternions
임의의 자연수
그리고
1.3.4 Exponential of pure quaternions
쿼터니언의 exponential은 다음과 같이 나타낼 수 있다.
실수부만 존재하는 쿼터니언의 경우 이에 대한 exponential은 일반적인 exponential과 동일하다. 순수 쿼터니언
이 때,
이는
이는 오일러 공식
매우 작은 각도에 대한 쿼터니언은
1.3.5 Exponential of general quaternions
쿼터니언의 곱셈은 교환법칙을 만족하지 않으므로 일반적인 쿼터니언
이를 (
1.3.6 Logarithm of unit quaternions
단위 쿼터니언은
따라서 단위 쿼터니언(unit quaternion)의
매우 작은 각도에 대한 쿼터니언은 0으로 나뉘어지는 것을 방지하기 위해
1.3.7 Logarithm of general quaternions
만약
1.3.8 Exponential forms of the type
임의의 쿼터니언
만약
2 Rotations and cross-relations
2.1 The 3D vector rotation formula

위 그림은 오른손법칙을 사용하여 3차원 공간 상의 임의의 벡터
두 벡터는 다음과 같이 계산할 수 있다. 이 때,
회전이 수행되는 동안
그리고
두 basis는
이는 다음과 같이 전개해서 나타낼 수 있다.
따라서 최종적으로 회전한 벡터
2.2 The rotation group SO(3)
3차원 공간에서 SO(3) 군은 원점을 중심으로 회전하는 연산에 대한 군을 말한다. 회전은 벡터의 길이와 상대벡터의 방향을 보존하는 선형 변환 연산이다. 이는 로보틱스에서 강체(rigid body)의 움직임 중 회전을 표현하는데 주로 사용된다. 강체의 움직임이란 물체의 형태가 변화하지 않아서 각도, 상대적인 회전량(relative orientation), 거리 등이 보존되는 움직임을 의미한다.
유클리디언 공간에서
- 회전은 벡터의 놈을 보존한다.
- 회전은 두 벡터에 대한 각도를 보존한다.
- 회전은 두 벡터의 상대 회전량(relative orientation)을 보존한다.
위 성질을 토대로 SO(3) 군을 다음과 같이 정의할 수 있다.
SO(3) 군은 일반적으로 회전행렬(rotation matrix)를 사용하여 표기한다. 하지만 쿼터니안을 사용하여 SO(3)를 표기하는 방법 또한 널리 사용된다. 본 챕터에서는 두 표기법이 동일하다는 것을 증명한다. 두 표기법은 개념적으로나 대수적으로 많은 부분에서 유사하다.
2.2 The rotation group and the rotation matrix
회전연산자
내적
이를 통해 회전행렬의 직교하는 성질을 유도할 수 있다.
회전행렬
이에 따라 3차원 공간에서 변환 시 벡터의 놈과 각도를 보존하는 군을 Orthogonal 군이라고 하며 줄여서 O(3)라고 표현한다. Orthogonal 군은 강체의 변환일 때 회전과 비강체의 변환일 때 반사(reflection)로 구성되어 있다. 여기서 군이라는 표현을 사용하는 이유는 두 개의 직교하는 O(3) 행렬을 곱하면 언제나 직교하는 O(3) 행렬이 나오기 때문이다. 즉, 곱셈에 대해 닫혀있다. 이는 역행렬 또한 직교행렬의 성질을 만족하는 것을 의미한다. 따라서 (
그리고 강체의 움직임에 한해서 상대적인 회전량을 보존하는 성질 (
Orthogonal 군에서 특별히 위와같이 positive unit determinant를 만족하는 군을 Speical Orthonogal 군, 즉 SO(3)군이라고 한다. 군의 성질을 만족해야 하므로 임의의 두 SO(3) 회전행렬의 곱은 항상 SO(3) 회전행렬이 된다.
2.3.1 The exponential map
Exponential map(+Logarithm map)은 3차원 공간의 회전을 조금 더 편하게 쉽게 이해 및 응용할 수 있게 해주는 강력한 수학적 도구이다. 이는 미세한 변화량에 대한 미적분(infinitesimal calculus)과 3차원 회전을 연결시켜주는 고리 역할을 수행한다. 또한, 3차원 회전에 대한 자코비안을 정의하거나, 섭동(perturbation) 모델링을 정의하거나 속도를 정의하고 사용할 수 있도록 해주는 핵심적인 역할을 수행한다. 따라서 3차원 공간에서 회전에 대한 추정 문제를 사용할 때 필수적으로 사용된다.
회전은 강체 움직임(rigid motion)의 성질을 만족한다. 이 때, 강체 움직임의 성질이란 처음

앞서 SO(3)의 제약조건 중 (
위 식을 정리하면 다음과 같은 공식을 얻을 수 있다.
이는
반대칭행렬은 3자유도를 가지며 (
위 식은 다음과 같이 일반미분방정식(ordinary differential equation, ODE) 형태를 가진다.
원점 부근에서
만약 각속도
exponential
이는
2.3.2 The capitalized exponential map
앞서 소개한 exponential map은 종종 표기법에서 혼란을 일으킨다. 이는 주로
두 연산자 exp, Exp 사이에는 다음과 같은 관계가 성립한다.
다음 섹션에서는 벡터
2.3.3 Rotation matrix and rotation vector: the Rodrigues rotation formula
회전행렬
따라서 모든
따라서
이는
2.3.4 The logarithm maps
exponential map의 역연산으로 logarithm map을 정의할 수 있다.
이 때,
와 같으며
소문자 연산자와 대문자 연산자 사이에는 다음과 같은 성질을 만족한다.
지금까지 설명한 대소문자 exponential, logarithm map을 그림으로 표현하면 다음과 같다.

2.3.5 The rotation action
3차원 공간에서 임의의 벡터
이 때,
이는 정확히 벡터의 회전 공식 (
2.4 The rotation group and the quaternion
본 섹션에서는 SO(3)의 표기법으로 쿼터니언을 사용하는 방법에 대해 설명한다. 또한, 쿼터니언과 회전행렬이 어떠한 연관성이 있는지 설명한다. 쿼터니언이 벡터를 회전하는 연산은 다음과 같이 나타낼 수 있다.
또한, 이를 통해 제약조건 (
이를 통해
이는 회전행렬의 직교성질인
위 전개를 통해 단위 쿼터니언은 곱셈 연산에 대해 닫힌 연산을 수행하는 군을 형성하는 것을 알 수 있다. 단위 쿼터니언 군의 manifold는 기하학적으로

2.4.1 The exponential map
임의의 단위 쿼터니언이
이를 전개하면 다음과 같다.
이는 곧
이를 정리하면 다음과 같다.
원점 부근에서

단위 쿼터니언의 경우 회전행렬과 달리 접평면이 velocity space를 의미하지 않고 half-velocity space를 의미한다. 이에 대해서는 뒷 섹션에서 자세히 설명한다. 만약
위 식에서
와 같이 나타낼 수 있다. 이는 회전행렬과 마찬가지로 순수 쿼터니언(pure quaterinon)에 exponential map을 취하면 단위 쿼터니언(unit quaternion)을 만들 수 있음을 의미한다.
2.4.2 The capitalized exponential map
exponential map에 사용되는 순수 쿼터니언
쿼터니언과 angle-axis 표현법
대문자와 소문자 exponential map 사이의 관계는 다음과 같다.
임의의 각속도를
2.4.3 Quaternion and rotation vector
임의의 angle-axis 벡터
위 식은 주로 angle-axis 표현법에서 쿼터니언으로 변환하는 공식으로 사용되며
2.4.4 The logarithmic maps
단위 쿼터니언 또한 회전행렬과 마찬가지로 exponential map에 대한 역연산인 logarithmic map이 존재한다.
또한 대문자 logratihmic map 역시 존재한다. 이는 임의의 쿼터니언을 3차원 벡터로 변환하는 연산이다.
두 연산 사이에는 다음과 같은 관계가 성립한다.
매우 작은 움직임을 표현하는 쿼터니언에 대해서는 위 식과 같이
2.4.5 The rotation action
앞서 설명한 내용과 같이 3차원 공간에서 임의의 벡터
이 때,
2번의 쿼터니언 곱이 벡터의 회전을 수행하는 것을 증명하기 위해서 (
위 전개를 통해 쿼터니언 연산이 벡터의 회전 공식과 동일하다는 것을 알 수 있다.
2.4.6 The double cover of the manifold of SO(3)
임의의 단위 쿼터니언
또한, 3차원 물체가
위 두 식을 종합해보면

만약
2.5 Rotation matrix and quaternion
임의의 angle-axis 벡터
이는 곧 다음 공식이 성립함을 의미한다.
위 두 식은 모두
위 변환식은
이를 통해 다음과 같이 다른 변환 공식을 유도할 수 있다.
회전행렬과 단위 쿼터니언 사이에는 다음과 같은 성질이 만족한다.
위 성질들을 토대로 쿼터니언의 지수승은 다음과 같이 변환된다.
이는 스칼라
2.6 Rotation composition
단위 쿼터니언의 합성(composition)은 회전함수의 합성과 유사하다. 즉, 동일한 순서로 곱셈을 수행한다.
이는 결합법칙을 사용하여 다음과 같이 나타낼 수 있다.

이 때,
2.7 Spherical linear interpolation (SLERP)
단위 쿼터니언은 두 방향(orientation)
Method 1 첫 번째 방법은 쿼터니언 대수학을 이용하는 것이다. 방향의 변화량
위 변화량에 logarithmic map을 사용하여 angle-axis 회전벡터
최종적으로
이를 자세히 풀어쓰면
이는 (

Note: 위 식을 회전행렬에 대한 식으로 변경하면 다음과 같다.
Method 2 다른 구의 선형보간 방법은 쿼터니언 대수학을 사용하거나 manifold에 종속되지 않는 방법이다. 위 그림에서 보면
첫 번째 접근 방법은 두 단위벡터
다음으로

따라서
따라서 보간함수
Method 3 이와 유사한 방법으로 Glenn Davis in Shoemake (1985)가 제안한 방법이 있다. 이 방법은
위 식을
이는 위 공식과
앞서 소개한 모든 쿼터니언 기반의 구의 선형보간 방법들(SLERPs)들은 보간하는 실제 회전각도가

2.8 Quaternion and isoclinic rotations: explaining the magic
본 섹션에서는 다음 두 질문에 대한 답변을 제시한다. Joan Solà는 이를 마법(magic)이라고 부른다.
- 왜
연산이 벡터 를 회전하는 공식이 되는가? - 왜 쿼터니언을 생성할 때 회전하고자 하는 각도의 절반의 각도를 입력해야 하는가?
위 질문에 답을 하기 위해서는 대수적으로 단위 쿼터니언 곱이 벡터의 회전이라는 것을 증명한 (
단위 쿼터니언
이는 SO(4)의 성질과 동일하다. 즉, 단위 쿼터니언은
다음은 양영욱님의 저서 수학으로 시작하는 3D 게임 개발에 회전 관련 챕터 내용을 주로 참고하여 작성하였다. 2차원

어느 차원에서든 점이 회전하면 당연히 원이 그려지며 그 원이 존재하는 평면이 있게 된다. 따라서 회전을 점이나 선을 기준으로 하지 않고 특정 면을 기준으로 보면 차원과 상관없이 회전을 정의할 수 있으며 이러한 평면을 회전평면(rotation plane)이라고 부른다. 회전이 성립하려면 우선 2차원의 면이 존재해야하므로 1차원에서는 회전이 불가능함을 알 수 있다.
하지만 우리는

앞서 소개한 단위 쿼터니언
등복각 회전에는 왼쪽 등복각(left-isoclinic) 회전과 오른쪽 등복각(right-isoclinic) 회전이 존재한다. 왼쪽 등복각 회전은 단위 쿼터니언을 왼쪽에서 곱했을 때 나타나고 오른쪽 등복각 회전은 오른쪽에서 곱했을 때 나타난다.
이 때, 두 회전의 곱셈은 교환법칙을 만족한다.
i,j,k 축이 이루는 3차원의 회전평면을

하지만 우리의 목적은

단위 쿼터니언 곱은 하나의 동등한
이 때,
References
[1] Sola, Joan. "Quaternion kinematics for the error-state Kalman filter." arXiv preprint arXiv:1711.02508 (2017).
'Fundamental' 카테고리의 다른 글
[SLAM] 파티클 필터(Particle Filter) 개념 정리 (1) | 2022.10.07 |
---|---|
Quaternion kinematics for the error-state Kalman filter 내용 정리 Part 2 (5) | 2022.08.31 |
칼만 필터(Kalman Filter) 개념 정리 (+ KF, EKF, ESKF, IEKF, IESKF) Part 1 (15) | 2022.06.18 |
선형대수학 (Linear Algebra) 개념 정리 Part 2 (1) | 2022.06.18 |
[SLAM] Optical Flow와 Direct Method 개념 및 코드 리뷰 (0) | 2022.06.16 |