본문 바로가기

쿼터니언6

정적 자세결정: Davenport의 q-방법 앞서 살펴본 TRIAD는 두 개의 측정 단위벡터를 이용하여 우주비행체의 자세를 결정하였다 (https://pasus.tistory.com/302). 만약 두 개 이상의 단위벡터를 측정할 수 있다면 모든 측정 벡터를 이용할 수 있도록 TRIAD 방법을 개선해야 할 것이다. 예를 들면 많은 항성을 동시에 추적할 수 있는 별센서를 사용한다면 다수의 단위벡터가 측정된다. Wahba는 센서의 불확실성으로 인해 발생하는 오류를 최소화하는 방식으로 다수의 측정 단위벡터를 처리하는 방법에 대한 문제를 정립했다. \(n\) 개의 측정 단위벡터를 \(\hat{s}_k, \ k=1, ..., n\) 이라고 하자. 그리고 이 벡터를 기준좌표계 \(\{a\}\) 와 동체좌표계 \(\{b\}\) 로 표현한 벡터를 각각 \(\ma.. 2023. 10. 22.
정적 자세결정 (Static attitude determination): TRIAD 유도항법제어(GNC, guidance, navigation, and control) 분야에서 자세(attitude)란 기준좌표계(reference frame)를 기준으로 3차원 공간에서 항공기 또는 우주비행체 등 운동체에 부착된 동체좌표계(body frame)가 어떤 방향으로 정렬되어 있는 지를 말한다. 자세를 표현하기 위한 방법으로는 오일러각(Euler angles), 방향코사인행렬(DCM, direction cosine matrix), 쿼터니언, 로드리게스 파라미터 등이 있다. 자세를 표현한다 함은 기본적으로 기준좌표계가 동체좌표계와 일치하려면 기준좌표계의 어느 축을 중심으로 얼마만큼 회전해야 하는 지를 나타낸다고 보면 된다. 센서의 측정값으로부터 자세를 계산해야 하는데, 이에 관련된 용어가 두 가지.. 2023. 10. 19.
[PX4] 멀티콥터 자세제어 알고리즘 - 3 PX4의 위치 제어기에서 추력 벡터를 계산한 후, 별도로 주어지는 방위각(azimuth angle) 명령 \(\psi_{cmd}\) 와 합쳐서 멀티콥터가 취해야 할 자세(attitude)를 결정한다. 이 자세는 쿼터니언 \(\mathbf{q}_{cmd}\) 로 파라미터화 되는데 이를 좌표계로 표시하면 다음 그림과 같다. 여기서 \(\vec{F}_{cmd}\) 는 위치 제어기에서 계산한 추력 벡터 명령, \(\{i\}\) 는 관성 좌표계, \(\{b\}\) 는 동체 좌표계, \(\{d\}\) 는 쿼터니언 \(\mathbf{q}_{cmd}\) 로 파라미터화된 좌표계이다. \(\mathbf{q}_{cmd}\) 는 관성 좌표계에 대한 좌표계 \(\{d\}\) 의 자세를 의미하므로 \(\mathbf{q}_{cmd.. 2023. 2. 24.
좌표변환 방법 비교 좌표변환 방법으로서 방향코사인행렬(DCM), 오일러각, 그리고 쿼터니언에 대해서 알아보았다. 이제 각각의 장단점을 비교해 보자. 먼저 DCM은 9개의 파라미터로 좌표변환을 표현한다. 그 중 6개는 구속조건을 만족해야 한다. 구속조건은 DCM이 단위직교 행렬(orthonormal matrix)이어야 한다는 것이었다. 이 구속 조건을 맞추기가 쉽지 않다는 것이 DCM의 큰 단점이다. 시간이 흐름에 따라서 좌표계의 자세가 달라질 경우 DCM의 미분 방정식을 세우고 이 방정식을 적분하여 매시간 마다 DCM을 계산해야 하는데, 이 때 수치 오차 때문에 계산된 DCM이 단위직교 행렬이 안될 수가 있다. DCM은 반드시 단위직교 행렬이어야 하므로 강제적으로 단위직교 행렬로 만들어야 할 필요가 있는데, 이것이 쉽지 않.. 2021. 2. 8.
쿼터니언 (Quaternions) 오일러의 회전 정리(Euler's rotation theorem)에 의하면 모든 좌표변환은 어떤 회전축과 그 회전축을 중심으로 하는 한번의 회전을 통해서 가능하다. 쿼터니언(quaternions)의 정의는 이 회전축과 회전각에 기반을 두고 있다. 좌표계 \(\{a\}\)를 회전축 \(\hat{p}\) 를 중심으로 회전각 \(\beta\) 만큼 회전하여 좌표계 \(\{b\}\)로 변환했다고 하면, 좌표계 \(\{a\}\)에서 좌표계 \(\{b\}\)로의 쿼터니언 \(q_b^a\)는 다음과 같이 정의된다. \[ q_b^a= \begin{bmatrix} q_0 \\ q_1 \\ q_2 \\ q_3 \end{bmatrix} = \begin{bmatrix} \cos \left( \frac{\beta}{2} \ri.. 2021. 2. 8.
벡터를 직교 좌표계로 표현하기 스칼라(scalar)는 크기만 가진 어떤 양이다. 반면에 벡터(vector)는 크기와 방향을 갖는 양이다. 벡터는 통상적으로 영문 소문자위에 화살표로 표기한다. 즉 벡터 \(u\)는 \(\vec{u}\)로 표기한다. 또한 벡터는 화살표로 그린다. 화살표의 크기는 벡터의 크기를 나타내며, 화살표의 방향은 벡터의 방향을 나타낸다. 벡터의 크기는 벡터의 절대값으로 표기한다. 벡터 \(\vec{u}\)의 크기는 \(\left\vert \vec{u} \right\vert\)다. 두 개의 벡터는 크기와 방향이 모두 같으면 '같다'고 한다. 아래 그림에서 두 벡터 \(\vec{u}\)와 \(\vec{w}\)는 출발점이 다르지만 크기와 방향이 같으므로 같다. 즉, \(\vec{u}=\vec{w}\) 이다. 벡터는 특정.. 2021. 2. 5.