Star Trackerに結像される星位置の計算

バイト先での仕事に使う自分用めも.
(2010/4/9追記 DCMの表記がx-y-zオイラーになっていたのでz-y-xオイラーに修正.quaternion表現をq0=cosに修正)

問題設定

Star Tracker(STT)は宇宙で人工衛星の姿勢角および角速度を決定するセンサで,カメラとデータ処理部からなる.カメラで撮影した星画像と,内部計算機が持つ星図を照合することで衛星姿勢をかなり高精度(良いものでsubmarcsec=1°の1/36000000オーダー)に決定できる.航海で船乗りが星図を使って自分の位置を知ったのと同じことを人工衛星にやらせるイメージ.

星カタログが赤経赤緯データ形式で与えられ,スターセンサがある視線方向(ボアサイト)に向いたとき,どのような星画像を捉えるのかを予想したいというのが今回の課題.

座標表現

衛星姿勢を表現するためには,基準座標系からの回転関係を示す必要がある.最も直観的なものは元の座標系に3回の回転を実行することで任意の姿勢を表現する方法で,オイラー角表現と呼ばれる.例えば
(1)Z軸回りに\Psi回転し,x'y'z'とする
(2)Y'軸まわりに\Theta回転し,x''y''z''とする
(3)X''軸まわりに\Phi回転し,x'''y'''z'''とする
このx'''y'''z'''が衛星の姿勢と一致すれば,衛星姿勢は3つの角度\Phi,\Theta,\Phiで表現できる.
回転にXYZどの軸を利用するかには12個の自由度があり,x-y-xオイラー,x-y-zオイラーなどと呼ばれる.上の場合はz-y-xオイラーとなる.

オイラー角の3個の座標変換行列F(\Phi),F(\Theta),F(\Psi)を掛け合わせることでできる行列をDCMと呼ぶ.慣性座標系を(inertial frame)を衛星座標系(body frame)に変換するDCMをC_b^iと表現すると,

となる.慣性座標系上で r=(x,y,z)にある物体は,衛星座標系から見るとC_b^i rの位置に存在する.DCMは9つの成分から成るが,独立な成分は3つしか無い.オイラー角で発生するSingular Pointの問題が無い点,行列積で直接座標変換ができる点,ユニタリ行列であり取扱い上便利なことが多い点からよく利用される.
星の座標が赤経\gamma赤緯\lambdaで与えられるとする.星までの距離をrとすれば,慣性座標系上の位置(x,y,z)は

となる.衛星(STT)から見た星座標はこれにDCMを掛けることで求められる.

CCDへの結像

CCD受光面にU,V座標を取ると,衛星座標系から見た星の経度,緯度\gamma',\lambda'との関係は


で表現される.fは焦点距離である.U,V方向それぞれについてSTTの視野角FOVをθ1,θ2と置き,各方向ピクセルサイズをU0,V0とすると,

これを上式に代入すると

衛星姿勢がDCMで与えられれば,DCMと(2)式を(8)(9)に代入して計算すれば,ある星がSTTのどこに結像するのかを求められる.続いて,STTのボアサイトがDCM以外の表現形式で与えられた場合の計算を行ってみる.

ボアサイトが赤経赤緯で与えられた場合

STTボアサイト方向が星と同様に天球上の赤経\gamma^s赤緯\lambda^sで与えられた場合,ボアサイト回りの回転自由度が残るので衛星姿勢は一意に決定できない(姿勢表現に最低3個の独立変数が必要なことから自明).仮にSTT座標Y軸を天の赤道面に通すという拘束条件を課すと,これはDCMにおいて\Psi = \gamma^s, \Theta = \lambda^s, \Phi = 0と置いた場合に等しく,

となる.任意の星座標は

で求められ,結像位置は

となる.いやーとても簡単ですね.

ボアサイトがquaternionで与えられた場合

計算負荷が小さく,Singular Pointが無いためにオンボードの計算に良く使われるquaternionは4変数で姿勢角を表現する.

quarternion→DCMの変換式が

なので,これを(8)(9)に代入してやれば良い.敢えて式を展開すると

であり,結像位置は

となる.目がまわってきた.

実装

単純にはSTT姿勢が何らかの形で与えられた時,全ての星に対して(12),(13)や(16),(17)式で結像位置を計算し,|V|