2016年12月28日水曜日

【Book】 Programming Robots with ROS Chapter13: ROSのStateMachinesについて 続き

こんにちは。

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章に今回のサンプルの修正版が書いてあったので、次回気が向いたらまとめる。


0 件のコメント:

コメントを投稿