eSEATManageによるeSEATコンポーネントの生成
Simple Wiki Based Contents Management System
ソフトウェア関連 >> RTコンポーネント関連 >> eSEAT2 >> eSEATManageによるeSEATコンポーネントの生成

eSEATManageによるeSEATコンポーネントの生成

eSEATの起動は、通常、
# python eSEAT.py <seatmlファイル>
で起動します。eSEAT.pyの中では、
if __name__=='__main__':
    seatmgr = eSEATManager()
    seatmgr.start()

    print "...Terminate." 
    if seatmgr.run_as_daemon:
      os._exit(1)
    else:
      sys.exit(1)
と記載されています。
すなわち、eSEATでは、eSEATManagerのインスタンスを生成して、start()メソッドを呼び出して、eSEATを起動しています。eSEATManagerのインスタンス生成時には、
  • 引数(オプション)の解釈 (parseArgs)
  • OpenRTM_aist.Manager.initをコールして、eSEATのRTCマネージャーを生成し、self.managerにセット
  • RTCマネージャーに自身の初期化プロセス(self.moduleInit)の登録し、RTCマネージャーをアクティブ化。RTCは、このマネージャーのアクティブ化を行ったときに、初期化プロセスをコールし、インスタンスが生成されます。
  • 最後に生成したeSEATコンポーネント(インスタンス)に名前を設定する。
という処理を行います。
eSEATの初期化プロセス(moduleInit)は、通常のRTCの生成とほぼ同じで、
  • プロパティのセット(eseat_specで定義されています)
  • RTCの生成
  • 引数で指定したseatmlファイルの解釈を行い、ポートおよび内部の状態の生成、ルールの登録、周期処理の登録等
を行います。
start()メソッドは、eSEATがGUIパーツを持っていれば、RTCのマネージャーの周期処理をバックグラウンドで起動して、Tkinterのイベント処理ループを起動します。GUIを持たない場合には、RTCマネージャーの周期処理を起動しますので、GUIを持つかどうかでフォアグランドの処理ループが異なることに注意してください。
では、次に、eSEATの初期化プロセスで呼び出されるseatmlファイルの解釈について説明します。