FIROSOPHY(フィロソフィ)は,RTシステムの自動的なつなぎかえを行うことで,モードの切り替え,エラー処理,状態遷移とシナリオ実行を可能とするツールです.
デモ動画
FIROSOPHYの紹介
ロボットの動作モードを,システムのつなぎかえで実現する例です.
シミュレータ上のバッテリ電圧を監視するコンポーネントの状態変化をトリガとして,システムを切り替えます.
入力ポートのデータがある値よりも低いとINACTIVEになる「FloatLessThan」およびその逆の「FloatGreaterThan」を使い,バッテリ電圧が低い時は,ロボットのエネルギ元のキノコ(Fungi)を収集し,バッテリ電圧が十分の場合は鉱石(Ore)を収集します.
ロボット本体(シミュレータ)には,キノコの方向を表すポートと,鉱石のポートを表すポートがあるので,コントローラの目標進行方向をどちらの値にするか否かでロボットの行動を決定しています.
では動画をどうぞ.
FIROSOPHYの使い方
FIROSOPHYの基本的な使い方です.新しいバージョンは若干異なりますが,コンセプトを理解していただけると思います.
では動画をどうぞ.
FIROSOPHYの使い方その2
FIROSOPHYを使って,エラー処理をする例です.
システムを構成するRTコンポーネントの一つがERROR状態になった場合,すぐにコンポーネントをリセットする処理を加えています.
たとえば,ロボットが転倒した場合に,転倒検出コンポーネントの状態監視をして回復処理をするためのシステムに再構成するなどの処理も可能でしょう.
では動画をどうぞ.
概要
FIROSOPHY (FInite RObotics System OPeration Handler by Ysuga) は,ロボットの動作制御プログラム資産の経年劣化を抑えるための,モデルドリブンなアーキテクチャー (Model Driven Architechture, MDA) を提供するためのソフトウエアです.
ロボットのハードウエアに依存した下位層のプログラムは,RTミドルウエア (RT-middleware, RTM) によって抽象化されます.さらに,RTミドルウエアの連携制御をおこなうプログラムもRTミドルウエアによって記述されます.
しかし,より複雑なシステムの記述のためには,RTミドルウエアの枠組みのみでは,サービスを指向した動作シーケンスを記述するには不十分です.
現状のRTミドルウエアの枠組みで多くのロボットが下図のような一点集中型の制御システムを採用しています.アクチュエータや音声合成などのモジュールのコンポーネント化は進んでいますが,サービスという単位で考えた場合,中央のコントローラRTCがすべてをつかさどっており,サービスの詳細に変更があった場合は,コントローラの内部の記述にあるシーケンス自体を設計しなおすことが必要です.
FIROSOPHYでは,ロボットの制御を有限状態マシン(Finite State Machine, FSM)として記述します.それぞれの状態 (State) をロボットの動作要素 (Motion Premitive) とし,その遷移 (transition) によって上位の動作シーケンス (Task Sequence) を記述するのです.
各状態はRTミドルウエア上の接続状態,すなわちRT Systemとし,状態遷移はその繋ぎ替えと活性化(activate)/不活性化(deactivate)に相当します.つまり開発者は,リーチングや歩行,しゃがみなどの単一(one-shot),もしくは周期的な(cyclic) 動作を行うRT Systemを用意し,それらのRT Systemをつなぎ合わせることによって,上位のタスクを実現することができます.
これにより,歩行やリーチングなどの動作単位での再利用性が増します.また,歩行時の安定制御と直立時の安定制御で異なる場合,各状態での制御の切り替え,起動/停止などが行え,CPUのリソースの無駄を省くことが出来ます.
さらには,ロボットのハードウエアが異なる場合においても,サービスの提供を行うための動作シーケンスの部分のみを抽象化して扱うことが出来ます.つまり,目的地への移動が,歩行であるか,タイヤでの移動であるか,FIROSOPHY上の記述ではハードウエア部分に依存することが無くなります.こうしてハードウエアに依存する下位層に依存することなく,サービスの本質が記述されているモデルの開発資産を保つことが出来るのです.
ダウンロード
これらのソフトウエアのライセンスはGPLv2です.他の形式を希望の方はコメント欄にどうぞ.
FIROSOPHYは以下のパッケージに分割して開発しています.
すべてのファイルにEclipseのプロジェクトファイルが追加されていますので,Eclipseにインポートしてください.EGitを使うと便利です.
OpenRTSystemBuilderはOpenRTM-aistが必要になるので,プロジェクトのビルドパスをOpenRTM-aist-Java***.jarと,付属してるcommons-cli-***.jarに設定してください.Windowsのインストーラでインストールすると,C:\Program Files\OpenRTM-aist\1.0\jarの中にあります.
OpenStateMachine
有限状態マシンを構成するためのライブラリで,FIROSOPHYの根幹です.
各イベントにおける処理の追加や,ガードの追加がしやすいように工夫してあります.
http://github.com/ysuga/OpenStateMachine
OpenStateMachineUI
有限状態マシンのライブラリを表示するためのパネルが中心です.
http://github.com/ysuga/OpenStateMachineUI
OpenRTSystemBuilder
RTシステムを構築,変更,破棄するためのライブラリです.RT System Editorと同じ形式のXMLファイルを編集できます.
OpenRTM-aist-Java-1.0に依存しています.
http://github.com/ysuga/OpenRTSystemBuilder
FIROSOPHYEngine
OpenStateMachineとOpenRTSystemBuilderを合わせたライブラリです.FIROSOPHYの処理エンジンで,GUI無しでも動くことを目指しています.
http://github.com/ysuga/FIROSOPHYEngine
FIROSOPHY
FIROSOPHYを使うためのGUIです.なるたけリッチなシステムを目指しています.
http://github.com/ysuga/FIROSOPHY
Under Construction…