スクリプト

概要

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オブジェクト
contextAquariumの現在の実行コンテキスト.次の節で詳細を説明する.

コンテキスト

Aquariumは現在の実行コンテキスト,すなわち,入力デバイス,画面,I2Cデバイス,TPIPといったものを TaskContextクラスのオブジェクトとして保持している. スクリプト側からはcontextという名前のグローバル変数を通じてアクセスできる.

TaskContextについての詳細は,Aquariumのアーカイブ内にdoc/TPIPAquarium/index.htmlとして同梱してある.


Comments