はじめに
こんにちは!GARDENsで地上局のソフトを主に開発しているmkytと申します!最初に
いくつか注意事項を列挙するので流しで良いので見ておいてください
- 記事投稿初なので生暖かい目で読んでいただければ幸いです。
- 筆者2号機所属なので筆者の知っている歴史は2号機からなので注意!
- ターゲットは、
宇宙...すごそう(・o・)
と思う高校生。技術的な話は要望があれば別記事で書くかも知れないしその専門の人が書くかも? - 全てのバージョンについては取り上げられないので詳しく知りたい人はコメントにでも書いておいてください
このサイトの読者層と一致しているのかという点については考えないことでクリa...
今回はタイトルにもある通りGARDENsにおける地上局ソフトの紆余曲折
を共有していきます。
この記事を読んでもらったGARDENs
の外部の方だけでなく、GARDENs
内部でも最新のGSはこうなっているのかという卒業された方とか、最初はこうだったのかという後輩の皆さんにもこれを読むことでGARDENs
の歴史の一部を知ることが出来ると思います!
まず、GARNDEs
とは何ぞやという方もいるかもしれませんので軽く説明させてください。
GARDENs
とは
千葉工業大学で学科を横断し1学年で1機の超小型人工衛星について、ミッション選定(やりたいこと)から設計、製造、手続き、運用までを経験し宇宙産業で活躍する高度技術者を育成することを目的としたプログラムになっています。
X - @CitGarndesを眺めてもらえば雰囲気が分かると思います。
実はですねぇ、ここGARDENs
では未知のことを研究して新たなことをするということはしないんですね~
未知への挑戦ではなく既知の技術を学び、それを確かにして確実に動くものを確実に動かすということを本質としています。
はっきり言って、就活でのガクチカアピールは強いと思います。
まぁ、残念ながらスタートして半分くらいしか最終的に残らないんですが...
ここで分かってほしいのは千葉工業大学で学科関係なしに人工衛星を作るこれだけでおk
地上局(GS)ソフトとは
地上局(Ground Station)とは文字通り地上にあるものなのですが、宇宙空間にいる衛星と地上は何かしらの方法(実用上無線しかないわけですが..)通信する必要があります。
残念ながら、ただ電波を受け取ったり出したりするだけでは通信が出来ないんですよねぇ
人工衛星は約90分で地球1周という驚異的なスピードで動いているのです!
こんなトンデモ速度だと、地上での常識が常識通じないところも出てきます。
そのうちの一つが電波のドップラーシフトです。
難しいから考えるの諦めようとしないで!戻ろうとしないで!
ちゃんとわかりやすく説明しますんで!
皆さん、救急車やパトカー、消防車など緊急車両のサイレンって聞いたことありますよね?
聞こえた音は一定でしたか?
止まっていたら一定?...あー聞こえない聞こえない
おそらく一定ではなかったと思います!
これがドップラーシフトです!
音のドップラーシフトだけどね
こういうことが、人工衛星相手だと電波でも起こるわけなので、制御が必要なんですねぇ
後は、電波を人工衛星にめがけて放ったりしたりするので、電波を出すアンテナを人工衛星の位置に向け続ける必要があるんですねぇ
必ずしも指向が必要ないだろと思ったそこのあなた
お口チャックでお願いしますね
なので、向きも制御が必要です。
さらに、通信するには衛星にやってほしいことや衛星の状態、衛星が撮った画像など、全て通信する為に必要な変換をしなければならないとかありますが、本題でちょくちょく出てくるかもしれないので後回しにしておきますね。
ここまでで、地上局の基本機能をお伝えしましたが、これが実現されるまでの試行錯誤の歴史をご紹介します!
紆余曲折の歴史1 ~2号機始まる前までのお話~
注釈でも言い訳させてもらった通り、筆者は2号機KASHIWAの所属なので2号機が始まるまでの開発がどうだったというのの詳しい話は曖昧です。
元々、千葉工業大学 GARDENsの衛星達は九州工業大学のBirds
が元になってます。
というわけで、衛星とセットでBirdsのソフト使えばいいと言われればそうなのですが、先輩達はBirdsソフトを元に自分達で作ることを決めたみたいです。
Pythonで...
え~っとですね、皆さんはこれまでで、日本語、英語を学んできたと思います。
コンピュータの世界にも日本語、英語のように数多くの言語があるんです。
そこで、先輩たちは何を思ったのか知らないですが、C#で書かれたBirdsのソフトをわざわざPythonという言語で作り直したみたいです。
聞いた話によると、地上局担当の先輩の1人がPythonを推していたかららしいです。
まぁ、推した先輩は途中で辞めたらしいですが
多分、外の人初公開だし、なんなら4号機以降の人も知らないと思うけどこれが、Python製の初代地上局ソフトです!
700行程度1つのファイルで作られていますね。
調べた限り最も初期のバージョンがこのソフトみたいです。
当時開発していた先輩に聞いたから間違いない...はず!
最初期のGSのmain画面(YMG_Operation_Demo_11.17.py)
最初期のGSのsub画面(YMG_Operation_Demo_11.17.py)
パッと見で使い方が分かる人はかなり少ないと思いますので簡単に説明しますね
- まず、ポート選択というところで使う機械を選んでconnectボタンを押します
断言しているけど恐らくそうであろうというだけ...
- subボタンを押して、COM、OBCのプルダウンメニューから衛星に送りたい命令を選んでFromを押します
- 押すと下の白い横長長方形に送るコマンドが表示されるのであっていたらset&clearボタンを押して右側の縦長の白い部分に表示されます
- 表示されたコマンドを選択してsetボタンを押す
- mainボタンを押す
- sendボタンを押す
- Send Commandと書かれた直下の白い部分に送信したコマンドが出てきてReceive Dataと書かれた直下の白い部分に衛星から送られてきたデータが見える感じです(多分...)
筆者自身もこの見た目のバージョンは見たことが無く、無駄にボタンを押す必要があったり、粗削りな部分が多くあると感じました。
コマンドを送るのに送るコマンド選択がsub画面で送れたのか確認するにはmain画面というところが大変そうですね...
そんなこんなで下のようなソフトが2号機KASHIWAの始まる段階で既にできていました。
%% YMG_Operation_Demo_ver2_R4_0306.py %%
YMG_Operation_Demo_ver2_R4_0306.py main画面
左上にmainとsubという画面切り替えボタンがあって画像はmainが表示されています!
上から送信したもの、受信したもの、送信予定のもの、後はいろんなボタンがあります。
Settingを押すと下のような衛星でやりたいことを指定することができます。
コマンドは全部セキュリティの関係で00になってますが悪しからず
YMG_Operation_Demo_ver2_R4_0306.py Setting command画面
画面を戻してsubの画面にするとこうなります。
YMG_Operation_Demo_ver2_R4_0306.py sub画面
ゴテゴテした機械と繋ぐ為の設定が並んでいます。
ソースコード(プログラム)を読むとツッコミどころ満載なんですがそれはいったんおいておいて、この段階で結構、画面の基礎ができていると思います。
皆さんも下まで読んでもらえば分かると思いますが、送信、受信、ボタン配置のおおよその配置は大きく変わっていないんですよね
使いやすいを追い求めて考えていくと自然と同じような形に行き着くというところですかね
技術的なツッコミに関しては要望があれば個別に...
紆余曲折の歴史2 ~KASHIWA始まって~
YMG_Operation_Demo_ver2_R4_0714.py main画面
YMG_Operation_Demo_ver2_R4_0714.py sub画面
間違え探しではありません!
受信画面に送信したものも表示するようになって画面がシンプルかつ背景が青みがかっていますね。
Command Listという文字が小さくなりましたね。
後は~ボタンが一列になっていたり、sub画面にRadio Makerというのが増えていますが小規模な改良にとどまっています。
そして、1号機YOMOGIとしてのGS開発はここでいったん止まっています。
そろそろ、2号機KASHIWA始まったのにKASHIWAのGSはどこに行ったのかという声が聞こえてくる気がするのでお見せします!
KSW_Operation_Demo_ver2_R4_0313 .py main画面
はい、間違い探しですね
- 左上の文字がKASHIWAになりました
- all clearというボタンが追加されました
後は何も変わらないですw
というか、2号機KASHIWAで地上局ソフト開発というのはあんまり行わなかったですね~
衛星開発の方に全集中していたかと...
ちなみに、同じころの3号機SAKURAでは...
SKR_GS_Operation_20230720.py main画面
SKR_GS_Operation_20230720.py sub画面
なんか増えてますね...
1号機YOMOGIと比べて
- 右側が色々違う
- ALL clearボタンの追加
右側はいろんな機能があるっぽくて説明が難しいんですけど
軽く触ってみた感じCMD selectってところの3つのプルダウンメニューを色々選択するとそれぞれにあう説明やパラメータの説明が日本語で
ハイテク!
尚、コードは脳筋な模様
なんで、2号機よりも後ろの3号機のソフトの説明が曖昧なのかというと
この頃の地上局ソフト開発はそれぞれが互いに1号機YOMOGIソフトを元にしてそれぞれが勝手に作っていたからですね
厳密ではないが大雑把に言うとということで
大雑把にはこんな感じ
all clearボタンがそれぞれで追加されたのはこの後の章を読めばわかりますのでもう少々お待ちください。
そして、そうこうしているうちに4号機BOTANもはじまり、、、
BTN_GS_Operation_20240706.py main画面
main画面の右側の衛星名がきちんとBOTANになっていることくらい?
見てもらって分かる通り4号機BOTANの地上局ソフトはSAKURA系の順当発展ですね
sub画面はSAKURAと全く同じなので割愛
背景桜色のままなのだがそれでいいのかBOTANよ
紆余曲折の歴史3 ~挑戦と挫折~
ここまで見てもらって、2号機KASHIWAの地上局ソフトはいったい何をやっていたんだとか、mkyt 仕事していないじゃんとか4Kモニタの作業場所よこせとか思った人もいるかもしれません。
実はですねぇ、あまり知られていないのですが、、、ものすごく作業はしていたんです...作業は(小声).......闇に葬られたものがあるんです。
せっかくなのでここで供養しておきましょう。
beta3.0 主画面
1号機YOMOGIからプログラムのコードの流用が一部あるものの一人で作って採用されなかった地上局ソフトですw
一応、PM(プロジェクトマネージャーというチームリーダーのこと)に2号機KASHIWA用のGSというか衛星が宇宙に行ったときに使える地上局ソフトを作れと下令があって作ってたんですね。
それで、一応組織化されました
- 1号機YOMOGIのGS担当1名
- 2号機KASHIWAのGS担当筆者ともう1人
ただグループは霧散して1人でコツコツと作ったのがこれでした。
はっきり言って高性能だったのは間違いないです。
ほとんどがYOMOGIからの系譜が無い新規のコードという
ただ、このコードはお蔵入りになりました。
Q.
何でこのコードはお蔵入りになったのでしょうか?
A.
- スケジュールに間に合わなかったから
- デザインがPMに一蹴されたから
1のスケジュールに間に合わなかったというのは簡単ですね...
基本中の基本だと思うかもしれません。しかしながら、当時の筆者はコーディングに夢中になり(新しいおもちゃを手に入れたかのように)新機能、新機能、新機能と機能の追加をして楽しんでしまったんですね。
そして、必要な機能が疎かになって、結果として使われなかったというのもあります。
2についてはPMさんひどいですねと言ってしまえばそれまでですが、フォローしておくといくつかの要素に分割できます。
- 従来ソフトとのデザインの互換性が低い
これが最も大きいと思っています。
これを読んでいる皆さん、昨日まで従来の見た目を使って今日からこの画面を操作してくださいと言われても困ると思います。
- こんな機能求めていない
プログラムを書いたことがある人に限らず、最新って響きいいですよね?自分がどんどん新しいことに挑戦して新しいことが出来るようになっていて使う人のことを考えていないものになってしまったんですね。
特にコマンド設定なんかはボタンを押して画面を変えてから操作して戻ってという余計な手間が増えたりしたのでしょうがない。
- 単純に気に入らなかった
この頃に2号機KASHIWA衛星の擬人化キャラであるかしわたんの最初の絵が出たりしてせっかくなら載せてやろうとしたり、筆者が単にダークテーマが好きだったりで黒をメインにしたりと好き勝手やってやっぱり使う人のこととか考えていなかったんですね。
ボタンがでかいとか色が嫌だとか、ごちゃごちゃしているとか、彼の感性で拒否られた感もするが...
うちのPMは我が強かったから...w
尚、ボタンが大きいのは見やすいかなと思ってあえてしたことだったりする。
結果として、このソフト自体が日の目を浴びることはありませんでしたが、このソフトで試した数多くの機能とそのソースコードはこの開発ののちにそれぞれのソフトに転用されて役立つこととなりました。
2号機は1号機から改良がほとんどなかったので、系統的にはYOMOGI系KASHIWAということになりますかね?
それで、3号機は1号機から大きな機能追加があったので、系統的にはSAKURA系となり、4号機は3号機の正統進化なのでSAKURA系BOTANということですかね?
ここまでが、最初に宇宙空間にたどり着いた2号機が宇宙に行く前、というか2号機KASHIWAや3号機SAKURAがきちんと動くように試験していたころまでに起きた出来事です。
紆余曲折の歴史4 ~運用に耐えられる地上局ソフトを!~
ここまで読んでくれた皆さんは既にこの記事で最初に言った地上局ソフトとしての機能を覚えていないかもしれませんが、続けますねw
これまでの地上局ソフトには最初に説明したドップラーシフトだったりを制御する機能が乗っていないんですよ!
今までは衛星が目の前にあって、目の前にある衛星を制御していましたが、これからは違います。宇宙です。数メートルが300~400kmです。何倍でしょうね?
そんなこんなで2号機KASHIWAが宇宙に旅立つ5か月前に地上局ソフトを強化しようという話になりました。
この頃になるともう余裕がないと背水の陣で開発が行われることになりました。
担当は
- 筆者
- 3号機SAKURAのGSを書いていたS氏
の2人になりました。
2人で作ったのは間違いのですが、共同開発ではないんですよね。
開発前半は、筆者大学4年生でしたので、卒論というものを何とかしなければならなかったので最初は開発をできず。
後半は逆にS氏が就活で開発できなくなったので2人だけどちょうど入れ替わるように作っていたので話し合ってはいましたが、共同ではないという...
そんな2人で作ったものがこれです!
一応、他の人が書いた部分もあったけど1パーツだけだったりするのでほぼ2人
GS_Software 1.6.4 共通(YOMOGI)
GS_Software 1.6.4 KASHIWA
GS_Software 1.6.4 SAKURA
GS_Software 1.6.4 BOTAN
今までのが嘘かのようにモダンな見た目になりましたね!?
開発時間がないくせに色々と見た目で遊んでいるというw
はい、開発期間は短く時間もあまりなかったものの、ここまで見た目も機能も仕上がっているのには当然理由があります。
それは、没になった例のアレがもとになっているからです。もちろん没になったものがそのまま使えたわけではないもののプログラムの書き方というか構築の仕方、どんな機能が必要か、機能を実現するためのプログラムなど多くが流用出来たおかげで、いいものになったし、結果として成功したソフトだと思っています。
ここにきて急に巻き返すというまさに $友情、努力、勝利$ えっ、違う?まぁいいや。
そんなこんなで、このソフトで2号機KASHIWAと通信して宇宙で撮影した地球の写真を撮ることが出来ました!
こうしてみると没が無ければその後に繋がらなかったということで、手を動かすに限りますなぁ
ただ、ここで止まることはありませんでした。このGS_Softwareシリーズにも問題があったのです。
GS_Softwareシリーズの問題
- ソフトが重い
- 稀にクラッシュする
- ボタンが反応しないときがある
- スパゲッティ
-
ソフトが重い
プログラム知っている人なら分かると思いますが、Pythonだったのでしょうがない。 -
稀にクラッシュする
プログラムに詳しい人なら分かると思いますが、tkinter並列とかで調べれば出てくると思います。(多分) -
ボタンが反応しないときがある
2と同じ。
というか、普通に困る。 -
スパゲッティ
プログラムをある程度書いたことがある人なら分かると思いますが、書く速度を最優先にした個人開発の中身がどうなるのかというのは(分かる人は)察してください。
分からない人は下の図を見ればなんとなく分かるかと
ストレートなプログラムの例
スパゲッティーなプログラムの例
スパゲッティーなプログラムの例みたいなことをすると、もうどこがどのような処理をしているのかわからなくなります。そしてわからなくなりました。(書いている当人たちは一応把握できているだけまし)
そんなこんなで、これ何とかしたいねと3月に完成させながら3月には次の作り直しの話をし始めていましたw
紆余曲折の歴史5 ~運用に耐えられる綺麗な地上局ソフトを!!~
という感じで作り直すことになりました。しかも、C#で、、、そうです。先輩方がC#からPythonにしたのにPythonからC#に戻したんです。とは言っても、ただ戻すだけでは経験にも、自分たちの使い方に合うようなものにならないのは火を見るよりも明らかなわけです。なので、新たなものも取り入れつつ。前回の問題点を改良したものを作ることにしたのです。
まず、スタート時点では
- 筆者 ソフトウェアの技術の管理や設計
- 3号機SAKURAのPM H氏 人員とスケジュールを管理し見た目も考える
- 3号機SAKURAのメンバーがプログラムを書く
という形で体制がスタートしました。
もちろん順風満帆ではありませんでした。
- そもそも設計ってなんやねん
- 複数人でプログラムを書くにはGitHubっていうのが良いらしい
-> でどう使うの? - どういう見た目がいい?
結果として大体こんな感じの期間がかかりました。
日付はアバウトです
- 3月~4月はほとんど情報収集と設計に費やしてプログラムは1文字も書いていないという状態でした。
- 5月になると大枠が決まって書けるところから徐々にメンバーが書いていき
- 7月には一通り出来上がり
- 8月1日に2号機KASHIWAを使って実際に使えるのかテスト
- 見事テストが出来たので不具合を直して
- 3号機SAKURAとの初交信を新しいソフトで迎えることが出来た!(やったぜ)
最新GS(開発中ver)のHome画面(fb60c6d3)
最新GS(開発中ver)のMain画面(fb60c6d3)
最新GS(開発中ver)のPort画面(fb60c6d3)
最新GS(開発中ver)のTLE画面(fb60c6d3)
そして、今はSupabaseというデータベースとの連携などを行うことで運用に耐えられるから、運用をより便利に出来るように開発が続いています。
また、きれいに整えたのはいいが衛星を作っている時に衛星を簡単にテストしたりする機能とか無線機とかを自動で繋げる機能とかがPythonからC#になる段階で消えちゃっているのでそういうのも追加しないとですね。
最新(2024/12/1)の開発史
最後に
このようにして、GARDENsの地上局ソフトは、挑戦と挫折を繰り返しながら進化してきました。
ここまででGARDENsにおける、地上局ソフトの紆余曲折をダラダラとお伝えしましたが、一番大事なことをお伝えします。
それが、最初から完璧ではなかったということです。
最新のと最初期のものを比べて最初期のものはどう思いました?きっと、ショボいとかダサいとか思った人もいるかもしれません。筆者もそう思います。しかしながら、とにかく手を動かして覚えて、挑戦して失敗してを繰り返し行って気がついたら最新のGSが出来上がっていました。この間、就職したり他大学に進学したりした先輩方がこの最新のGSを見て感嘆に浸っていましたが、筆者はまだアレもコレも出来てないという気持ちだったので驚きました。ですから、これを読んでくれた皆さんには是非とも、挑戦し失敗して学んでください。みっともなく足掻いてください。詳しそうな誰かを頼ってみてください。
きっと、その先に何かが得られるかもしれません。
GARDENs2号機KASHIWA所属で地上局のソフトを主に開発しているmkytがお送りしました。
ここまでの長文を最後まで読んでくださりありがとうございました!
更新履歴
日付 | 修正内容 |
---|---|
12/1 | 初版 |
12/1 | タグ修正 |
12/2 | GS_Software開発段階での開発史 画像添付の修正 |