구동기 한계를 가지는 상황에서의 가중 의사 역행렬을 이용하여 조종면 할당 문제를 다룬 바 있다.
입력 행렬 $B$가 Virtual Control Command와 Real Actuator간의 관계 혹은 Control Effectness를 나타낸다는 특징이 있다. 그렇다면 입력 행렬 $B$의 성분을 수정하면 Real Actuator의 고장에 대해서 조종면 재할당을 할 수 있을 것으로 예상된다.
다시 의사 역행렬을 이용한 조종면 할당 알고리즘을 복습하면 다음과 같다.
Pseudo-Inverse Algorithm for Control Allocation
상태 $x\in \mathbb{R}^n$, 입력 $u\in \mathbb{R}^m$인 다음의 선형 동적 시스템이 있다고 하자.
$$\cases{\dot{x} = Ax + Bu \\ y = Cx+ Du}$$
Virtual Control Command $v\in \mathbb{R}^n$과 제어 입력 $u$는 입력 행렬 $B$을 이용하여 다음과 같이 표현 될 수 있다.
$$v=Bu$$
그렇다면 Virtual Control Command $v_d$에 대해 최적의 제어 입력 $u$를 찾기 위해 다음과 같은 Quadratic form으로 최적화 문제로 정의한다.
$${\text{minimize}} \hspace{5mm} J= \frac{1}{2} \left(Bu-v_d\right)^T \left(Bu-v_d\right)$$
$${\text{subject to}} \hspace{5mm} u_{min} \leq u \leq u_{max}$$
Weighted Pseudo-Inverse Algorithm
$${\text{minimize}} \hspace{5mm} J= \frac{1}{2} \left(Bu-v_d\right)^T W \left(Bu-v_d\right)$$
$${\text{subject to}} \hspace{5mm} u_{min} \leq u \leq u_{max}$$
가중 의사 역행렬 방법은 가중 행렬 $W$을 Performance Index에 삽입하여 Virtual Control Command의 요소 간 중요도를 정의할 수 있었다.
Problem Statement
현재 다루고자 하는 문제는 Virtual Control Command $v_d$에 대해서 어떤 시점에서 구동기 고장이 유발, 고장 진단 되었을 때 어떻게 구동기에 명령을 재분배할 것인가에 대한 것이다.
앞서 다룬 예제를 통해서 검증해보고자 한다.
예제 상황은 의사 역행렬 기법을 이용할 때, Right Inboard Actuator 가 고장났다고 가정하면, 입력 행렬 $B$는 다음과 같이 변형된다.
$$B^{-1} = \left[ \matrix{1 && 1 \\ 0 && 1 \\ 0 && 1 \\ -1 && 1} \right] \rightarrow B'^{-1} = \left[ \matrix{1 && 1.33 \\ 0 && 0 \\ 0 && 1.33 \\ -1 && 1.33} \right]$$
고장난 구동기의 효과를 다른 구동기가 더 분담하는 형태인 것이다.
MATLAB 예시 코드는 다음과 같다.
|
|
결과를 보면 다음과 같다.
OriginAil Elv 2.0000 6.0000 with cost 1.1224 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 8.0000 6.0000 6.0000 4.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 10.0000 0.0000 8.0000 6.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 10.0000 0.0000 8.0000 6.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 10.0000 0.0000 8.0000 6.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 10.0000 0.0000 8.0000 6.0000 (Actual Ail Elv 2.0000 6.0000)
CA_in Ail Elv 2.0000 6.0000 with cost 0.0000 -> 10.0000 0.0000 8.0000 6.0000 (Actual Ail Elv 2.0000 6.0000)
다른 구동기에 더 분담을 시켰기 때문에 고장난 구동기의 위치 만큼 다른 구동기가 더 작동한 모습을 볼 수 있다.
여기서 연구 아이디어가 생각난 것은
위 문제에서는 입력 행렬에 Uniform하게 값을 더하면서 고장난 구동기의 역할을 다른 구동기에 분배했다.
그렇다면 Uniform한 방법이 아닌, 이 분배 방법또한 최적화 할 수 있지 않을까?
과정은 (제어 입력 최적화 -> 입력 행렬 최적화) 가 될 것 같다.
1. Uniform 하게 입력 행렬 초기화
2. 제어 입력의 최적화 진행
3. 최적화된 제어 입력에 따른 입력 행렬의 요소 최적화
4. 2~3 과정 반복을 통한 제어 입력과 입력 행렬의 최적화
그렇다면 문제가 발생할 수도 있다고 생각되는 부분은
입력 행렬의 최적 값과 제어 입력의 최적 값 사이에서 진동할 수도 있다는 것이다. 짐작이다.
이거는 Performance Index를 어떻게 정하느냐에 따라서 달린 것 같다.
'G.N.C. > Basic' 카테고리의 다른 글
제어 공학 요약 - 선형 시스템 (0) | 2022.08.21 |
---|---|
Cheat Sheet for dynamic equation of aircraft (0) | 2022.05.15 |
구동기 한계를 가지는 가중 의사 역행렬 재분배 조종면 할당 (0) | 2022.02.08 |
Projection Operator (0) | 2021.09.21 |
1차 필터의 연속/이산 시간 영역에서의 변환과 구현 (0) | 2020.12.23 |