본문 바로가기

Quaternion8

정적 자세결정: QUEST 1978년 HEAO-B(High Energy Astronomy Observatory)의 자세 추정을 계산하는 데 Davenport의 q-방법을 사용했다. 그러나 당시의 컴퓨터 성능으로는 1년 후에 발사된 MAGSAT에서 요구된 보다 빈번한 자세 계산을 감당할 수는 없었다고 한다. QUEST(QUaternion Estimator) 알고리즘은 이러한 요구에 부응하기 위해 고안되었으며, Wahba 의 자세결정 문제를 해결하기 위한 알고리즘으로 널리 사용되게 되었다. QUEST는 Davenport의 q-방법과 마찬가지로 행렬 \(K\) 의 고유값을 찾아 Wahba의 문제를 푼다(https://pasus.tistory.com/303). 그러나 QUEST는 고유값을 계산할 때 Newton-Raphson 반복법을 사.. 2023. 11. 1.
쿼터니언 기반 자세제어 질량중심을 기준으로 강체의 회전 운동방정식은 다음과 같다 (https://pasus.tistory.com/191). \[ \vec{M}_G= \bar{I}_G \cdot \frac{ ^b d ^i \vec{\omega}^b}{dt} + {^i \vec{\omega}^b} \times (\bar{I}_G \cdot { ^i \vec{\omega}^b }) \tag{1} \] 여기서 \(\{i\}\) 는 관성좌표계, \(\{b\}\) 는 강체좌표계, \(^i \vec{\omega}^b\) 는 강체좌표계의 각속도 벡터, \(G\) 는 강체의 질량중심, \(\bar{I}_G\) 는 질량중심점에 대한 관성 다이아딕, \(\vec{M}_G\) 는 강체에 작용하는 질량 중심점에 대한 모멘트이다. 식 (1)을 강체좌표.. 2023. 3. 18.
[PX4] 멀티콥터 자세 명령 PX4의 위치 제어기에서는 원하는 궤적(desired trajectory) 정보를 이용하여 추력 벡터를 계산한다. 관성 좌표계 \(\{i\}\) 로 표현된 추력 벡터는 별도로 주어지는 방위각(azimuth angle) 명령 \(\psi_{cmd}\) 와 함께 자세 명령(attitude command) 계산 모듈로 보내져서 쿼터니언 \(\mathbf{q}_{cmd}\) 로 파라미터화된 자세 명령을 생성하게 된다. 쿼터니언 \(\mathbf{q}_{cmd}\) 를 계산하기 위해서는 먼저 관성 좌표계 \(\{i\}\) 에 대해서 동체 좌표계 \(\{b\}\) 가 취해야 할 목표 좌표계를 구해야 하는데 이 좌표계를 \(\{d\}\) 라고 하자. 그러면 \(\mathbf{q}_{cmd}=\mathbf{q}_d^i.. 2023. 2. 25.
[PX4] 멀티콥터 자세제어 알고리즘 - 2 회전축 \(\hat{p}\) 를 중심으로 회전각 \(\beta\) 만큼 회전하거나, 회전축 \(-\hat{p}\) 를 중심으로 회전각 \(2\pi-\beta\) 만큼 회전하거나 물리적으로 같은 회전이다. 따라서 쿼터니언(quaternion)의 정의에 의하면 다음식이 성립한다. \[ \begin{align} \mathbf{q} &= \begin{bmatrix} \cos⁡ \left( \frac{\beta}{2} \right) \\ \mathbf{p} \sin \left( \frac{\beta}{2} \right) \end{bmatrix} = \begin{bmatrix} \cos⁡ \left( \frac{2\pi-\beta}{2} \right) \\ -\mathbf{p} \sin \left( \frac{2\.. 2023. 2. 23.
[PX4] 멀티콥터 자세제어 알고리즘 - 1 PX4의 멀티콥터(multicopter) 비행제어기는 자세/각속도 제어기인 내부루프와 위치 제어기인 외부루프로 구성되어 있다. 위치 제어기는 내부나 외부 임무 모듈로부터 멀티콥터의 목표 궤적(desired trajectory)을 받아서 추력의 크기와 자세 명령(attitude setpoint)을 생성하고, 자세/각속도 제어기는 이를 받아서 추력과 모멘트 명령을 생성하게 된다. 최종적으로 제어력 할당 모듈을 통해서 멀티콥터의 로터 회전속도를 제어한다. 자세 제어기는 각속도 명령을 생성해 내며 각속도 제어기는 이를 받아서 추력과 모멘트 명령을 생성한다. 자세 제어기는 \(250 Hz\), 각속도 제어기는 \(1 kHz\), 위치 제어기는 \(50 Hz\) 의 빠르기로 작동한다. 따라서 내부루프는 외부루프에 .. 2023. 2. 22.
좌표변환 방법 비교 좌표변환 방법으로서 방향코사인행렬(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.