プログラムはモデルとルールで作る
ロボットの状態と振る舞いを図に表す
第3回では、ロボットにやらせたいことをプログラマーの頭の中からプログラムへ移すための工夫と、これをプログラミングの前に検討するために、UMLのクラス図を使って表す方法を紹介しました。
最終回となる今回は、ステートマシン図やクラス図を使ってプログラムの構造や動作を表現する方法や、モデル図とプログラムを対応させるルール、そして、実際にロボットを教育や社内研修に活用する方法について紹介していきます。
まずはじめに、ロボットの停止中にバンパを押されたら走行(ライントレース)し、走行中にバンパが押されたら停止する、という処理を繰り返す動作のモデル図について、プログラミングの前に検討する方法を考えましょう。
ロボットの走行と停止の動作切り替えは、「操作者がバンパを押す」ことがきっかけで行われるものでしたが、ロボット自身にこの動作切り替えはできません。いつも操作者からの操作を待っている、と見ることもできます。このように、外部からの働きかけなどがないと現在の処理から次の処理へ進むことができない部分を「状態」といいます。
モデル図には、「状態遷移図」「状態遷移表」という図があり、どのような状態があるのか、その状態ではどんな処理をするのかを描きます。UMLにも状態遷移図を発展させた「ステートマシン図」というものがあります。ロボットがバンパを押されて止まったり走ったりする動作を、ステートマシン図で表したのが図1です。
ステートマシン図を使って処理を整理する
図の中の「停止中」「走行中」と書いてある箱が「状態」です。黒い丸が指している「停止中」の箱が最初の状態です(黒い丸自体は状態ではありません)。箱の上半分は状態名で、ここには「停止中」と書いてあり、ロボットが停止している状態から動作が始まることを示しています。
箱の下半分には、この状態のときの処理を書きます。この処理を「アクション」と呼びます。「停止中」のアクションには「entry/停止する」と書かれているので、この状態に入ったとき(entry)の処理としてロボットを停止すること示しています。つまり、この状態になったらロボットが停止するようにプログラムを作るということです。
さらに見ていくと、「停止中」から「走行中」に向かって矢印が書いてあります。「停止中」はバンパが押されるのを待っていて、バンパが押されたら「走行中」になるということを表しています。この矢印を「遷移」といいます。遷移には何が起こるのを待っているかがわかるように「イベント」を書きます。「停止中」に「走行中」への遷移を待っているのが「パンパが押された」というイベントです。
「走行中」から「停止中」へも遷移が描いてあります。「走行中」もまた、バンパが押されるのを待っている状態といえます。また、ロボットが「走行中」になったときの処理には「do/ライントレースする」と書いてあります。これは、「走行中」の状態にいる間ライントレース動作を続けることを示しています。
このように、ステートマシン図を使うと、ロボットが待っているイベントやその状態に遷移したときの処理を整理できます。いわばロボットのプログラムの「動き」を表現しています。このことから、ステートマシン図は「振る舞いを表す図」といわれます。
ほかに振る舞いを表す図には「シーケンス図」「アクティビティ図」「コミュニケーション図」があります。
ステートマシン図と第3回(http://thinkit.jp/article/959/3/)のクラス図と合わせると、ロボットの構造と動作はモデル図に表せることがわかりました。あとは、モデル図を参照しながら、ロボットの構造に合わせて処理を分割し、状態に合わせて動作するようにプログラムを作れば良いわけです。
次のページでは、モデル図に表した構造と状態に基づく動作をどうやってプログラムに書けば良いかについて考えてみましょう。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- ETロボコンを仕事に役立てる
- クラス図を使ってロボットの構造を把握しよう
- 新型ロボットと新クラスが追加された、ETロボコン2014の新たな挑戦とは
- 未来のエンジニアが海外で健闘!ロボットコンテスト国際大会レポート
- センサーを使ったロボットの自律制御
- Kinectとロボットを連動させて思いのままに操ってみよう
- 世界の舞台へチャレンジ。ロボットプログラミングを競うWRO Japan決勝大会を密着取材!
- 組み込みも、はじめの一歩はHello world
- 次世代エンジニアはここから生まれる!?ロボットオリンピックWROの新たな挑戦とは
- 日本の小中高生は世界に勝てますか?ロボットプログラミングを競うWROとは