2021年3月9日火曜日

小ネタ

 1時間ちょっと受信したときのスペクトル。

 さすがに時間が長いので実用的な大きさで画像化すると分解能が低いけど、NEXUSがパケット出してるのと、VZLUSAT1がCW出してるのは見える。終了間際にAALTO1が来てて、これもなにか出してそう。ITUPSAT1も出してるかな? 仰角0度以上の周波数全部書いてるので見えてないやつのほうが多い。

 とりあえず、長時間受信しっぱなしで途中でぱらぱら飛んでくる、みたいな状況のテストデータは取れたので、目的は達成。あとは解析ソフト作るの頑張るだけ。


 仰角が正の範囲を切り出してドップラ補正してWAVで書き出す、というのはおおよそ動きそうな感じ。

 タイムスタンプの誤差とか周波数の誤差でウネウネ。これはあとからもう一度動かせばいいので、数kHz程度のうねりなら補正できるはず。今度はサンプリングレートが低いのでチャチャッと処理できるはず。


 とりあえず、1個の衛星を切り出して、IQ.wavとinfo.jsonを作って、IQ.wavのスペクトルをPNGに、続けてZIPファイルにIQ.wavとinfo.jsonを突っ込む、という感じの動作はできるようになった。ZIPは無圧縮も突っ込めるので、info.jsonは無圧縮で突っ込んでる。適当なバイナリビューアとかで開けばJSONを目で見たりコピペしたりできるので、スペクトル画像を見て大雑把に判断しつつ、細かい情報はJSONも確認して、みたいなことができるようになる。さすがにファイル容量が大きいのでメモ帳とかに投げると読み込むのに時間がかかるが。

 メモ帳、ドラッグ&ドロップで読み込むときはASCIIエンコードに固定する、みたいな機能はないものか。バイナリデータを読ませるとマルチバイト文字のデコードが走るので遅い&ラテン文字列を文字列検索できない。もっとも、そもそもシングルバイト文字専用の読み込みモードというのがないらしいけど。まぁ、基本UTF-8とかANSIとか、シングルバイト文字に互換性もたせてあるはずだから必要ないよなぁ。UTF-8で読み込むとラテン文字領域はちゃんと読み込めるっぽいし、それで妥協するしかないか。いや、バイナリデータをテキストエディタにドラッグ・アンド・ドロップして妥協もクソもないだろ、という話だが。バイナリデータを目視で見るの、意外と馬鹿にできないんだけどねぇ。


 中間ファイル、今の所はPNG+ZIP(WAV+json)の構成。WAVはIQデータでほとんど乱数列なのでZIP圧縮は全く利かない。単純にファイルアーカイブとしてしか動いてない。じゃぁtarでいいだろ、という話にはならず、zipである必要性はちゃんとあるのだが。

 たかだか2000x2500pxくらいのPNGが160MBとか、アホみたいなデータだよなぁ。ぜったい悪意あるやつ……


 いくら中身にZIPが入ってるとはいえ、拡張子自体は.pngなので、圧縮/展開ソフトに食わせると、そのまま圧縮しようとする。ということで、中のwavとかjsonとか取り出したい場合は、一旦拡張子を変更する必要がある。ちょっと手間。もっとも、pngはあくまでも中間形式であって、後処理用のソフトも作るので、ZIPを展開しなくちゃいけない自体なんてのは早々ないはずだが。


 ということで、次は複数の衛星のダウンサンプリングをできるようにして、その後はリファクタリングかなー。実験コードとかでごちゃごちゃしすぎ。。。ある程度スッキリしたら、今度は中間ファイルを読み込んでデコードするソフトを書くことになる。

***

 3月8日受信分

* 27844 / CUTE-1

* 27848 / XI 4

* 28895 / XI 5

* 32785 / CUTE-1.7+APD II

* 32791 / SEEDS

* 33493 / PRISM (HITOMI)

* 35932 / SWISSCUBE

* 41460 / AAUSAT 4

* 42775 / AALTO 1

* 42790 / VZLUSAT 1

* 43615 / CP-7 DAVE

* 43743 / REAKTOR HELLO WORLD

* 43933 / ORIGAMISAT-1

* 43937 / NEXUS

* 44330 / RAAVANA1

* 44909 / BREEZE-KM R/B

 途中1時間強受信止めてた割に数が多い。今日はちょっとSNR低めだけど。

0 件のコメント:

コメントを投稿