cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

ロボットの状態遷移の管理のために、ofxStateMachineを使ってみる

ロボットの上位の動作計画は、しばしば状態遷移図を用いて管理されます。状態遷移の実装は、単に条件分岐を並べてプログラムを書くだけでも構わないので難しく考える必要はないのですが、整理整頓が苦手な人が規模の大きなプログラムを書こうとすると、あっという間に読めないソースコードが出来上がります。そこで、プログラムを見通しよく書くための道具として、状態遷移を管理するクラスofxStateMachineの導入を検討してみます。

状態遷移の実装

[5]の文献によると、「イベントドリブン型(E型)」と「ステートドリブン型(S型)」の実装方法が紹介されており、いずれも新しい状態の追加が簡単に行える利点があります。ofxStateMachineは各状態を一つのクラスにして書きます。

*1

 ofxStateMachineのインストール

いつものopenframeworksのaddonをインストールする手順で、exampleを動かせるようにします。

  1. [2]から、ダウンロードして、addonに抛りこみます。
  2. projectGeneratorで、ofxStateMachineをチェックしてプロジェクトを作ります。

とくに問題なく動くかと思います。

 

[1] openFrameworks 複数のシーンの管理・切替え、ofxStateMachine | yoppa org

[2] neilmendoza/ofxStateMachine · GitHub

[3] oFでiPhone:addonの ofxStatemachineを使う | openFrameworks Kyoto

[4] Twitter / Akira_At_Asia: ofxStateMachineのstateに一枚ofxCon ...

[5] 状態遷移表による設計手法(5):状態遷移表からの実装 (1/3) - MONOist(モノイスト)

*1:構造化プログラミングとは?のコラムも読んでおくとよい。

順次」「選択」「反復」の3種類の制御構造のみを用いてプログラミング