2016-07-04 Juno木星軌道投入リアルタイムシミュレーション
§ 2016年7月5日 Juno木星軌道投入
日本時間 2016年7月5日午前11時30分(午前2時30分 UTC)、NASAの木星探査機Junoが木星の軌道に入ります。例のごとくJunoの現在位置を見られるサイトを作りました。
Juno Jupiter Orbit Insertion Simulation
http://www.lizard-tail.com/isana/orb/misc/juno_spacecraft/
WebGLというブラウザ上で3DCGを扱う技術を使っていますが、比較的最近のブラウザであればプラグインの導入などなしでそのまま動くはず(Chorome, Firefox推奨)。スマートフォンやタブレットでも動きます。マウスでの視点変更、スクロールホイールで拡大縮小ができます。左上の歯車アイコンの中に、時刻系の設定(後述)、各種の表示のON/OFFなどの設定項目が入っています。
当日はNASAなどでも中継が行われる予定です(後述しますが木星との時差に注意)。
NASA Updates Coverage for Juno Mission Arrival at Jupiter
http://www.jpl.nasa.gov/news/news.php?feature=6548
追記: 簡単なリピート機能をつけました。左上の歯車アイコン>時計アイコンをクリックすると出てくるリストから起動できます。リスト最上段の"Current(clear repeat mode)"で現在時間に戻ります
さて、せっかくなので、Junoのミッションと軌道投入のプロセスについて、まとめておきましょう。
§ Junoについて
Junoは2011年8月5日にNASAが打上げた木星探査機です。2013年の地球スイングバイを経て、約5年かけて木星に到達しました。Junoの主目的は木星の磁場と放射線帯の探査です。木星は太陽系で最も強い磁場と放射線帯を持っていますが、Junoはその内側まで侵入して探査を行います。Junoは木星表面(1気圧面)から数千キロまで接近します。かつてここまで木星に接近した探査機はありません。Junoは広報用の可視光カメラも積んでいますから、きっと驚くような映像を送ってくれるはずです。
外観上の特徴はその大きな太陽電池パネル。画面ではサイズが良く分かりませんが、機体の幅は約20mあります。探査機が太陽電池を持っているのは当たり前と思う向きもあるかもしれませんが、さにあらず。木星は太陽から遠く、太陽の光が非常に弱いんです。これまで木星に到達した衛星はすべて核物質の崩壊熱で電力を発生する原子力電池(原子炉ではありません)を搭載していました。太陽電池だけで木星まで到達したのはJunoが初めてです。
ちなみに、1枚の太陽電池の先についているのは、栓抜き....ではなく磁力計です。搭載機器などの影響をなるべく少なくするために、本体から一番遠い場所につけてあるんです。
シミュレーションの画面を見ると分かりますが、Junoは常にゆっくりと回転しています。これはスピン安定とよばれる姿勢安定方式。機体を回転させることで機体を安定させています。内部にリアクション・ホイールと呼ばれるジャイロを持たせて姿勢を制御する「3軸制御方式」に比べて機構がシンプルなのが特徴ですが、逆に細かな姿勢制御は苦手です。Junoの姿勢制御はすべてリアクション・コントロール・システム(RCS)と呼ばれる小さなジェットを吹かすことで行われます。
§ 木星との時差
木星は現在、地球から8.7億キロの彼方にあります。光の速度を使っても約48分かかります。つまり、我々が地球でJunoに起きていることを知ることができるのは、実際にことが起こった48分後ということになります。この、地球でJunoで起きていることを知ることができる時刻のことを ERT: Earth Receive Time(地球受信時間、地球時間)といいます。そして、探査機上で実際にコトが起きた時間をSCT: Spacecraft Time(探査機時間)といいます。遠方での探査機のイベントはこの2つの時間のどちらで表現されているかに注意が必要です。
上記のシミュレータは、デフォルトの状態では実時間で動いています。いま、この瞬間にJunoで起きていること、つまり探査機時間(SCT)です。一方、事前の情報などを見るとNASAの中継などは地球受信時間(ERT)で行われるようです(スケジュールがすべてERTで書いてあります)。そうしないと管制室での様子と、探査機のシミュレーションが合わなくなりますからね。
これだと中継を見ながら参照するのに困るので、上記シミュレータではERTで動くモードを付けてあります。左上の歯車のアイコンをクリックすると出てくる設定画面に”Earth Receive Time mode”とあるチェックマークを入れると、48分前の状態を表示します。また、同設定画面の時計アイコンをクリックするとSCTとERTの両方の時間で軌道投入のシーケンスが入れてあります(ただの表です)。メイン画面の右下の時間と距離の表示にも、ERTとSCTが併記してあるので参考にしてください。
§ 軌道投入のシーケンス
Junoの軌道投入当日のシーケンスは、投入の約2時間前から始まります。軌道投入に必要なプログラムはすでに探査機にアップロードされ、当日はほぼすべてがオートで行われます。なにしろ片道48分、往復で1時間半以上かかりますから、地球からのコントロールは間に合わないんです。
シミュレータでは以下のシーケンスのうち外から変化がわかるもの、姿勢の変更、回転数の変更、スラスタの噴射などについては再現しています(一部、姿勢やタイミングでNASAの資料などに記載がなく、予測に頼った箇所があります)。
軌道投入125分前(09:25 JST, 00:25 SCT, 01:13 ERT) :
Junoは軌道投入に際して、姿勢変更を行うため、一時的に地球との通信状態が悪くなります。それに先んじて、このタイミングで機体中央の転送量が大きく、指向性の高い高利得アンテナから、転送量が小さい代わりに指向性の低い中利得アンテナへの切り替えが行われます。また、ここから、機体の状態を表す"Tone(トーン)"が発信され始めます。これは探査機の状態を256種類の”音”で表現するもので、どんなに通信状態が悪くなっても探査機の状態を把握できるようにするものです。
軌道投入122分前(09:28 JST, 00:28 SCT, 01:16 ERT) :
ここまではJunoは太陽電池パネルを太陽に向けた姿勢を取っています。このタイミングで、Junoは軌道投入噴射に向けて機体の姿勢を変え始めます。最初はごくゆっくり、太陽から約15度離れる姿勢まで動かします。
軌道投入50分前(10:40 JST, 01:40 SCT, 02:28 ERT) :
ここから、姿勢変更の第2段階。15分ほどで軌道投入姿勢まで一気に姿勢を変更します。
軌道投入37分前(10:53 JST, 01:53 SCT, 02:41 ERT) :
ここから通信を中利得アンテナから、さらに指向性の低い低利得アンテナに切り替えます。
軌道投入33分前(10:57 JST, 01:57 SCT, 02:45 ERT) :
軌道修正で生じた振動を止める"nutation dumping"と呼ばれる操作を行います。
軌道投入28分前(11:02 JST, 02:02 SCT, 02:50 ERT) :
軌道投入噴射に向けて、姿勢の最後の調整が行われます。
軌道投入22分前(11:08 JST, 02:08 SCT, 02:56 ERT) :
この時点まで、Junoは2RPM、1分間に2回転する速度で回転しています。このタイミングで、軌道投入噴射時の姿勢の安定性を上げるために、約5分間かけて回転数を5RPMまで上げます。
軌道投入噴射開始(11:30 JST, 02:30 SCT, 03:18 ERT) :
軌道投入噴射の開始。一連のイベントはここが起点になっています。噴射は35分間続き、その間にJunoは480m/s減速します。木星の軌道に入るためには最低でも20分間は噴射が継続しなければなりません。何らかの原因でその前にエンジンが止まると、Junoは再び惑星間軌道へ飛んでいってしまいます。
軌道投入噴射から35分(12:05 JST, 03:05 SCT, 03:53 ERT) :
軌道投入噴射が終わる時刻です。
軌道投入噴射から37分(12:07 JST, 03:07 SCT, 03:55 ERT) :
5RPMで回転していた機体を、5分かけてふたたび2RPMまで下げます。
軌道投入噴射から49分(12:19 JST, 03:19 SCT, 04:07 ERT) :
約15分かけて姿勢を再び太陽に向けます。
軌道投入噴射から53分(12:23 JST, 03:23 SCT, 04:11 ERT) :
中利得アンテナに切り替えます。"Tone"が止められます。
軌道投入噴射から58分(12:28 JST, 03:28 SCT, 04:16 ERT) :
Junoは地上にテレメトリを送り始めます。おそらく地上でJunoの位置を正確に捉え、受信を始めるにはさらに20分ほどかかると予想されています。
§ 軌道投入後
この軌道投入噴射で、Junoは53.5日で木星の軌道を回る”Capture Orbit”と呼ばれる軌道に乗ります。この軌道を約2周した後、つまり軌道投入から107日後の2016年10月19日(日本時間翌20日)に軌道周期を下げるマニューバが行われます。これにより周期が14日の"Science Orbit"に入り本格的な科学観測が始まります。
§ ミッションの終了
探査機の状態によっては延長の可能性もありますが、現時点での予定では、Junoはこの"Science Orbit"を約33周した後、木星の大気内に落下させることになっています。これは、木星の周囲の衛星に生命の存在の可能性が指摘されているため、万が一探査機が落下して汚染してしまうのを防ぐためです。
2016-07-07 アクセス数についての技術的な話と情緒的な話
§ はじめに
まずは御礼を。Jono JOI Realtime Simulation には7月5日の木星軌道投入の当日だけで133の国と地域から約4万PVのアクセスがありました。こんなに沢山の人に見て頂けたのは身に余る光栄です。ありがとうございます。楽しんで頂けたのなら良いのですが...
さて、そのアクセスログを眺めながら考えたことを少し。
§ ページビュー(PV)
ある時期から、自分のサイトのPVを気にするようになった。作品には広告などは入れない方針なので、アクセスを増やすことにはさほど興味はない。でもアクセス数はけっこう気になる。一つは、純粋に技術的な問題で、サーバの転送量に制限があるから。もう一つは情緒的な問題で、自分の作品がどれくらいの人に受け入れられているのかを知りたいから。
§ 技術的な話
技術面は、かなり差し迫った問題。Junoのシミュレータは1アクセスあたりの転送量が5MBほどある。計算や表示は全てブラウザ側でやっていて、サーバには静的なファイルが置いてあるだけだから、問題は転送量だけ。とはいえ4万PVで転送量は170GBになる。借りているサーバ*1には一時的に転送量の上限を緩和する機能が付いているけれど、この数字は通常の上限の2倍を超えている。上限が緩和されているからといって、のほほんとしていられる数字ではない。
実は、当日のピークの時間は、アクセス数をリアルタイムでチェックしながら祈るような気持ちで増えていく数字を見ていた。ひとりでも多くの人に触れて欲しいと思う反面、エラーで誰かをがっかりさせているんじゃないかと思うと気が気じゃない。アクセス数が想定以上に伸び始めたら、データやテクスチャのクオリティを一段低いものに差し替えるつもりで身構えていたけれど、その手は使わずに済んだ。
今回はJunoの木星軌道投入というかなり注目度の高いイベントだった。これに耐えられたというのは良い知らせ。一方で、TwitterやFacebookなどで更に多くの有名アカウントに紹介されていたらこの数倍のアクセスが来た可能性もある*2。今回サーバが止まらなかったのはただの幸運だったかもしれない。
一番簡単な対策は、サーバを増強するという方法。要するにお金で解決する。商用Webサイトを考えれば4万PV/dayはさほど大きい量ではない。サーバを上位のグレードに上げる、あるいは専用サーバを借りるなどすれば何も気にしなくてもいい。とはいえ、こんなアクセスは年に数回しかないし、商売でやっているわけでもないから、できればコストを掛けずに知恵と勇気で乗り切りたい。
転送量を減らすためにやれることはまだいろいろある。スクリプトはもう少し圧縮できるし、画像のクオリティも改善の余地はある。アルゴリズムを工夫すればデータ量ももう少し減らせる気がする*3。ただ、それで2倍には耐えられるようになるかもしれないけれど、おそらく10倍には耐えられない*4。今回くらいのアクセスでも、おそらく何日も続けばサーバは止まる*5。そろそろ、その先の手を考えておく必要があるかもしれない。
*1 さくらインターネットの共用サーバ
*2 あかつきの軌道投入の時に、あかつきの公式アカウントとNASAのキャンベラ深宇宙通信局に紹介された途端にいきなりアクセス数が倍に跳ね上がったことがある
*3 これはクライアント側での計算量がさらに増える可能性があるので実行速度とのトレードオフになる
*4 実は、GoogleSatTrackは30万PV/dayに達したことがある。ただ、GSTは一人あたりの転送量は数百kBしかない。こちらの問題は転送量ではなくGoogleMapのアクセス数制限
*5 かつてUARSやROSATという衛星が地上に落下するという話が話題になった時は、GoogleSatTrackへ万単位のアクセスが数日間続いた
§ 情緒的な話
問題という言い方は少し変かもしれない。ようするに、沢山の人に見てもらえてとても嬉しい、という話。前にも同じようなことを書いた気がするけれど、何度でも書いておく。これは絶対に忘れてはいけない話なのだけれど、気を抜くとすぐに忘れてしまうから。
4万PVという数字は、上のように技術的に見れば、ただのサーバへの負荷でしかない。どうやって大量のアクセスを捌くか、どうやってサーバへの負荷を低減するか、そのための指標になる数。でも、実際には、その数は誰かが自分の作品を見るためにページを開いてくれた回数だ。そう考えると133ヵ国、4万PVというのは気が遠くなるような数だ。
これを書いている今も、あのページには常時数十人がアクセスしている。アメリカの西海岸からスマートフォンでアクセスしているこの人はどんな人なのだろう?まて、ロンドンは真夜中じゃないか、こんなページ見てないで早く寝たほうがいいよ。ロシアは今は朝、もしかしたらJunoの話を今朝はじめて知ったのかもしれない。おはようございます。昨日すごいことがあったんですよ...その1クリック、1クリックの裏に誰かがいて、それぞれにバックグラウンドがある*1。みんな楽しんでくれただろうか?がっかりしたりしなかっただろうか。できればみんなにありがとうをいいながら握手をしたいくらいなのだけれど...
あるいは、ログファイルを見ていると、たまたまアクセスが重なって503(アクセス過多)のエラーが出ていることがある。データ上はただのエラーコード。でも、これはクリックしたにも関わらず誰かがサイトを見られなかったということだ。ああああ、ごめんなさい、ごめんなさい。どうかあきらめないで、もう少したってからまたきてね(´・ω・`)ノシ
いつからか、これは何かを作る上でのモチベーションというだけでなく、作品そのものの根幹を形作るようになった。
だいたい僕の作る作品は、いつも機能がすごく少ない。それは技術が追いついていないというのが半分だけれど、もう半分は意図的なもの、見ている人の想像力を邪魔したくないからだ。ふとしたきっかけでこのURLに出会い、なにげなくクリックする。100人いれば100通りのJunoとの出会い方がある。そのときの体験を、あるいはその時の思いをなるべく邪魔したくない。日常の体験の中に、するりと入り込むようなものでありたい。
だから、誰もが日常的に使うブラウザじゃなきゃいけないし、そのために何かをインストールするのでもいけない。いちいち前置きはいらないし、画面に余計なものはいらない。極力シンプルで、簡単で、でも見聞きする話と違和感がないくらいには正確でなくちゃいけない。ブラウザでURLを開くだけで、たとえば星空を指差すように、探査機の今いる場所がわかる。僕が作りたかったのはそういうサイトだ。
そうあれかしと願っているけれど、思い描いているものが、どこまで実現できているかはよくわからない。でも、こうやってアクセスログを眺めていると、少なくとも自分のしようとしていることは間違っていないと信じることはできる。
あの日、少なくとも数万の人達が、あの作品を通じて、人類が木星に探査機を送り込むのを見守っていた。そのことを心から誇りに思う。そのひとつひとつの体験が少しでも豊かなものであったことを願いたい。
最後にもう一度お礼を。ありがとうございます。また何か作ります、これからもどうぞごひいきに。
*1 いちおうBotはアクセス統計からは排除されているので、これらはちゃんと「誰か」である可能性が高い
> nanasi [仕事中でしたがスマホで見てました。 何億キロも離れた所と同じ景色が小さな携帯画面でリアルタイムに再現されていると思う..]
> Makoto [宇宙旅行や「銀河帝国の興亡」の世界に行けるので,少年時代に空を見上げていたとき以上にドキドキする時間を持てます。 ..]
> isana [ありがとうございます!楽しんでいただけたのなら何よりです。現状では時間の流れ方を変えるのはシステム的に難しいですが、..]