概要
Aquariumの制御にはPythonスクリプトを用いる.
Pythonスクリプトの役割は
- ゲームパッドからの入力を判断・処理
- 画面の描画
- モータやサーボの制御
である.
構造
一つのスクリプトは,Aquariumのタスクシステムの一つのタスクに対応する.
各タスクの処理は,処理フェーズと描画フェーズに分かれており,それぞれタスクの優先順位で各フレームごとに1回呼び出される.
各フェーズの処理内容は,Pythonスクリプト内の関数として表現され,処理フェーズはOnMove関数,描画フェーズはOnDraw関数に対応する.
その他,Aquariumがスクリプトから情報が必要な際も対応する関数が呼び出される.
下にスクリプト側の関数と,その役割を示した.
関数名 | 役割 |
OnMove | 処理フェーズの処理を行う |
OnDraw | 描画フェーズの処理を行う |
GetPriority | タスクのプライオリティを返す |
GetName | タスクの名称を返す |
処理フェーズと描画フェーズの違いは,処理フェーズは必ず毎フレーム呼び出されるのに対し,
描画フェーズはフレームレートが低下してきた際に,フレームレートを確保するため省略される可能性があるところである.
対象のスクリプトがロードされる前に,ます,AquariumはTPIP.pyをロードし,その後,対象のスクリプトをロードする.
そのため,対象のスクリプトからTPIP.pyに定義されている関数を呼び出すことが出来る.
TPIP.pyに定義されている関数の詳細はAquariumのアーカイブ内にdoc/base/index.htmlとして同梱してある.
グローバル変数
Aquariumは,スクリプトからAquariumの機能を利用するために幾つかのオブジェクトをグローバル変数としてスクリプトに渡す.
以下にグローバル変数の名前と役割を示した.
変数名 | 役割 |
me | スクリプト自身のタスクを表すScriptTaskオブジェクト |
context | Aquariumの現在の実行コンテキスト.次の節で詳細を説明する. |
コンテキスト
Aquariumは現在の実行コンテキスト,すなわち,入力デバイス,画面,I2Cデバイス,TPIPといったものを
TaskContextクラスのオブジェクトとして保持している.
スクリプト側からはcontextという名前のグローバル変数を通じてアクセスできる.
TaskContextについての詳細は,Aquariumのアーカイブ内にdoc/TPIPAquarium/index.htmlとして同梱してある.
|