2017年5月3日水曜日

半自動スタートラッカ


 若干の誤差を含む赤緯赤経を与え、星を同定する、というところまではできるようになりました。
 領域が重なる初期値を設定する必要があるので、半自動、という感じです。

 オレンジのマーカーがカタログから計算した位置、赤のマーカーが画像から検出した位置、緑のマーカーがマッチングに成功して、カタログ値から動かした位置、緑の線が同じ星と思われるマーカーをつないでいる、という感じです。
 緑のマーカーが赤のマーカーとズレている部分がありますが、これは計算誤差によるものです。

 視野はECIの四元数でZ軸に194.8125°、Y軸に5.563888°、X軸に-4.2°回した向きになります。一方、初期値として与えているのはZ軸に194.0625°、Y軸に4.863888°、X軸に0°です。Z軸が左右の動き、Y軸が上下の動きで、X+が視線方向です。
 ZYの誤差は領域の差に直結するので、ある程度の精度で設定してやる必要があります。一方、X軸は視線軸での回転ですが、この軸はいくら回しても領域が変わることはありませんから、大雑把な値というか、ゼロでも問題ありません。でも、この画像は縦横比が1対1ではないので、視線方向で回すと多少領域も変化します。

 この画像では、星を輝度でソートし、明るい星から50個の同定を試み、およそ60%がマッチしています。
 Nが増えるとマッチ率が下がる傾向がありますが、これは暗くなると近い等級の星が増え、観測誤差で正しい輝度ソートが行われていないため、カタログから選んだN個の星と、画像から選んだN個の星で選んだ対象が異なるためと思われます。Nをどんどん増やしていけば、ある程度のところでマッチ率が改善するはずですが、計算時間とのトレードオフです。


 現在はカタログからリストを作るプログラム、画像から星を抽出するプログラム、それぞれのデータから同定を行うプログラム、というのが別になっています。
 とりあえず、カタログからリスト化するプログラムと同定を行うプログラムを1つにまとめて、1回目のマッチングで推定した角度をフィードバックして再びカタログからリストを作り、と言うような処理を行えば、半自動で高精度なRaDecBankを得られるはずです。
 それができるようになれば、全天を対象にスキャンする処理を追加して、全自動スタートラッカにできるはずです。


 それにしても、とにかくベクトルの計算が多いです。ほとんどすべての計算がベクトルです。あとマッチングを試すのは数段のループで様々な組み合わせを試みますから、並列処理可能な部分も多いはずです。FPGAに固定小数点演算とかで組んだら爆速になるんだろうなぁ、とか想像してみたり。FPGAって触ったこともないのですが。
 画像処理であれば、ベクトルの範囲は0-4000くらいで、解像度が低い画素であれば10^3くらいの範囲を表現できれば事足りるはずです。およそ2^10から2^12程度で足りるはずなので、もしかしたら32bit整数型でも計算できるかもしれません。余裕があったらそっちも試してみようかな。
 でもそれをやるにはマイコンに直結できる画素が入手できることが条件か。ゲームボーイのカメラで星を撮ってるブログが有ったけど、あのカメラってまだ入手できるのかな?
 マイコンに直結できるカメラで簡単なものはUART接続のJPEGカメラとかがあり、マイコンでも輝点を探すくらいの計算はできるはずですが、シリアルカメラのカメラ任せな設定で欲しい星の写真を撮れるかどうか。
 でもそれができれば、STBeeくらいのマイコン1個の人工衛星でもスタートラッカで姿勢検出してRWとか磁気トルカで姿勢制御して、みたいな高精度ポインティングができるかもしれません。やってどうするんだとか、小型STT買ってきたほうが早いという感じですが。

0 件のコメント:

コメントを投稿