SMACHについて
SMACHが有効に使える場面
SMACHは複数の複雑なプランの中で全てのステートとその遷移を明確に記述できるものをロボットに実行させたい時に有効です。This basically takes the hacking out of hacking together different modules to make systems like mobile robotic manipulators do interesting things.
- ファスト・プロトタイピング: pythonベースの簡潔なSMACH文法によってステートマシンを手早く試作し、簡単に実行することができます。
- Fast prototyping: The straightforward Python-based SMACH syntax makes it easy to quickly prototype a state machine and start running it.
複雑なステートマシン: SMACHは巨大で複雑な階層構造を持つステートマシンを設計、維持、デバッグすることができます。ここからその例を確認することができます。
リフレクション: SMACHではステートマシンやその遷移、データフロー、その他を全て自己透過的に見ることができます。詳しくはsmach_viewerを見てください。
SMACHを使わないほうがいい場合
- 構造的でないタスク: タスクのスケジュールが構造的でないほどSMACHのもつ利点を活かしにくくなります。
ローレベルシステム: SMACHは高効率の要求されるローレベルなシステムのためのステートマシンを扱えるように設計されていません。SMACHはあくまでタスクレベルのアーキテクチャです。
Smash: 何かをSmashするのにSMACHを使わないでください。代わりにこちらを使うべきです。:Smash
SMACHは単なる有限ステートマシンライブラリなのか?
SMACHを使って有限ステートマシンを構築することはできますが、それだけではありません。SMACHはタスクレベルの実行、調整ライブラリであり、ある種「ステートコンテナ」としての役割を果たします。そのコンテナのひとつは有限ステートマシンであり、また他のコンテナの一つのステートでもあるのです。複数のコンテナとステートがSMACHとして構築されているチュートリアルをご覧ください。
ドキュメント
ドキュメントページではSMACHで用いられる概念についての概略がまとめられています。
チュートリアルページでは素早く目的のステートマシンを構築し、実行するための様々なチュートリアルがあります。