본문 바로가기

분류 전체보기325

[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] 멀티콥터 자세제어 알고리즘 - 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.
[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.
관성 주축 (Principal Axes of Inertia) 강체에 고정된 임의의 점 B를 원점으로 하고 강체에 고정된 좌표계 \(\{a\}\) 에 관한 관성행렬(inertia matrix)은 다음 식으로 계산할 수 있다 (https://pasus.tistory.com/191). \[ [I_B^a ]= \begin{bmatrix} I_{xx} & I_{xy} & I_{xz} \\ I_{yx} & I_{yy} & I_{yz} \\ I_{zx} & I_{zy} & I_{zz} \end{bmatrix} \tag{1} \] 여기서 \(x, y, z\) 는 좌표계 \(\{a\}\) 의 원점에서 강체 내의 임의의 점까지의 위치 좌표이고, 즉 \(\vec{r}=x\hat{a}_1+y\hat{a}_2+z\hat{a}_z\), 행렬 \([I_B^a ]\) 의 구성 성분은 다음과 .. 2023. 2. 19.
좌표변환과 관성행렬 (Inertia Matrix) 관성 다이아딕(inertia dyadic)은 특정 좌표계와 무관하지만 관성 다이아딕을 특정 좌표계로 표현한 관성행렬(inertia matrix)은 좌표계에 따라 달라진다. 어떤 강체의 질량중심 \(G\) 를 원점으로 하고 강체에 고정된 좌표계 \(\{a\}\) 와 좌표계 \(\{b\}\) 가 있다고 하자. 질량중심 \(G\) 에 관한 관성 다이아딕 \(\bar{I}_G\) 를 좌표계 \(\{a\}\) 와 좌표계 \(\{b\}\) 로 각각 표현하면 다음과 같다 (https://pasus.tistory.com/191). \[ \begin{align} \bar{I}_G &= \sum_{i=1}^3 \sum_{j=1}^3 I_{ij}^a \ \hat{a}_i \hat{a}_j \tag{1} \\ \\ &= \s.. 2023. 2. 17.
좌(왼쪽) 고유벡터 (left eigenvector) 고유벡터에도 좌파와 우파가 있다. 일반적으로 고유벡터라고 하면 우(오른쪽) 고유벡터(right eigenvector)를 의미한다. 그러면 좌(왼쪽) 고유벡터(left eigenvector)란 무엇이고 우(오른쪽) 고유벡터와는 어떤 관계가 있을까. 정방행렬 \(A \in \mathbb{R}^{n \times n}\) 의 우(오른쪽) 고유값(eigenvalue) \(\lambda\) 와 고유벡터 \(\mathbf{v}\) 는 다음과 같이 정의된다 (https://pasus.tistory.com/8). \[ A \mathbf{v} = \lambda \mathbf{v}, \ \ \ \mathbf{v} \ne 0 \tag{1} \] 반면 정방행렬 \(A\) 의 좌(왼쪽) 고유값 \(\kappa\) 와 고유벡터 \.. 2023. 2. 10.
상대 궤도요소 (Relative Orbital Elements) - 2 chief 위성의 궤도가 원궤도 또는 근 원궤도(near-circular orbit)일 경우, 시간 \(t=t_0\) 에서 주어진 상대 궤도요소(ROM, relative orbital elements) \(\delta \kappa\) 를 이용하면 Hill 좌표계에서 상대 위치벡터 \(\delta \vec{r}=x\hat{o}_1+y\hat{o}_2+z\hat{o}_3\) 를 다음 식으로 표현할 수 있다 (https://pasus.tistory.com/240). \[ \begin{align} x & \approx a \delta a-a \lVert \delta \vec{e} \rVert_2 \cos (u-\varphi) \tag{1} \\ \\ y & \approx -\frac{3}{2} ua \delta.. 2023. 2. 7.
상대 궤도요소 (Relative Orbital Elements) - 1 식 (1)로 주어지는 Clohessy-Wiltshire(CW) 방정식 \[ \begin{align} & \ddot{x}-3n^2 x-2n \dot{y}=0 \tag{1} \\ \\ & \ddot{y}+2n\dot{x}=0 \\ \\ & \ddot{z}+n^2 z=0 \end{align} \] 의 해는 다음과 같았다 (https://pasus.tistory.com/239). \[ \begin{align} & x(t)= \frac{\dot{x}_0}{n} \sin nt- \left( 3x_0+\frac{2}{n} \dot{y}_0 \right) \cos nt+ \frac{2}{n} (2nx_0+ \dot{y}_0 ) \tag{2} \\ \\ & y(t)=2 \left( 3x_0+ \frac{2}{n} \do.. 2023. 2. 4.
CW 방정식 (Clohessy-Wiltshire Equations) chief 위성에서 deputy 위성의 까지의 거리가 지구중심에서 chief 위성까지의 거리보다 매우 작은 경우 chief 위성에 대한 deputy 위성의 상대 운동을 Hill 좌표계로 표현하면 다음과 같았다. \[ \begin{align} & \ddot{x}- \left( \frac{2\mu}{r^3} + \frac{h^2}{r^4} \right) x+ \frac{2(\vec{r} \cdot \vec{v} ) h}{r^4 } y- 2 \frac{h}{r^2 } \dot{y} = f_1 \tag{1} \\ \\ & \ddot{y}+ \left( \frac{\mu}{r^3} - \frac{h^2}{r^4} \right) y - \frac{2(\vec{r} \cdot \vec{v} ) h}{r^4 } x +.. 2023. 1. 27.