본문 바로가기

유도항법제어/비행제어31

[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.
[DI-2] 내부 동역학 (Internal Dynamics) 다음과 같은 \(\mathbf{x}(t) \in \mathbb{R}^n\), \(\mathbf{u}(t) \in \mathbb{R}^p\), \(\mathbf{y}(t) \in \mathbb{R}^p\) 인 정방형 선형 시스템에 대해서 \[ \begin{align} & \dot{\mathbf{x}} = A \mathbf{x}+B \mathbf{u} \tag{1} \\ \\ & \mathbf{y}=C \mathbf{x} \end{align} \] DI(Dynamic Inversion, 모델 역변환) 제어입력은 다음과 같이 계산되었다. \[ \mathbf{u}=(CB)^{-1} (\nu -CA \mathbf{x} ) \tag{2} \] 여기서 \(\nu\) 는 보조입력(auxiliary input)이다. 식.. 2023. 1. 20.
[DI-1] 동적 역변환 (Dynamic Inversion) 전통적으로 비행제어 법칙은 게인 스케줄링(gain scheduling) 기법을 이용하여 설계되었다. 게인 스케줄링은 선형제어 설계 방법을 비선형 시스템에 적용하기 위한 것으로서 제어 게인(gain)을 작동 조건에 따라 다르게 설계하는 기법이다. 게인 스케줄링에서는 다양한 비행조건에서 선형화된 여러 개의 운동 모델에 기반하여 제어 게인을 설계한 후 비행조건에 따라서 제어 게인을 변화시킨다. 이를 이용하면 선형제어 시스템의 작동 영역을 일부로 한정시키지 않고 비행영역(flight envelope) 전체로 확장시킬 수 있다. 게인 스케줄링을 이용한 제어 시스템은 일반적인 제어 시스템과 달리 제어 게인이 비행 조건에 따라 변하기 때문에 설계하는데 시간이 많이 걸리고 반복하는데 비용이 많이 들며 공학적 경험에 크.. 2023. 1. 4.
비선형 시스템과 매니폴드 (Manifold) 시스템이 선형 시불변이면 시스템의 고유값(eigenvalue)을 이용하여 쉽게 안정성을 판별할 수 있었다. 시스템이 비선형일 경우에도 평형상태에 대해서 선형화를 한 후에 평형상태 근방에서 로컬 안정성을 판별할 수 있을 것이다. 다음과 같은 비선형 시스템이 있다고 하자. \[ \dot{\mathbf{x}} = \mathbf{f}( \mathbf{x}) \tag{1} \] 여기서 \(\mathbf{x}(t) \in \mathbb{R}^n\) 는 상태변수이다. 또한 \(\mathbf{x}_e\) 를 시스템 (1)의 평형점(equilibrium point)이라고 하자. \[ \mathbf{f}( \mathbf{x}_e )=0 \tag{2} \] 이제 새로운 변수를 \(\mathbf{y}= \mathbf{x}-\.. 2023. 1. 1.
선형 시스템과 부분공간 (Subspace) 다음과 같이 상태변수의 선형 미분 방정식으로 표현되는 운동 방정식이 있다고 하자. \[ \dot{\mathbf{x}}=A \mathbf{x} \tag{1} \] 여기서 \(\mathbf{x}(t) \in \mathbb{R}^n\) 는 상태변수, \(A \in \mathbb{R}^{n \times n}\) 는 상수 행렬이다. 이 시스템의 해는 다음과 같다. \[ \mathbf{x}(t)= e^{At} \mathbf{x}(0) \tag{2} \] 이전 포스트에서는 행렬지수함수(matrix exponential) \(e^{At}\) 의 계산에 대해서 알아보았다 (https://pasus.tistory.com/233). 시스템 (1)의 운동 특성은 행렬 \(A\) 의 고유값과 고유벡터에 따라 달라진다. 먼저 행.. 2022. 12. 27.
행렬지수함수 (Matrix Exponential) 계산 행렬 \( A \in \mathbb{R}^{n \times n}\) 의 행렬지수함수(matrix exponential) \(e^{At}\) 는 다음과 같이 정의된다. \[ e^{At}=I+At+\frac{1}{2} A^2 t^2+\frac{1}{3!} A^3 t^3 + \cdots \tag{1} \] 몇가지 특별한 형식을 갖는 행렬 \(A\) 의 지수함수를 계산해보고, 일반적인 행렬에 대한 계산으로 확장시켜 보도록 한다. 먼저 \(A\) 가 대각행렬일 경우다. \[ A= \begin{bmatrix} \lambda_1 & 0 & 0 \\ 0 & \lambda_2 & 0 \\ 0 & 0 & \lambda_3\end{bmatrix} \tag{2} \] 이 때는 \[ A^n= \begin{bmatrix} \la.. 2022. 12. 24.
리야프노프 안정성 (Lyapunov stability) 이론 시불변 시스템 \(\dot{\mathbf{x}} = \mathbf{f}(\mathbf{x})\) 의 안정성에 대한 정의에 이어서 이번에는 시스템의 안정성을 판별할 수 있는 이론에 대해서 알아보겠다. 시스템이 선형 시불변이라면 시스템의 고윳값(eigenvalue)을 이용하여 쉽게 안정성을 판별할 수 있다. 시스템이 비선형일 경우에도 평형상태에 대해서 선형화를 한 후에 평형상태 근방에서 로컬 안정성을 판별할 수 있을 것이다. 이와 같은 안정성 판별 방법을 간접방법(indirect method)이라고 한다. 그러나 선형화를 사용하여 비선형 시스템의 로컬 안정성을 파악할 수 없는 상황이 있을 수 있다. 또한 선형화는 그 속성상 비선형 시스템의 전역(global) 안정성에 대해서는 알려줄 수가 없다. 물론 비선형.. 2022. 9. 30.