2017年1月30日月曜日

惑星の数字

 今年に入って最近発売された笹本さんの文庫3冊読んで、その流れでミニスカ宇宙海賊も全巻読んで。あと野尻さんのも1冊買って、1ヶ月で16冊かぁ。いやー、ボリューム多かった。
 やっぱモーレツ宇宙海賊よりはミニスカ宇宙海賊のキャラデザのほうが好きかなぁ。リン先輩のキャラとかどストライクでど真ん中だし、こういう人近所にいたら楽しいだろうなぁ。あー、星のパイロットも読みたくなってきた。

 それはさておき。

 太陽系の数字がほしかったんだけど探すの面倒だったのでメモ。
 数字はwikipediaとかJAXAの宇宙情報センターとか。自分なりに数字加工してるので間違ってたらごめんなさい。

平均公転半径(m) 半径(m) 表面重力(m/s^2) 公転周期(day/rev)
太陽 0.000000000.E+00 6.9600000.E+08 274.00 0.000
水星 5.791000000.E+10 2.4397000.E+06 3.70 87.969
金星 1.082089300.E+11 6.0518000.E+06 8.87 224.700
地球 1.495978707.E+11 6.3781370.E+06 9.81 365.257
火星 2.279366400.E+11 3.3972000.E+06 3.71 687.008
木星 7.784120100.E+11 7.1492000.E+07 24.79 4332.752
土星 1.426725400.E+12 6.0268000.E+07 8.96 10759.668
天王星 2.870990000.E+12 2.5559000.E+07 7.77 30689.733
海王星 4.495060000.E+12 2.4764000.E+07 11.00 60184.857


 いやー、衛星軌道どころか、惑星間空間も超えて、恒星間で戦闘するとかすげーわ。
 恒星間ってどういう単位使うんだろう。今の地球だって系外惑星は4桁のオーダーで見つかってるし、それなりに計算したりとかもしてるだろうけど、そもそも相手は数光年先だから、地球から観測して「公転周期はn日」とかやったって、地球と同期するのだって一苦労だろうなぁ。

 ミニスカ宇宙海賊、ゲーム化しないかなぁ。自分でどこに行くかとか自由にできる感じの。さすがに操船とかも自分でやると大変だから、そのあたりはうまいこと自動化しといて、船長気分になれる程度に。

2017年1月26日木曜日

ふりーだむ(続き)

 TLEが更新されていました。

ISS (ZARYA)             
1 25544U 98067A   17024.54013045  .00004759  00000-0  79031-4 0  9995
2 25544  51.6440  34.4158 0007683 114.2927  28.8659 15.54144136 39416
FREEDOM                 
1 41930U 98067KS  17025.51552416  .00931254  00000-0  85695-2 0  9990
2 41930  51.6398  29.2315 0012302 111.0457 249.1873 15.64560130  1310
TANCREDO-1              
1 41931U 98067KT  17025.47312811  .00026022  00000-0  37991-3 0  9994
2 41931  51.6416  29.6957 0009983  97.7188 262.4938 15.55426982  1305
ITF-2                   
1 41932U 98067KU  17024.38219378  .00011903  00000-0  18126-3 0  9999
2 41932  51.6440  35.1643 0007683  89.3317 270.8546 15.54938235  1130
EGG                     
1 41933U 98067KV  17024.96072183  .00013049  00000-0  19796-3 0  9992
2 41933  51.6426  32.2752 0007585  95.1359 265.0519 15.54943631  1228
WASEDA-SAT3             
1 41934U 98067KW  17024.96099692  .00008219  00000-0  12778-3 0  9993
2 41934  51.6439  32.2764 0009238 101.1358 259.0699 15.54853640  1312
AOBA-VELOX 3            
1 41935U 98067KX  17025.53952570  .00012648  00000-0  19247-3 0  9990
2 41935  51.6441  29.3896 0007123  97.1228 263.0571 15.54893531  1418
TUPOD                   
1 41936U 98067KY  17025.40972952  .00032382  00000-0  47448-3 0  9994
2 41936  51.6442  30.0230 0008992  98.3959 261.8039 15.55216689   777
OSNSAT                  
1 41939U 98067KZ  17025.21642555  .00020528  00000-0  30284-3 0  9998
2 41939  51.6427  30.9814 0010108  96.1422 264.0718 15.55295648   617

JS Orbit


 とりあえずITF-2とFREEDOMが入れ替えられていて、正しそうな配置になっています。
 それから、JEM放出は6個ですが、8個分のTLEがあります。これは3UサイズのTuPODが2個のキューブサットを放出したためです。


 左下がISSですが、近い方からTuPOD, OSNAT, TANCREDO-1という並びです。


 JS Orbitは地図を拡大して(後からトリミングすれば)一部を保存できるので便利ですよ!(宣伝)
 今のところ複数の衛星名や軌道を表示するにはあとから画像処理をしなきゃいけないので、そのあたりは正式にJS Orbitの機能として実装したいところ。

2017年1月25日水曜日

ふりーだむ

 沿海域戦闘艦の話ではありませんのであしからず。


 この間放出された6機のキューブサットの、今現在最新の軌道です。
JS Orbit


 Celestrakの軌道要素によると、FREEDOMは軌道長半径409kmくらい、ITF-2は384kmくらいです。ITF-2が減速して先行している状態です。


 FREEDOMは大学が作成した衛星で、民間企業が作った衛星用機材の試験を目的にされています。しかし、大学側は何の音沙汰もなく、FREEDOM関係のWebページは見つかりませんでした。一応民間企業側が申し訳程度にページを作っていますが、成功とも失敗とも何も書かれていません。

 一方、ITF-2の運用情報によると、ITF-2はISS側(上図ではFREEDOMの近く)にいるようです。このブログのTLEページによると、「このTLEはFREEDOMとして公開されている物だが、ITF-2とFREEDOMが入れ替わっているらしい」ということで、先行しているITF-2がFREEDOMということになります。(CelestrakのTLEはたまに名前が変わるので、然るべき場所に連絡すれば名前の入れ替えくらいはやってくれるはずなんですが、自分の衛星の名前が間違われてても両大学ともに何も言わないのかなぁ)



 このグラフはFREEDOMとITF-2の軌道半径です。FREEDOMとITF-2が逆な点に注意して下さい(赤がFREEDOM、紫がITF-2です)。
 上の画像は地表300kmから500kmまで、下の画像は0kmから500kmまでで、データは同じです。
 FREEDOMはITF-2と比べかなり早く落下しています。
 ということで、とりあえずFREEDOMの軌道離脱装置(DOM:De-Orbit Mechanism)は動いているようです。もっとも、本来の性能が100%発揮されているのか、そうでないのかはわかりませんが。


 キューブサットの情報の少なさにモヤモヤしつつ、どこにもFREEDOMの事が書かれてないのでとりあえず書きなぐってみました。こういうのメーカーとか大学とかがやれよぉ。


 JS Orbitは軌道要素をチャチャッと地図に重ねて画像で保存するのに便利ですよ!(宣伝)

2017年1月19日木曜日

JS Orbitの更新

JS Orbitに背景画像を変更できる機能を追加しました。
何も操作しなければ以前と変更はありませんが、日時の入力場所が移動している点は注意して下さい。

今回の更新で背景画像を自前で用意できるようになったので、ユーザーが用意する画像なら、ライセンス的に微妙な物も使うことができるようになりました。といっても正距円筒図法の画像はあんまり多くない気がするし、満足する解像度のものとなるとさらに少なくなりますが。
それから、画像の横幅を設定する入力窓も作りました。いままではURL渡しだったので、解像度を変えたければいちいちリロードする必要がありました。ただ入力は数値専用なので、入力窓にwindowを指定しても狙った動作はしません。URLにwindowを指定して読み込めばウインドウサイズが変わる毎に画面の大きさも変わるので、とりあえずwmw=windowをデフォにして解像度は後から変更するのが便利かな、と思います。

とりあえず、地理院タイルのorz(衛星画像)を使って横3600pxのマップを表示してみました。



横幅3600pxはJS Orbitのデフォルトの2倍の解像度(面積比4倍)となります。コンステレーションとかも拡大して見えるようになります。といっても、いままでのマップでも拡大できてたので、あんまり利点はありませんが。

地図は国の戦略として作成されているものが多く、全球規模で高解像度かつ雲のようなノイズが少ない画像というのはなかなかありません。特に地理院タイルは日本国内の範囲を重点的に整備しているので、全球規模の画像はそもそもortしかありません。その点で言えば、グーグルマップってすげぇなと思います。

***

背景画像さえ自前で用意すればJS Orbitで使用できるので、自前で衛星を持ってる会社とか、衛星開発を行っている会社は、入り口にでも4kとか8kの大画面でJS Orbitをデデンと写して「ウチの衛星はここにいるんだぜ」みたいなアピールをすればいいと思います?。Webブラウザベースなのでたぶん安いスティックPCとかでも動くはずで追加費用も最小限!(動作確認してないので動かなかったらスミマセン)。
衛星運用者が使うとなると、衛星で撮影したリアルタイムな画像を読み込む必用が出てきそうですね。JavaScriptでリアルタイムに画像を読み込むってどうやるのが良いのかな。衛星ビジネスが広がるのに間に合うようにそのあたりも作り込まなくちゃ…

イリジウムとキューブサット #2

ブログに書いた途端名前が出てきました。

IRIDIUM NEXT SV106      
1 41917U 17003A   17018.36231207  .00000027  00000-0  00000+0 0  9992
2 41917  86.6677  84.6201 0008830 231.0145 129.0288 14.84016579   533
IRIDIUM NEXT SV103      
1 41918U 17003B   17018.36223442  .00000027  00000-0  00000+0 0  9995
2 41918  86.6696  84.6216 0008749 229.2769 130.7664 14.84048698   535
IRIDIUM NEXT SV109      
1 41919U 17003C   17018.36210895  .00000027  00000-0  00000+0 0  9994
2 41919  86.6694  84.6215 0008833 227.1338 132.9100 14.84100862   537
IRIDIUM NEXT SV102      
1 41920U 17003D   17018.36195797  .00000027  00000-0  00000+0 0  9999
2 41920  86.6699  84.6214 0009050 226.0698 133.9755 14.84163755   539
IRIDIUM NEXT SV105      
1 41921U 17003E   17018.36177215  .00000028  00000-0  00000+0 0  9996
2 41921  86.6695  84.6227 0009393 224.3830 135.6608 14.84240953   531
IRIDIUM NEXT SV104      
1 41922U 17003F   17018.36156617  .00000028  00000-0  00000+0 0  9990
2 41922  86.6657  84.6161 0009742 223.2959 136.7489 14.84326834   537
IRIDIUM NEXT SV114      
1 41923U 17003G   17018.36142856  .00000028  00000-0  00000+0 0  9991
2 41923  86.6641  84.6152 0010189 221.6199 138.4244 14.84383912   534
IRIDIUM NEXT SV108      
1 41924U 17003H   17018.36126712  .00000028  00000-0  00000+0 0  9995
2 41924  86.6655  84.6163 0010058 222.5908 137.4580 14.84452344   522
IRIDIUM NEXT SV112      
1 41925U 17003J   17018.36116815  .00000028  00000-0  00000+0 0  9999
2 41925  86.6662  84.6170 0010201 219.5815 140.4666 14.84492774   522
IRIDIUM NEXT SV111      
1 41926U 17003K   17018.76551015  .00000028  00000-0  00000+0 0  9999
2 41926  86.6671  84.4491 0010210 217.2358 142.8158 14.84532247   582
2017-003L               
1 41927U 17003M   17018.38036057  .00005438  00000-0  21054-2 0  9997
2 41927  89.9068 166.9576 0089791 211.3438 148.2602 14.27777592   522

JS Orbit


ITF-2                   
1 41930U 98067KS  17018.53276721  .00332830  00000-0  45127-2 0  9997
2 41930  51.6430  64.3435 0008288  74.5004 285.6914 15.55943298   229
WASEDA-SAT3             
1 41931U 98067KT  17018.21198326  .00008747  00000-0  13520-3 0  9997
2 41931  51.6419  65.9509 0009399  70.6502 289.5497 15.54917829   173
FREEDOM                 
1 41932U 98067KU  17018.14782296  .00010714  00000-0  16481-3 0  9991
2 41932  51.6430  66.2719 0007449  69.2057 290.9739 15.54785708   160
EGG                     
1 41933U 98067KV  17018.14785771  .00002405  00000-0  42660-4 0  9990
2 41933  51.6432  66.2740 0007769  62.7612 297.4146 15.54752807   165
TUPOD                   
1 41934U 98067KW  17018.21216078  .00003653  00000-0  61093-4 0  9995
2 41934  51.6402  65.9518 0009263  78.0382 282.1627 15.54732047   267
AOBA-VELOX 3            
1 41935U 98067KX  17018.21222619  .00004943  00000-0  80238-4 0  9999
2 41935  51.6422  65.9522 0006693  75.9465 284.2251 15.54692063   277

JS Orbit


 イリジウムは10機の名前が出ています。おそらくLがFalcon 9 R/Bだと思いますが、なんで名前ついてないんだろ。
 前回紹介したTLEではR/B(?)は衛星とほぼ同じ場所にいますが、今回のTLEでは衛星とはだいぶ離れた場所にいます。平均運動も0.56ほど違います。高度600km以上にしてはDragも大きいので、何らかの減速手段があるのかも。

 キューブサットの方は、5機が一塊、1機が先行しているような状況です。KSがそれですが、名前は前回の予想と異なり、ITF-2となっています。EGGやTUPOD、AOBAとくらべてDragが2桁ほど大きくなっていますが、ITF-2に減速手段のようなものは搭載されていないはずです。ITF-2は1回目放出グループですが、同時に放出されたWASEDAやFREEDOMはITF-2と違い、2回目、3回目、4回目とひとかたまりのグループとなっています。
 事前の情報によれば、FREEDOM以外は普通のキューブサットで、FREEDOMは放出後30分でDragを大きくするための膜の展開を行う、ということでした。FREEDOMは他の機材は搭載しておらず、ミッションの達成の判断は地上観測からDragを確認して行う、ということでした。その前提で言えば、Dragが2桁以上大きいKSがFREEDOMのはずですが、実際には異なる情報になっています。前例で言えば、キューブサットのIDと名前が放出後にコロコロ変わるというのは無くはないので、もしかしたら変わるかもしれません。(キューブサットはみんな同じような形状だし、予めRCSの精密測定とかもやってないでしょうから、地上レーダーから個別に判断するのは非常に難しいはずです)

 ということで、疑問が残る結果となりましたが、名前が出ての途中経過はこんな感じです。

2017年1月18日水曜日

イリジウム・キューブサット

 名前が出てからにすると言ったな。あれは嘘だ。

 最近こんな調子ばっかりですね。。

***

 まずイリジウムです。

2017-003A               
1 41917U 17003A   17017.57899505  .00000027  00000-0  00000+0 0  9995
2 41917  86.6680  84.9484 0008835 234.0187 263.9607 14.84016590   410
2017-003B               
1 41918U 17003B   17017.50436307  .00000027  00000-0  00000+0 0  9996
2 41918  86.6700  84.9807 0008753 232.4926 227.3472 14.84048504   408
2017-003C               
1 41919U 17003C   17017.57865630  .00000027  00000-0  00000+0 0  9999
2 41919  86.6697  84.9496 0008818 230.2099 266.8062 14.84100552   413
2017-003D               
1 41920U 17003D   17017.57885630  .00000027  00000-0  00000+0 0  9993
2 41920  86.6701  84.9491 0009052 229.1197 269.5957 14.84163542   414
2017-003E               
1 41921U 17003E   17017.57891256  .00000028  00000-0  00000+0 0  9996
2 41921  86.6697  84.9503 0009388 227.5116 272.2782 14.84240858   411
2017-003F               
1 41922U 17003F   17017.50385255  .00000028  00000-0  00000+0 0  9997
2 41922  86.6659  84.9757 0009739 226.4065 233.4208 14.84326853   403
2017-003G               
1 41923U 17003G   17017.50375748  .00000028  00000-0  00000+0 0  9994
2 41923  86.6643  84.9749 0010183 224.6100 235.2697 14.84384196   409
2017-003H               
1 41924U 17003H   17017.57109475  .00000028  00000-0  00000+0 0  9994
2 41924  86.6657  84.9475 0010052 225.5526 234.5977 14.84452793   400
2017-003J               
1 41925U 17003J   17017.57836038  .00000028  00000-0  00000+0 0  9997
2 41925  86.6665  84.9449 0010175 222.4349 276.9304 14.84493161   404
2017-003K               
1 41926U 17003K   17017.57828912  .00000028  00000-0  00000+0 0  9990
2 41926  86.6671  84.9467 0010162 221.4112 277.9671 14.84532336   401
2017-003L               
1 41927U 17003M   17017.61988723  .00000028  00000-0  00000+0 0  9993
2 41927  86.6644  84.9220 0010058 224.6476 135.3939 14.84388752   417

JS Orbit

 衛星が10機とR/Bを含めて11機です。今のところ全体的に一塊ですが、通信衛星として使う以上はある程度分散させる必要がありますから、これから移動するはずです。まずは衛星のシステムを立ち上げて、それぞれが正常なことを確認してから移動に入るのかな、と思います。

***

 さて、次にキューブサットです。

1998-067KS              
1 41930U 98067KS  17017.95464732  .00325713  00000-0  44798-2 0  9998
2 41930  51.6417  67.2329 0007822  70.6651 289.5001 15.55584022   132
1998-067KT              
1 41931U 98067KT  17017.95489692  .00016867  00000-0  25372-3 0  9996
2 41931  51.6424  67.2337 0009257  73.0121 287.1561 15.54923161   138
1998-067KU              
1 41932U 98067KU  17017.95501570  .00029840  00000-0  44475-3 0  9997
2 41932  51.6436  67.2362 0008109  64.9379 295.3500 15.54802664   137
1998-067KV              
1 41933U 98067KV  17017.95502292  .00038010  00000-0  56415-3 0  9996
2 41933  51.6432  67.2355 0008514  55.1435 305.0255 15.54790311   132
1998-067KW              
1 41934U 98067KW  17017.95504635  .00022724  00000-0  34123-3 0  9997
2 41934  51.6403  67.2351 0009549  78.9681 281.2141 15.54747425   229
1998-067KX              
1 41935U 98067KX  17017.95510838  .00027590  00000-0  41338-3 0  9992
2 41935  51.6415  67.2350 0007001  72.1050 288.0663 15.54711190   234

JS Orbit

 今回放出分は6機で、最初の3機、つぎに1機、1機、1機と、4回に分けて放出されました。
 1回目の放出が午後6時10分(JST?)、2回目の放出が午後6時20分(直前の放出から10分後)、3回目の放出が午後7時40分(80分後)、4回目の放出が午後7時50分(10分後)、となっています。
 JAXAが使用する放出機構(J-SSOD)は同時に12Uを捕まえておく能力があり、4x 3Uという組み合わせです。今回は1Uが3機、2Uが1機、3Uが2機という構成なので、J-SSOD1回分に収まりますが、同時に複数の組み合わせの放出を行わず、今回は10分間隔で放出しています。
 2回目と3回目に長い時間が空いているのがちょっと謎です。1回目と3回目の間が90分(軌道1周分)なので、ISSの位置と関係があるのかなと思いつつ、1-4回目の放出はすべて太平洋上で行われており、可視の陸地はほとんどありません。またインド洋上にいる、JEM(きぼうモジュール)と通信できる日本の通信衛星の可視圏からも離れています。もしかしたらNASAのTDRS-10あたりの帯域を借りてるのかもしれません。誰か詳しい人いたら教えてください。


 さて、キューブサットの軌道を見てみると、以下のようになっています。


 この図ではISSは左下から右上へ動いており、キューブサットはISSの前方にいます。これはISSから放出する際に、キューブサットを後ろ側へ投げているためです。
 地面にへばりついている我々からすると直感と反するかもしれませんが、軌道上から物体を後ろに投げると、自分と物体の相対速度はマイナスとなり、絶対速度は自分よりも小さくなります。速度が遅くなると軌道が下がるわけですが、軌道が下がるということは、軌道半径が小さくなるということです。半径が小さくなれば円周も小さくなります。衛星が遅くなった以上に外周が小さくなる影響が強いため、遅い衛星のほうが先行するようになるわけです。

 前に打ち出して加速したほうがキューブサットの軌道寿命は伸びますが、ISSとキューブサットはほぼ同じ軌道にいますから、キューブサットの軌道が下がってくればISSとキューブサットが衝突してしまう可能性があります。相対速度はかなり小さいですが、それでも1-3kgの物体がぶつかる可能性は排除するべきで、そのためISSよりも小さな軌道半径になるように、後方に打ち出しているわけです。
 衝突のイメージとしては、車に2リットルの飲料ペットボトルを放り投げる感じでしょうか。かなりヤバそうな気がしますよね。



 見づらい表で申し訳ないです。縦軸が平均運動、横軸が各衛星です。平均運動は上下逆で、上に行くほど数値が小さい(軌道半径が大きい)ということに注意して下さい。
 全体的にISSよりも平均運動が大きく、およそ1日に0.01周分くらい先行しています。3ヶ月でISSを1回、周回遅れにするくらいのほんのわずかな違いです。ただし、軌道半径が小さくなるほど大気の影響を受けてさらに軌道は小さくなります。

 TLEを見てみると、KSの1機だけ抵抗が一桁大きいです。まだTLEが出たばかりで誤差の可能性も排除できませんが、もしかしたら東北大のFREEDOMかもしれません。この衛星は放出後すぐに膜展開を行い、抵抗を大きくするようなミッションが行われているようです(と、どっかで見た気がするんですが、どこにも出てきません。キューブサットって情報が分散しすぎて欲しい情報が出てこない)。

***

 とりあえず、今のところはこのような感じです。もうちょっと経てば様々な情報が出てくることでしょう。

2017年1月17日火曜日

HIGH SCHOOL FLEET FAN BOOK

はいふりファンブック、やっと届いて、やっと読めた。いやー、良かった。

アニメの設定資料としてだけでなく、当時(WWII)の船を動かすためにどういう事が必用かとかの説明もあったりと、そういうあたりの資料としてもいいと思います。WWIIの船に興味あるけどいきなり軍事解説書は…みたいな層にも。やんわりと読めるので。

さんざん色んな所で書かれてるけど、やっぱ劇場版とかやってほしい。アニメの中でも出せてないシーンだって有るし、過去や未来に渡って様々なエピソードがありそうなので、そのあたりも含めていろいろな展開ができそう。


話の感じとしては、ミニスカ宇宙海賊(原作のラノベの方)に近いと思う。ヨット部と海賊の連携みたいなああいうノリでみんなでいろいろやってほしい。


春風クラスをインディペンデンス級に載せて機雷掃海手順を説明した同人誌とかも面白そう。ALMDSとかも飛行船に載せたりいろいろできるだろうし。


とかいろいろ妄想が広がりつつ。


2017年1月16日月曜日

SDR#で複数の周波数を同時に受信する

次はイリジウムだと言ったな。あれは嘘だ。もうTLEも出てるんですけどね。それぞれの名前が出てからにしようと思っています。

それとSS-520残念でしたねぇ。TRICOMのミッションは期待していたし、軌道を見るのも楽しみにしていたんですが。ISS放出とかでぜひやってほしいものです。ロケット側も、シリーズ化はしないと言っていましたが、実験的な挑戦はやめるみたいな風潮にならないようにしてほしいものです。

***

さて、本題。
せっかくのソフトウェアレシーバなので複数の周波数を同時に受信したい、ということで試してみた。SDR#を使ってあれこれやってみたが、「不可能ではないが実用的ではない」という感じ。もっとオフィシャルな方法で簡単にできるかもしれないが。


左下のExcelにおおよその設定を書いたが、まず1つ目のSDR#がハードウェアアクセスを担当する。残り2つのSDR#がそれぞれの周波数の復調を担当する。

SDR#のRAWはバンド幅が32kHzまでしか設定できないから、範囲に入る帯域しか受信できない。例えばFMラジオ放送は35kHzくらいの帯域幅が有るから、ギリギリ受信できないことはないが、音質は悪いし実用性もない。そもそも1chしか受信できなくなるからやる意味がない。

とりあえずアナログ特小トランシーバを2ch同時に受信することはできてるが、これが実用的かというとそんなことは全く無い。2chだけなら安いトランシーバを2台並べるほうが楽だし、ハイゲインアンテナを使いたいなら適当なワイドバンドレシーバでも並べたほうが良い。そっちのほうが使いまわしが効くし、自由度も高い。
ということで、実用性は全く無い。

ノンリアルタイムでかまわないなら1MspsでIQを保存して、あとからそれぞれのチャンネルで復調&音声に保存してミキサーに突っ込めばいい。もっとも、SDR#は32bitアプリなので2GBに制限されるから、あまり長い時間は受信できないが。はやく64bitビルド作ってくれ。


ということで、リアルタイムに複数チャンネル受信したいなら、必用なチャンネル分の広帯域受信機かワンセグチューナを買う必要がありそう。

せっかくのソフトウェア無線なんだから、アナログ特小20ch同時待機とか、いろいろできたら楽しいと思うんだけどねぇ。

2017年1月15日日曜日

メモ:C#で2GB以上のメモリ

* 追記:2017/01/17
あとで読み返したら数字とかいろいろおかしいね。やっぱ夜中に文章とか書くもんじゃない。以下参考程度に。
* ここまで


64bitビルドで、例えば構造体配列とかで全体が2GBを超えたい時に使うオプション。

<gcAllowVeryLargeObjects> Element

hoge.exe.configでconfiguration > runtimeにgcAllowVeryLargeObjects enabled="true"を追加する。

ただあんまり使い勝手は良くない気がする。


このオプションを追加した状態では、配列の最大長はUInt32.MaxValue(0x7FEFFFFF)まで、ただし任意の単一次元の最大は0x7FFFFFC7か0x7FEFFFFFに制限される、となる。
つまり、1次元配列の場合は0x7FFFFFC7くらいまで、多次元配列ならすべての要素数がUInt32.MaxValue未満まで、ということになるらしい。

例えば、new int[0x7FEFFFFF/2, 4]という配列は合計長が0xFFDFFFFCでMaxValueを下回っているために作成できるが、new int[0x7FEFFFFF/2, 5]だと合計長が0x13FD7FFFBとなり、作成することができない。

new int[UInt32.MaxValue]という配列を作ることはできない。これは「任意の単一次元は0x7FFFFFC7か0x7FEFFFFFに制限される」という点に引っかかるため。


この合計数は多次元配列にのみ課される制約であり、ジャグ配列には適用されない(多次元配列は[2,3]のタイプ、ジャグ配列は[2][3]のタイプ)。
int[][] arr = new int[0x7FEFFFFF][4];のような大きさだと合計は0x1FFBFFFFCになるが、問題なく作成できる。


前述のとおり、制限になるのは添字だけであり、配列を用意するためのメモリに制限はない。多次元配列ではUInt32.MaxValueが1つの制限となるが、ジャグ配列を使えば回避することができるし、構造体の配列であれば事実上無制限に大きなテーブルを作ることもできる。
とはいえ、実際に使用できるのはPCに実装してある容量の半分前後が目安となる。
僕のデスクトップPCは32GBのメモリを載せているが、使用するメモリが20GBを超えたあたりで実メモリのデータを仮想メモリ(ハードディスク)へ退避し始め、OSのパフォーマンスが極めて低下した。これはブラウザのスクロールがカクつくというレベルではなく、マウスを動かすこともできないレベルのパフォーマンス低下を引き起こす。


ということで、64bitOSで20GBくらいのメモリを専有するプログラムを作る方法はわかった。が、本来の目的である超高解像度Bitmapは結局無理っぽい感じ。いろいろ数字をこねくり回すと前述の数字に近いところが出てくるが、なんか腑に落ちない。とりあえずSystem.Drawing.Bitmapでは前回のエントリで書いた解像度の制限が消えることはないはず。

***

標高データのタイルを貼り合わせるのもだいたいやり尽くした感があるし、そろそろ違う何かで遊びたいなー。何ヶ月単位でやってない電子工作を久しぶりにやりたいところだけど、それには机の周り片付けるところから始めないといけないから、なかなか腰が上がらない。入手性が良くて安くてバカでも使える簡単なArduino非互換な.NetMFボードとかどっかにないかなー。


/*
気が付かなかったけど、これ書いてる途中にFalcon-9の打ち上げがあったのね。惜しいことしたなー。数日中に軌道要素が出ると思うので、次のネタは10機まとめて打ち上げられたイリジウムとTRICOMのTLEを貼り付けるだけの簡単な感じにできるかなー。さすがにSS-520の打ち上げまでには起きられない気がするので、そっちも含めてあとでアーカイブ見ようっと。
*/

2017年1月14日土曜日

画像ビューア

メインで使ってるデスクトップPCには画像ビューアとしてPicasaが入っていて、大抵の用事はこれで足りてる。が、今回、高解像度な画像を表示できない事が発生してきた。
具体的には、16384x16384(Zoom6の世界地図規模)だと問題ないが、23040x22528(Zoom10で日本全国規模)では表示できない。前者はPNGで100MBほど、後者は45MBほどなので、画像自体の容量とかは問題ではないと思う。もちろん圧縮データの大きさなんて比較しても意味ないのだけど。

PicasaはPNGの透過も扱えるので、1ピクセル32bitとして前者は、1GiBちょうど、後者は1.93GiBくらいある。Picasaは32bitで、使用できるメモリ量は2GBに制限されるため、画像データを展開するメモリを確保するだけでいっぱいいっぱいで、展開作業とか、画面への表示とかを行う余裕もないのだと思う。

ということで、1辺2^14ピクセル四方くらいの画像より大きい画像を開くには何か別のプログラムが必要になる。
画像ビューアとして快適かというと微妙なところだが、とりあえず手元にあるアプリではPaint.netが問題なく開けた。64bit版が入ってるので、CPU速度の制限程度しかない。ま、非圧縮時で2GBのデータを開くと考えれば妥当な待ち時間だと思う。

他に何か良いのないかなと思ってぐぐったところ、Honeyviewというアプリが出てきた。これも64bit版があり、大容量の画像を開くのは問題ない。ただし操作感がいままでに触ったことがない感じで、マウス操作の挙動も独特だから慣れるのが大変かも。



世間を探すと、学術目的の画像ビューア(というかデータビューア)があって、超高精度の美術品スキャンデータとかみたいなものを見る用途で有るらしい。僕の用途も高解像度地図を開きたいわけで、この方向性になる。詳しく調べてないけど、学術用途なりの値段がしそうだなーという感じ。
博物館が所蔵品の高解像度スキャンとかを一般に公開するような時代になれば、その流れで大容量画像を表示するソフトウェアも普及するのかもしれない。でも、表示手段がないから博物館が出し渋ってる、みたいな卵鶏問題になるのかも。
元データがどれくらいで、公開にあたってどれくらいリサイズされてるのかわからないけど、スミソニアンのデジタルアーカイブだと長辺3000pxくらいの常識的なサイズだった。表示手段が一般的でない以上はこれくらいが落とし所なんだろうなぁ。


ベントレー、530億ピクセルの超高解像画像を公開 - 【自動車業界ニュース】 - carview! - 自動車
530億ピクセルの正方形画像として、1辺23万pxくらい。とはいえWebブラウザで表示できる程度に(ものすごく)縮小された画像を見てるだけだし、必要に応じてトリミングしてリサイズした画像を出してるだけだろうから、高解像度って言うとなんかびみょーな気がする。
同様に、こういう話題性みたいなので出て来る高解像度画像はいくつか有るらしいが、たぶん似たようなもんだと思う。


とりあえず、比較的低解像度(非圧縮32bit/pxで1GB程度まで)はPicasaが操作性や動作速度ともに問題なし。それ以上になると読み込みに時間がかかるがPaint.netが優位、という感じかな。
Paint.netはスケーリング時にリサイズされた画像を生成するらしく、その時に引っかかりが有る。スケーリングしないでスクロールだけなら結構サクサク動く。ただしビューアじゃなくエディタだから、マウス左クリックとかすると書き込まれるという難点が有る。これは慣れるしかないかなぁ。


ズーム12で北海道地域を画像化すると横3万、縦2万くらいの解像度になる。z14だと1辺4倍で12万x8万くらい。かなりでかいね。未圧縮で8GBの画像データかぁ。それでも高精細デジタルアーカイブに比べればケタ違いに小さいらしいんだけど。


あと画像ビューアからは少し離れるが、C#を64bitビルドにしてもSystem.Drawing.Bitmapのライブラリは32bitに制限を受けてるっぽい。解像度が23170x23170までは問題ないが、23170x23171になるとコンストラクタで例外が発生する。前者は32bit/pxで1.9999918GiBくらい、後者は2.000004GiBくらいで、ちょうど2GiBの境目にいる。ちなみにFormat24bppRgbをコンストラクタに渡すと、24bit/pxになるため、26754x26754くらいまでは作成できる。微々たる違いだけど。64bitネイティブのコアライブラリってないのかね。せっかく画像データの大半が解像度を32bitで管理してるのに15bitも使えないなんて。
コレについてはもしかしたら32/64bitの話ではなく、C#の設定で逃げれるっぽいけど、長くなったので今日はここまで。

2017年1月13日金曜日

日本周辺の標高

前回(世界の標高)の続きです。前回は世界全体の標高だったので、今回は日本周辺の標高です。


全体的に暗いのが通常スケール、全体的に明るいのが対数スケールで着色した画像です。通常スケールでは標高の高い山脈等は綺麗に見えますが、平地のダイナミックレンジが狭いという欠点があります。逆に対数スケールでは比較的なだらかな場所でも標高の変化がわかりやすいのですが、山脈のような部分は一様に塗りつぶされてしまうという問題があります。平地を重視するなら対数スケール、山脈や直感を重視するなら通常スケール、という感じでしょうか。



この画像は一部をトリミングしたものになります。最初の画像と同様に通常スケールと対数スケールで、レンジは同じです。
通常スケールでは山脈の谷間が綺麗に見える一方で、関東平野のあたりは一様に塗りつぶされています。
逆に対数スケールは山脈の形状を把握するのは困難ですが、平野のわずかな凹凸を把握することが可能です。


もうちょっと細かいところまで見たいので、次はDEM10Bのデータを使ってみようかと思います。こっちはz14まであるので、今回の画像の64倍細かいところまで見えるはずです。データ量も凄まじいことになるんでしょうけども。


// 年明けてからこっち、真面目な話題ばっかりなので、そろそろネタに走った何かやらなきゃなぁ。。

2017年1月12日木曜日

世界の標高


地理院タイルの標高データを画像化してみました。この画像はz2で1024x1024です。とりあえずz6までは画像化してみましたが、z6ともなると16384px四方で、画像データのくせにPNGで70MBくらいあります。z7だとこの4倍、z8だと16倍になりますから、想像するのも嫌な感じです。単純計算でz8だと画像で1GBくらい、元データで16GBくらいになるはずです。

とりあえず一番目立つのはチベット高原だと思います。高解像度で見ると谷間がありますが、z2くらいだと全体的に高地になっている感じです。
他にはアンデス山脈なども目立っていますね。あとはグリーンランドが全体的に高い感じでしょうか。
一番想像を裏切るのが南極大陸じゃないかと思います。雪で均されているのか、とても均一に標高が高くなっています。南極には富士山より少し高いエレバス山という活火山がありますが、この地図ではちょうど右下の角のあたりになります。



z6から本州と北海道だけを取り出すとこのような感じになります。データの関係で九州と四国が本州と地続きになっています。

世界地図の標高と同じスケールなのでダイナミックレンジが狭いですが、なんとなく山脈が有るのはわかると思います。
富士山のあたりはピンで突いたような大きさで標高が高くなっています。しかし周辺の山脈も結構高いので、富士山だけ飛び抜けて高いという感じもありません。


普段は地図を標高で見るという機会は多くないので、こうしてみると色々と面白いものですね。

C#のConsoleにプログレスバー

C#のConsoleアプリで時間が掛かる処理を行う時にプログレスバーが欲しいので作ってみた。

static void SetProgress(int Value, int Max)
{
    Console.Write(Value + "/" + Max + " ");

    int w = Console.BufferWidth - Console.CursorLeft - 1;
    int p = ((Value * w) / Max);

    Console.Write("".PadRight(p, '*').PadRight(w, '-'));

    Console.CursorLeft = 0;
}

ControleのProgressBarと違ってMinimumは無いのでオフセットは各自で処理するように。
ループとかに入る前にはConsole.CursorVisibleにfalseを入れてカーソルを表示しないように、ループが終わったらtrueを入れてカーソルを表示するようにする。
プログレスバーを表示中には改行を行ってはならない。またSetProgressは改行を行わない。ループを抜けた時にはConsole.WriteLine();で改行すること。
プログレスバーの後ろに追加情報を表示する機能は実装していないが、プログレスバーの前に追加情報を表示することはできる。そういうことを行いたい場合はSetProgressを呼ぶ前にConsole.Writeを使って表示すること。重ねて言うが、Console.WriteLineを使ってはいけない。
ただしカーソル位置を呼び出し元で管理している場合は改行やカーソル位置の変更に制限はない。もっとも、プログレスバーの開始位置は任意なれど、終了位置は常に右端だから、コンソール内でGUIを作るにはあんまり向いてない。

当たり前だが、Paralell.Forとかの中で呼ぶとひどいことになる。シングルスレッドで使うことを前提としている。それからウインドウ幅(バッファ幅)が足りない場合の挙動とかは未確認。


たまに欲しい時にいちいちソースコード探すのが面倒なのでブログに貼り付けておく次第。

2017年1月11日水曜日

とりこむ

SS-520-4号機打ち上げの延期について

天候の関係で打ち上げが延期になってしまったようですね。

今更ですが、TRICOM-1(トリコム)の軌道のはなしとか。

SS-520-4はあんまり投入精度の高いロケットではないと思うので多少の数値の変動は有ると思いますが、予定では近地点180km、遠地点1500kmの楕円軌道に投入される予定です。他には軌道傾斜角が公表されていますが、こちらは射点の緯度である31度となっています。

さて、この近地点・遠地点だと、平均運動14.18で離心率0.091くらいの軌道と予想できます。その際の長半径は7211kmで、焦点は660kmくらいです。これを図にすると以下のような感じです。



外側の赤色の線が予定の軌道、内側の緑色の線が地球の大きさです。地球の外側の水色の線は高度250km付近です。実際はもっと複雑ですが、あくまで目安ということで。
左端が近地点、右端が遠地点で、近地点は高度250kmのよりも内側です(近地点高度は180kmですから当たり前ですね)。

さて、以前のエントリで紹介した図を以下に再掲します。



下から3分の1あたりに緑で線を引いてありますが、この高さが高度180kmです。1枚目の図で水色の線を引いた250kmは、この緑の線より少し上の部分になります。
この図はISSから放出されたキューブサットですが、TRICOMも3Uのキューブサットとほぼ同程度ですので、軌道の変化も近い様子になるはずです。
というところから考えると、近地点180kmのTRICOMは非常に素早く軌道速度を失うと思われます。
もっとも、TRICOMはある程度離心率があり、遠地点は比較的高高度にいますから、遠地点が300km程度までは近地点はあまり大きくは変化せず、離心率が小さくなってだんだん円軌道に近くなり、やがて全体的に高度が低下してくると思われます。


といっても、あくまで素人の予想なので実際にどうなるかはわかりませんが。
とりあえずは無事の打ち上げ成功を期待しましょう。その後1ヶ月程度で軌道の変化が目に見えてわかるでしょうから、その時にもう一度グラフを書いて確かめてみましょう。

2017年1月7日土曜日

メモ:NOAAのステータスと周波数

APTを送信しているNOAA衛星のステータスは以下のリンクに有る。
POES Operational Status - POES Status - OSPO

現在のところNOAA-15,18,19がGREENになっている。
APT(automatic picture transmission)の周波数もそのページに書かれている。
現在のところ、NOAA-15が137.62MHz、18が137.9125MHz、19が137.1MHzとなっている。


狭義の宇宙教育を行う上で、NOAA衛星はとても有用なツールだと思う。
というのは、一番簡単なところで「夕方にISSを見てみよう」を行い、そのすこし後くらいをターゲットに「じゃぁ衛星の通信を受信してみようか!」ということができる。そしてNOAAは日中に確実に上空を通るので、ISSのような時間帯の制限が少なく、また晴天でなくても全く問題ない。そして受信した電波は耳で聞くことができるし、画像として見ることもできる。

これが他の衛星の場合、例えばだいちのような衛星の場合、APTのような個人レベルで受信できるデータを送信していないから、イマイチ使いづらい。
比較的簡単に受信できる衛星としては、大学などが運用しているキューブサットが有るが、まず送信出力が弱いために受信するのが大変という問題が有る。正常に受信できたとして、それをデコードして得られるのはほとんどが衛星ステータスの情報であり、電池電圧とか温度だったりする。子供向けにそういうの説明するのもなぁ、とちょっと気乗りしない感じがある(APTであれば画像を見せればすぐに地図と照らし合わせて楽しめる)。

ということで、将来の宇宙に関わる人間を増やす上で、NOAAは非常に重要な役割を持っているので、なんとか長生きして欲しい衛星。後続のSNPPやJPSSはAPTの送信を行わないらしいので、2005年に打ち上げられたNOAA-19がいつまで生きながらえるかわからないけど、NOAA-15がすでに20年近いとして、それに期待すると2025年頃までは宇宙教育に使えるかな。その頃までには衛星打ち上げがもうちょっと身近になってて誰かがAPTみたいなのやってくれないかな。大学であの帯域幅確保するのは大変そうだなぁ。

***

ちなみに、だいちのような衛星が宇宙教育にどれくらい影響を与えているかというと、結構大きいな割合を占めていると思う。だいちやその他の衛星のデータを配布して遊んだりするプログラムは日本で行われている。
JAXA | 衛星データを体験学習プログラムに
ただホンモノの観測データなので、めちゃくちゃ容量が大きいのが難点。自分でプログラム作って処理したいとなるとちょっと敷居が高い。かといってAPTが処理しやすいかというとそんなことは無いのだけど。

2017年1月6日金曜日

ISSから放出された物体の軌道長半径グラフ

縦軸が20km/div、横軸が5day/divです。データは軌道長半径ですが、離心率が十分に小さいので実質的に地心からの距離として扱っています。グラフの下端が地表0km、上端が地表500kmです。手元にあるデータ量があまり多くないので、8ヶ月分くらいのデータ量です。それでも70機以上があるわけですが。
使用したデータは国際識別符号が98067で始まるすべての物体です。基本的にはキューブサットですね。

一般的に宇宙は地表100kmからと言われていますが、このグラフを見る限りでは300kmを下回ると急激に速度を失い、250kmを下回るとほぼ真っ逆さまという感じです。

このグラフでは左端の高度で2グループに分ける事ができ、下グループはグラフ内でほぼ全てが落下していますし、上グループはほぼ全てが未だに落下していません。
しかし、例外的に上グループで1個が落下し、下グループで1個が落下していません。
上グループで落下した衛星は「CADRA」という3Uサイズの衛星で、4枚のパネルを展開しているため、とても表面積の大きな衛星です。そのため空気抵抗が大きく、早々に速度を失ったと考えられます。
下グループで落下していない衛星は「SPINSAT」で、直径約55cm、重さ50kgで、キューブサットと比べて桁違いに重く、また球体であるために空気抵抗も少ないため、なかなか速度を失いません。といってもすでに300kmを下回っているので、あと半年から1年もあれば落下しそうな気もします。

ちなみに、CADRAは似たような発音の某ラノベに出て来る4つの武器を使うアレとは関係ないようです(ラノベの方はquadraあるいはquatreで「4」の意味)。CADREは「Cubesat investigating Atmospheric Density Response to Extreme driving」の略らしく、無理してつけたような感じがするので、quatreに発音が似るようにつけた可能性はありますが。
日本だとこういう遊びはやりやすそうですね。何かの頭文字を取ってきてDFMという名前にするとか。「闇の炎に抱かれて消えろ!」(再突入時のブラックアウト試験衛星)とか。

***

もうすぐ打ち上げ予定の衛星で「超低高度衛星技術試験機(SLATS:Super Low Altitude Test Satellite)」というものが有ります。高度180kmから270kmあたりを周回し、設計寿命は2年以上だそうです。さすがに質量が400kgもあればSPINSATのようにかなり長期間軌道に残ると思いますが、それでも200km未満ではかなり減速すると思われます。
そのため、SLATSにはイオンエンジンが搭載されており、それで加速することにより減速を防ぐようになっています。上のグラフでもISSが時々高度を上げており、これが「リブースト」と呼ばれる高度を維持するための加速ですが、ISSの場合には「化学ロケット」と呼ばれる高推力なロケットを使用しているため見てわかるほどに高度が上がっています。一方SLATSで使用するイオンエンジンはとても推力が低いので、いくらISSに比べて軽量とはいえ、見てわかるほどに一気に加速できるとは思えません。とはいえキューブサットであれば2日で20kmも高度を落とすところをSLATSが高度を維持して周回しているグラフは面白いと思います。

2017年1月4日水曜日

あけおめ

あけましておめでとうございます。親戚で集まったりとかそういうこと全くない家なので新年の実感が全くないですが。今年最初の食事がカップ麺だったりするくらいですからね。ぐぬぬ。

***

さて、今年最初の、宇宙の話題です。

新年早々、SpaceXがFalcon9の打ち上げを再開するという話が出てきました。
SpaceX、1月8日に事故後初のロケット打ち上げへ。イリジウム通信衛星10基を軌道投入 - Engadget 日本版
TLEウォッチャーとしては10機同時打ち上げは楽しみですね。

ついさっき、フェアリングに載せた衛星が公開されました。どこに10機も入ってるのか不思議な感じです。

その直後にはSS-520による小型衛星の打ち上げ実験も行われる予定です。
JAXA | SS-520 4号機実験の実施について


少し後にはH-2AによるXバンド衛星の打ち上げも行われます。
JAXA | H-IIAロケット32号機による Xバンド防衛通信衛星2号機の打上げについて


まだ細かい日程は出ていませんが、ISTも春頃に100kmを目指したロケットを打ち上げるようです。
民間による宇宙開発本格化へ 重要な挑戦相次ぐ年に | NHKニュース


そして、準天頂衛星システムも今年3機の打ち上げが予定されています。
準天頂衛星システムとは|準天頂衛星システム|準天頂衛星システム(QZSS)公式サイト - 内閣府


他に、国内だけでも観測衛星や情報収集衛星の打ち上げが予定されています。「宇宙」というとても広い分野のなかで、「ロケットの打ち上げ」という目の前で行われるイベントだけでも目白押しです。
今年はどんな1年になるでしょうか。