다음은 **와바의 문제**에 관한 내용이다.

정적 자세 결정
--------

정적인 자세 결정은 고정된 시간에서 알고 있는 특정 물체의 방향을 측정하는 별센서와 같은 광학센서등을 이용하여 현재 우주비행체의 자세를 결정하는 방법이다. 즉,

{\displaystyle A{\bf {r}}\_{R}^{i}={\bf {r}}\_{B}^{i}}, {\displaystyle i=1,2,\ldots ,n},

여기에서 A는 현재 우주비행체의 자세를 기준좌표계에 대하여 나타내는 방향코사인행렬이고, {\displaystyle {\bf {r}}\_{R}^{i}}는 알고 있는 별의 방향을 가르키는 벡터로 기준좌표계에서 표현되어 있고, {\displaystyle {\bf {r}}\_{B}^{i}}는 별센서에서 측정된 해당 별의 방향벡터로 우주비행체의 몸체좌표계로 표현되어있고, n 은 현재 고정된 시간에서 관측된 별 방향 벡터의 갯수이다. 이렇게 주어진 {\displaystyle {\bf {r}}\_{R}^{i}} 와 {\displaystyle {\bf {r}}\_{B}^{i}} 로 A를 결정하는 것이 정적 자세 결정 문제이다.

### 와바의 문제

정적 자세 결정 문제는 다음과 같이 {\displaystyle L(A)}의 값이 최소가 되게하는 자세, 즉 방향코사인행렬 A를 찾는 문제로 표현될 수 있다.

{\displaystyle L(A)={\frac {1}{2}}\sum \_{i=1}^{n}a\_{i}\|A{\bf {r}}\_{R}^{i}-{\bf {r}}\_{B}^{i}\|^{2}}

여기서 a\_{i}는 각 측정 벡터의 잡음의 세기에 반비례하도록 가중치를 주는데 사용되는 상수이다. 이 최적화 문제는 와바(Wahba)가 처음으로 제시하였으며 *와바의 문제*라고 불린다.

퀘스트 (QUEST: Quaternion Estimation) 알고리즘
---------------------------------------

퀘스트는 슈스터 (Shuster)와오 (Oh)가 만든 방법이며 쿼터니언 (Quaternion) 추정 (Quaternion Estimation)의 줄임말이다. 퀘스트 알고리즘은 와바의 자세 최적화 결정 문제를 매우 효율적인 방법으로 푼다. 이 알고리즘은 아래와 같이 요약된다.

우선 B를 {\displaystyle {\bf {r}}\_{B}^{i}} 와 {\displaystyle {\bf {r}}\_{R}^{i}}를 이용하여 아래와 같이 구성한다.

{\displaystyle B=\sum \_{i=1}^{k}a\_{i}{\bf {r}}\_{B}^{i}\left({\bf {r}}\_{R}^{i}\right)^{T}}

여기서 a\_{i}는 흔히 해당 측정잡음 분산의 역수가 사용된다.

아래식을 이용하여 {\displaystyle S,\sigma ,\delta ,\kappa }를 계산한다.

{\displaystyle S=B+B^{T},}
{\displaystyle \sigma ={\text{trace}}(B),}
{\displaystyle \delta ={\text{det}}(S),}
{\displaystyle \kappa ={\text{trace}}\left[{\text{adj}}(S)\right]}

여기서 det(\cdot )는 행렬식이고 adj(\cdot )는 수반(adjugate) 행렬(고전적\_수반\_행렬)이고, 이는 다음과 같이 주어진다.

{\displaystyle \kappa =(s\_{22}s\_{33}-s\_{23}^{2})+(s\_{11}s\_{33}-s\_{13}^{2})+(s\_{11}s\_{22}-s\_{12}^{2})}

여기서 s\_{{ij}}는 S의 i번째 행 j번째 열의 값이다.

{\displaystyle {\bf {z}}}를 다음과 같이 구성한다.

{\displaystyle {\bf {z}}=\sum \_{i=1}^{k}a\_{i}{\bf {r}}\_{B}^{i}\times {\bf {r}}\_{R}^{i}}

와바의 문제는 다음과 같은 {\displaystyle 4\times 4} 행렬 K에 대해

{\displaystyle K={\begin{bmatrix}S-\sigma I\_{3}&{\bf {z}}\\{\bf {z}}^{T}&\sigma \end{bmatrix}}}

고유치 문제를 아래와 같이 푸는데, 여기서 최대 고유치를 찾는 문제로 바뀐다.

{\displaystyle K{\bf {q}}=\lambda {\bf {q}}}

이 고유치 문제는 아래 4차다항식 방정식을 만족하는 최대크기의 \lambda 를 계산하는 문제로 바뀐다. 즉,

{\displaystyle f(\lambda )=\lambda ^{4}-(a+b)\lambda ^{2}-c\lambda +(ab+c\sigma -d)=0}

여기서 계수를 아래와 같이 계산한다.

{\displaystyle a=\sigma ^{2}-\kappa ,b=\sigma ^{2}+{\bf {z}}^{T}{\bf {z}},c=\delta +{\bf {z}}^{T}S{\bf {z}},d={\bf {z}}^{T}S^{2}{\bf {z}}}

이 다항식을 0 이 되게하는 가장 큰 {\displaystyle \lambda ^{\*}}를 구하는데는 흔히 Newton-Raphson 방법이 (뉴턴\_방법) 쓰인다. Newton-Raphson 방법을 사용할 때 초기 {\displaystyle \lambda ^{\*}}의 값은 보통 1에서 출발한다. 그 이유는 최대 {\displaystyle \lambda ^{\*}}이 1 근처에 있는 것으로 알려져있기 때문이다.

{\displaystyle \lambda ^{\*}}를 계산했으면, 다음단계는 아래와 같다.

{\displaystyle {\bf {y}}^{\*}=\left[(\sigma +\lambda ^{\*})I\_{3}-S\right]^{-1}{\bf {z}}}

그러면 최적의 쿼터니언 ({\displaystyle q^{\*}})은 다음과 같이 계산된다.

{\displaystyle q^{\*}={\dfrac {1}{\sqrt {1+\|{\bf {y}}^{\*}\|^{2}}}}{\begin{bmatrix}{\bf {y}}^{\*}\\1\end{bmatrix}}}

참고 문헌
-----

1. ↑  Wahba, G. (1965), "A Least Squares Estimate of Satellite Attitude", 《SIAM Review》 **7** (3): 409, doi:10.1137/1007077
2. ↑
3. ↑
4. ↑  Shuster, M.D. and Oh, S.D. (1981), "Three-axis attitude determination from vector observations", 《Journal of Guidance and Control》 **4** (1): 70–77, doi:10.2514/3.19717  CS1 관리 - 여러 이름 (링크)