와바의 문제

다음은 와바의 문제에 관한 내용이다. 정적인 자세 결정은 고정된 시간에서 알고 있는 특정 물체의 방향을 측정하는 별센서와 같은 광학센서등을 이용하여 현재 우주비행체의 자세를 결정하는 방법이다. 즉, A r R i = r B i {\displaystyle A{\bf {r}}_{R}^{i}={\bf {r}}_{B}^{i}} , i = 1 , 2 , … , n {\displaystyle i=1,2,\ldots ,n} , 여기에서 A {\displaystyle A} 는 현재 우주비행체의 자세를 기준좌표계에 대하여 나타내는 방향코사인행렬이고, r R i {\displaystyle {\bf {r}}_{R}^{i}} 는 알고 있는 별의 방향을 가르키는 벡터로 기준좌표계에서 표현되어 있고, r B i {\displaystyle {\bf {r}}_{B}^{i}} 는 별센서에서 측정된 해당 별의 방향벡터로 우주비행체의 몸체좌표계로 표현되어있고, n {\displaystyle n} 은 현재 고정된 시간에서 관측된 별 방향 벡터의 갯수이다. 이렇게 주어진 r R i {\displaystyle {\bf {r}}_{R}^{i}} 와 r B i {\displaystyle {\bf {r}}_{B}^{i}} 로 A {\displaystyle A} 를 결정하는 것이 정적 자세 결정 문제이다. 정적 자세 결정 문제는 다음과 같이 L ( A ) {\displaystyle L(A)} 의 값이 최소가 되게하는 자세, 즉 방향코사인행렬 A {\displaystyle A} 를 찾는 문제로 표현될 수 있다. L ( A ) = 1 2 ∑ i = 1 n a i ‖ A r R i − r B i ‖ 2 {\displaystyle L(A)={\frac {1}{2}}\sum _{i=1}^{n}a_{i}\|A{\bf {r}}_{R}^{i}-{\bf {r}}_{B}^{i}\|^{2}} 여기서 a i {\displaystyle a_{i}} 는 각 측정 벡터의 잡음의 세기에 반비례하도록 가중치를 주는데 사용되는 상수이다. 이 최적화 문제는 와바(Wahba)가 처음으로 제시하였으며 와바의 문제라고 불린다. 퀘스트는 슈스터 (Shuster)와오 (Oh)가 만든 방법이며 쿼터니언 (Quaternion) 추정 (Quaternion Estimation)의 줄임말이다. 퀘스트 알고리즘은 와바의 자세 최적화 결정 문제를 매우 효율적인 방법으로 푼다. 이 알고리즘은 아래와 같이 요약된다. 우선 B {\displaystyle B} 를 r B i {\displaystyle {\bf {r}}_{B}^{i}} 와 r R i {\displaystyle {\bf {r}}_{R}^{i}} 를 이용하여 아래와 같이 구성한다. B = ∑ i = 1 k a i r B i ( r R i ) T {\displaystyle B=\sum _{i=1}^{k}a_{i}{\bf {r}}_{B}^{i}\left({\bf {r}}_{R}^{i}\right)^{T}} 여기서 a i {\displaystyle a_{i}} 는 흔히 해당 측정잡음 분산의 역수가 사용된다. 아래식을 이용하여 S , σ , δ , κ {\displaystyle S,\sigma ,\delta ,\kappa } 를 계산한다. S = B + B T , {\displaystyle S=B+B^{T},} σ = trace ( B ) , {\displaystyle \sigma ={\text{trace}}(B),} δ = det ( S ) , {\displaystyle \delta ={\text{det}}(S),} κ = trace [ adj ( S ) ] {\displaystyle \kappa ={\text{trace}}\left[{\text{adj}}(S)\right]} 여기서 det( ⋅ ) {\displaystyle \cdot )} 는 행렬식이고 adj( ⋅ {\displaystyle \cdot } )는 수반(adjugate) 행렬(고전적_수반_행렬)이고, 이는 다음과 같이 주어진다. κ = ( s 22 s 33 − s 23 2 ) + ( s 11 s 33 − s 13 2 ) + ( s 11 s 22 − s 12 2 ) {\displaystyle \kappa =(s_{22}s_{33}-s_{23}^{2})+(s_{11}s_{33}-s_{13}^{2})+(s_{11}s_{22}-s_{12}^{2})} 여기서 s i j {\displaystyle s_{ij}} 는 S {\displaystyle S} 의 i번째 행 j번째 열의 값이다. z {\displaystyle {\bf {z}}} 를 다음과 같이 구성한다. z = ∑ i = 1 k a i r B i × r R i {\displaystyle {\bf {z}}=\sum _{i=1}^{k}a_{i}{\bf {r}}_{B}^{i}\times {\bf {r}}_{R}^{i}} 와바의 문제는 다음과 같은 4 × 4 {\displaystyle 4\times 4} 행렬 K {\displaystyle K} 에 대해 K = [ S − σ I 3 z z T σ ] {\displaystyle K={\begin{bmatrix}S-\sigma I_{3}&{\bf {z}}\\{\bf {z}}^{T}&\sigma \end{bmatrix}}} 고유치 문제를 아래와 같이 푸는데, 여기서 최대 고유치를 찾는 문제로 바뀐다. K q = λ q {\displaystyle K{\bf {q}}=\lambda {\bf {q}}} 이 고유치 문제는 아래 4차다항식 방정식을 만족하는 최대크기의 λ {\displaystyle \lambda } 를 계산하는 문제로 바뀐다. 즉, f ( λ ) = λ 4 − ( a + b ) λ 2 − c λ + ( a b + c σ − d ) = 0 {\displaystyle f(\lambda )=\lambda ^{4}-(a+b)\lambda ^{2}-c\lambda +(ab+c\sigma -d)=0} 여기서 계수를 아래와 같이 계산한다. a = σ 2 − κ , b = σ 2 + z T z , c = δ + z T S z , d = z T S 2 z {\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 ^{*}} 를 계산했으면, 다음단계는 아래와 같다. y ∗ = [ ( σ + λ ∗ ) I 3 − S ] − 1 z {\displaystyle {\bf {y}}^{*}=\left[(\sigma +\lambda ^{*})I_{3}-S\right]^{-1}{\bf {z}}} 그러면 최적의 쿼터니언 ( q ∗ {\displaystyle q^{*}} )은 다음과 같이 계산된다. q ∗ = 1 1 + ‖ y ∗ ‖ 2 [ y ∗ 1 ] {\displaystyle q^{*}={\dfrac {1}{\sqrt {1+\|{\bf {y}}^{*}\|^{2}}}}{\begin{bmatrix}{\bf {y}}^{*}\\1\end{bmatrix}}} Wahba, G. (1965), “A Least Squares Estimate of Satellite Attitude”, 《SIAM Review》 7 (3): 409, doi:10.1137/1007077  http://www.malcolmdshuster.com/ http://www.acsu.buffalo.edu/~johnc/shusym/ 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 관리 - 여러 이름 (링크)