はやぶさが取得したイトカワのデータをしゃぶり尽くす


はやぶさの取得した全データが無料で一般公開されました。
Hayabusa Project Science Data Archive
もちろん画像も気になりますが個人的に気になったのはShape Modelにある形状データでした。
しかし形状データがSTL形式、TRI形式またはTEXT形式で愛用しているmetaseq.netのMetasequoiaではそのままでは表示できません。

STLファイルビューアはhiramine.comのHira Stl Viewer などあちこちで公開されていますが、後々のために自分でいじれる形式にしておきたいところです。
Metasequoiaのプラグインを探しSTLのバイナリ形式を読むものは三谷 純さんのページにあったのですが、JAXAで公開されているのはSTLのアスキー形式です。
無いものは仕方ないので自分で変換しました。

最初はSTL形式から変換しようと考えましたが、TXTデータの方がMQOのフォーマットに近かったのでTXTから変換します。

まずイトカワ形状データのTXTフォーマットについて説明します。
itokawa_f0196608.txtの最初はこんな感じ
 99846
         1       -0.15141        0.08172        0.07485
         2       -0.14926        0.08204        0.07543
         3       -0.14715        0.08240        0.07616
最初の行が総頂点数
次の行からは1行ごとに頂点の座標を表しています。最初の要素は頂点番号、続く3つの要素が座標値、これが頂点の数だけ続きます。
Metasequoiaのvertexチャンクに相当する部分です。

頂点が終わると次は面定義
 196608
         1         1       130         2
         2         2       130       131
         3       130       260       131
1行目が総面数
次の行からは1行ごとに三角ポリゴンを表しています。最初の要素は面番号、続く3つの要素が上で定義した頂点番号。メタセコイアのfaceチャンクに相当する部分です。
上の例の面番号1は頂点1、頂点130、頂点2で囲まれた三角ポリゴンを表しています。

これをmqo形式に当てはめてやります。

まずは一番軽いデータを手変換。手変換と言っても全部手で入れなおしたわけではなくエディタを使って置換したりマクロで形式整えただけです。
メタセコイアでは小数点以下は4桁ですが元データの少数点以下5桁でも問題なく読めました。メタセコイアでセーブすると4桁に変換してくれます。

これでMQOデータになったのでメタセコでも読めるようになりました。しかし全ての面が反転しているようなので全ての面を選択して選択部処理-面を反転を行います。面の反転は間違いだったようです
何かラッコのうなじの辺りに妙なすじが見え、他にもノイズみたいな面がいくつも有ります。
STL VIEWERではこのような面はないので変換ミスか?
MQOのフォーマットをよく見直したら頂点は0から始まりTXT形式では1から始まります。
こうなるとマクロでは難しいので該当部分をexcelに持っていって-1。
これでうなじの変な筋は消えました。
イトカワ形状データ(MQO形式)49152ポリゴンをZIP圧縮Itokawa Plate Model, 49,152 facetsから変換

ポリゴンの多いものはEXCELの行数制限を超えてしまったので専用のプログラムを作って変換しました。
また、変換プログラムでは座標値を10倍して有効桁数を保つようにしました。
変換ツールは欲しい人がいれば公開します。
イトカワ形状データ(MQO形式)196608ポリゴンをZIP圧縮Itokawa Plate Model, 196,608 facets から変換
イトカワ形状データ(MQO形式)786432ポリゴンをZIP圧縮Itokawa Plate Model, 786,432 facetsから変換
イトカワ形状データ(MQO形式) 3145728ポリゴンをZIP圧縮Itokawa Plate Model, 3,145,728 facetsから変換

Hayabusa Project Science Data Archive利用条件にデータの改変禁止とありフォーマット変換も改変に当たるのかちょっと心配です。とりあえずJAXAに問い合わせたので駄目という回答が来たら引っ込めます。JAXA広報部から問題ないという回答を頂きました。「形状モデル数値データのフォーマット変換につきましては基本的に問題ございません。はやぶさの成果をさらに楽しんでくだされば幸いです。」とのこと。思う存分楽しませて頂きます

本当は誰でもインストールなしに見れるようにJava Horizonで公開されているMQOViewerを使おうと思っていたのですが、面数が多すぎるのか表示できませんでした。
もう少し確認してみます。

最終的には形状モデルの上の位置と可視画像をリンクしたり、Google Itokawaみたいのが出来たら良いな。
5/12のJAMSTEC一般公開まではトリエステが最優先ですが、終わったらイトカワを最優先にします。


おまけで他形式も解説。
STL形式はこんな感じ。triデータが先にあってプログラムでstlに変換しているようです。
solid stl file generated from tri2stl by Naru Hirata
 facet normal -0.263465 0.317827 0.910809
  outer loop
   vertex -0.151440 0.081760 0.074960
   vertex -0.151080 0.079250 0.075940
   vertex -0.147100 0.082320 0.076020
  endloop
 endfacet
 facet normal -0.481671 0.608000 0.631133
  outer loop
   vertex -0.147100 0.082320 0.076020
   vertex -0.151080 0.079250 0.075940
   vertex -0.146890 0.080130 0.078290
  endloop
 endfacet
頂点と接続情報に分けずに直接座標を書いています。このやり方だと同じ座標を何度も書くことになるのでデータ量としては大きくなります。
vertexの行が座標で、outer loopとendloopで3座標をまとめて1つのポリゴンを形成します。normalは法線ベクトル、これは元データには無いので変換プログラムが計算しているようです。

TRI形式はさらに単純。1行が1つの三角ポリゴンを表しており、3座標を並べて行末にEnd Of Lineを表す0xffffffがついただけです。
-0.151440 0.081760 0.074960 -0.151080 0.079250 0.075940 -0.147100 0.082320 0.076020 0xffffff
-0.147100 0.082320 0.076020 -0.151080 0.079250 0.075940 -0.146890 0.080130 0.078290 0xffffff
-0.151080 0.079250 0.075940 -0.146400 0.077390 0.078750 -0.146890 0.080130 0.078290 0xffffff

まずは形状モデルは何とかなりました。
メタセコイアへの変換はありがちだったか、他の人も読み込みプラグインを公開しています。
わんだらぁ亭 まぁプラグインはシェアウェア版でしか使えないし、共存共栄の方向で。
とりあえず私の作った変換ツールも貼っておきます。txt2mqo.zip

起動したらConvertボタンを押してください、入力のTXT形式ファイル選択のダイアログが開きますので選択してください。
続いて出力のMQOファイル選択のダイアログが開くので同じように選択、新規のときは拡張子のmqoまで入力してください。
300万ポリゴンだと変換に少し時間がかかります。

単に形状モデル化しただけでは面白くないので続いて可視画像(AMICA)と形状を対応付けることを考えます。

可視画像データはFITS形式という天文系ではスタンダートなフォーマットです。
例えば Makali'iで開けます。
撮影時の位置情報とかがヘッダに有るかと期待したのですが無いようです。

それならばFITSデータには撮影時刻があるので位置情報データ(SPICE)と比較することで何とかなるか?
SPICEの詳細はNASAのNAIF
最終的にはここのドキュメントを読むべきでしょうけどまずはとっかかりで日本語の資料を探します。
はやぶさ・イトカワ可視化ツールとAMICA機上校正
この論文は実際にはやぶさで使ったツールの紹介で座標系の話、AMICAの画角、カメラの微妙な回転ずれの話なども有用です。
これを読むとSPICEデータのうち探査機の位置(SPK)、探査機の姿勢(CK)、座標系(FK)、探査機の時計(SCLK)を読んでAMICAの撮影時刻とマッチングさせれば撮影位置と撮影角度がわかりそうです。

NAIFのユーティリティからこれらを読むツールを落とし、アーカイブからSPICEデータを落として読んでみます。


形状データの変換が終わってから工作と平行してSPICEデータの解析をやっていました。
まだ分からないところは山ほど有りますが座標データと時間を記録したSPKファイルは解析できたようなので公開します。

まっとうにSPICEライブラリを入れて読めれば楽だったのですがうちの環境では出来なかったので自作です。
はやぶさ軌道データコンバータ 試作版 ZIP圧縮
hayabusa_itokawarendezvous_v01.bspをCSV形式に変換します。
使い方:spktest.zipを解凍して出来たspktest.exeと同じフォルダにHayabusa Project Science Data Archive
のDATA-SPICE-SPKからhayabusa_itokawarendezvous_v01.bspをダウンロードして実行、Convertボタンを押すと同じフォルダにhayabusa_itokawarendezvous_v01.csvが作られます。
また画面上にはX-Y平面の動きを緑のドットでプロットしています。

とりあえず結果だけ欲しい人用に変換後のデータもおいておきます。
はやぶさ軌道データCSV形式をZIP圧縮hayabusa_itokawarendezvous_v01.bsp から変換
1行目は内容コメント。2行目からが実際のデータで1行が1データで中身はutc,et, x, y, z, vx, vy, vzの順番でカンマ区切りで並んでいます。
utcとetは時間、UTCは一般的な表記、ETはBSPファイルのデータのままの時間形式で2000年1月1日00:00:00からの秒数です。
x, y, zは座標。
vx, vy, vzは速度

AMICA(可視画像)データの撮影時間に対応する座標をメタセコイアのカメラ位置にしてイトカワの見え方でデータの検証をしようとしましたが、全然違いました。
変換を間違ったのかと思ったのですが、よく見たらBSPデータはHomePosition座標系でイトカワの自転が考慮されていないせいだと思われます。
イトカワの自転周期は分かるので、プログラムを追加して検証します。
今週末はJAMSTEC一般公開なのでデータ検証、SPKフォーマットの解説など詳細は週明けに。

このページのオリジナルデータは提供 宇宙航空研究開発機構(JAXA)です。

TOPへ戻る