# WIP: Rocatの機能まとめ ## ドキュメント概要 Rocatは数種類のセンサを搭載したペットボトルロケットと、それを制御するアプリケーションからなるSTEM教材である。 その機能は主に * 環境計測 * パラシュート展開 * ビジュアルプログラミング * 計測データ可視化 に分かれている。 このドキュメントでは、プロジェクト参加者がこれらについて概要を理解できる程度に説明を行う。 また、それぞれの機能の実装の詳細について多くは触れない。 ## 環境計測機能 Rocatで使用されるペットボトルロケットには、いくつかのセンサーが搭載され、それらは一つのマイコンによって制御されている。 ### センサー一覧 * 気圧センサー * 気温センサー * 加速度センサー(3軸?) ## パラシュート展開 ペットボトルロケットをゆっくり降下させるために、上空でパラシュートを展開する。 そのために、ロケットにはサーボモーターが搭載されており、任意のタイミングでパラシュートを展開できるようになっている。 ## ビジュアルプログラミング BlocklyというGoogle製のビジュアルプログラミングツールライブラリを使用している。 本機能では、上記の環境計測やパラシュート展開の制御をプログラミングの対象としている。 例えば、「2秒に1回速さを取りたい」や「発射してから3秒後の高さを取りたい」などの要求に応じて、利用者はプログラミングを行う。 ![](https://i.imgur.com/M377LV7.png) ### ブロックの種類 if文やwhile文に相当するブロックももちろんあるが、そこは省略して、環境データ計測に関するブロックだけ列挙する。 - 気圧を計測 - 気温を計測 - 湿度を計測 - 加速度を計測 - 角速度を計測 - 機体の傾きを計測 - 高度を計測 - 時間を計測 - タイマーリセット - パラシュートを開く - パラシュートは開いているか - 着地しているか - 次の秒数待つ - 表示する ### プログラムの実行 左上の実行ボタンを押すとプログラムが実行される。 ## 計測データ可視化 ロケットが計測した環境データをグラフ化する。 グラフは二次元の散布図となっていて、軸の値は好きに選ぶことができる。 ## 各機能の協調 この項では、上で説明した4つの機能がどのように協調するのかを説明する。 ### プログラミングによる環境データ計測 Rocatでは、PCでプログラミングをした結果、環境データを計測し、更にそれをグラフ化することができる。 まずはプログラミングによる計測がどのように実現されているかを説明する。 前提として、PCとロケットは、xbeeという無線通信モジュールによって常に通信を行っている。 xbeeはPC側のUSBポートと、ロケットの制御基板にそれぞれ搭載されている。 ロケットの制御基板の電源を入れた際、プログラムはPCからの命令待機状態になる。 この命令をプログラミングするのがビジュアルプログラミングツールである。 内部的には、ユーザーによって置かれたブロックからJavaScriptのソースコードを生成する仕組みになっており、それらがロケットへの命令送信を担っている。 このような仕組みによって、制御基板へのプログラムの書き込み無しに、計測及びパラシュート展開のプログラミングを行うことができる。 ### リアルタイムなデータ可視化 上記のように計測されたデータは、PC側でリアルタイムにグラフ化することができる。 そのためには、まずロケットの制御基板が命令によって計測したデータをPCに送り返す。 PCはそれを受け取って、DataStoreという層でそれを保持する。 ユーザーは任意に軸を選んで、DataStore上のデータをグラフ化することができ、さらに通信中はDataStoreの内容は変化するため、リアルタイムにプロットされる。