こんにちは。
ROSのstate machineの使い方について、続きも読んだのでまとめておく。
ROSのstate machineの使い方について、続きも読んだのでまとめておく。
A Slightly More Relevant Example
前回の例が簡単すぎるので、実際に使いそうなサンプルの紹介が書いてあった。
- Classは2つ(Drive とTurn)
Driveクラスはロボットが指定した距離移動する(単位:m)。
サンプルではexecute()実行で数字が表示されるだけ。
Turnクラスはロボットが指定した角度回転する(単位:degree)。
サンプルではexecute()実行で数字が表示されるだけ。
- main文の中で3つのwith statementを作成
1. triangle
StateMachine.addを以下の5つの動作について記述。
Drive(1) -> Turn(120) -> Drive(1) -> Turn(120) -> Drive(1)
1m前進->120度回転 -> 1m前進 -> 120度回転 -> 1m前進 を行う。(正三角形が書かれそうですね。)
2. square
StateMachine.addを以下の7つの動作について追加。
Drive(1) -> Turn(90) ->Drive(1) -> Turn(90) ->Drive(1) -> Turn(90) ->Drive(1)
1同様、正方形が書かれそうですね。
3. shapes
StateMachine.add で1,2で作成した triangle, squareを追加し、shapes.execute()を実行。
triangle->squareの順で実行されるので、三角形->四角が書かれる。
1,2 が3のsub stateみたいな感じ。今度使ってみよう。
まとめ
以上、smachを使って階層を持つstate machineの設計の仕方でした。
13章に今回のサンプルの修正版が書いてあったので、次回気が向いたらまとめる。