プログラムはモデルとルールで作る

2009年6月24日(水)
久保秋 真(くぼあき しん)

ロボットの状態と振る舞いを図に表す

 第3回では、ロボットにやらせたいことをプログラマーの頭の中からプログラムへ移すための工夫と、これをプログラミングの前に検討するために、UMLのクラス図を使って表す方法を紹介しました。

 最終回となる今回は、ステートマシン図やクラス図を使ってプログラムの構造や動作を表現する方法や、モデル図とプログラムを対応させるルール、そして、実際にロボットを教育や社内研修に活用する方法について紹介していきます。

 まずはじめに、ロボットの停止中にバンパを押されたら走行(ライントレース)し、走行中にバンパが押されたら停止する、という処理を繰り返す動作のモデル図について、プログラミングの前に検討する方法を考えましょう。

 ロボットの走行と停止の動作切り替えは、「操作者がバンパを押す」ことがきっかけで行われるものでしたが、ロボット自身にこの動作切り替えはできません。いつも操作者からの操作を待っている、と見ることもできます。このように、外部からの働きかけなどがないと現在の処理から次の処理へ進むことができない部分を「状態」といいます。

 モデル図には、「状態遷移図」「状態遷移表」という図があり、どのような状態があるのか、その状態ではどんな処理をするのかを描きます。UMLにも状態遷移図を発展させた「ステートマシン図」というものがあります。ロボットがバンパを押されて止まったり走ったりする動作を、ステートマシン図で表したのが図1です。

ステートマシン図を使って処理を整理する

 図の中の「停止中」「走行中」と書いてある箱が「状態」です。黒い丸が指している「停止中」の箱が最初の状態です(黒い丸自体は状態ではありません)。箱の上半分は状態名で、ここには「停止中」と書いてあり、ロボットが停止している状態から動作が始まることを示しています。

 箱の下半分には、この状態のときの処理を書きます。この処理を「アクション」と呼びます。「停止中」のアクションには「entry/停止する」と書かれているので、この状態に入ったとき(entry)の処理としてロボットを停止すること示しています。つまり、この状態になったらロボットが停止するようにプログラムを作るということです。

 さらに見ていくと、「停止中」から「走行中」に向かって矢印が書いてあります。「停止中」はバンパが押されるのを待っていて、バンパが押されたら「走行中」になるということを表しています。この矢印を「遷移」といいます。遷移には何が起こるのを待っているかがわかるように「イベント」を書きます。「停止中」に「走行中」への遷移を待っているのが「パンパが押された」というイベントです。

 「走行中」から「停止中」へも遷移が描いてあります。「走行中」もまた、バンパが押されるのを待っている状態といえます。また、ロボットが「走行中」になったときの処理には「do/ライントレースする」と書いてあります。これは、「走行中」の状態にいる間ライントレース動作を続けることを示しています。

 このように、ステートマシン図を使うと、ロボットが待っているイベントやその状態に遷移したときの処理を整理できます。いわばロボットのプログラムの「動き」を表現しています。このことから、ステートマシン図は「振る舞いを表す図」といわれます。

 ほかに振る舞いを表す図には「シーケンス図」「アクティビティ図」「コミュニケーション図」があります。

 ステートマシン図と第3回(http://thinkit.jp/article/959/3/)のクラス図と合わせると、ロボットの構造と動作はモデル図に表せることがわかりました。あとは、モデル図を参照しながら、ロボットの構造に合わせて処理を分割し、状態に合わせて動作するようにプログラムを作れば良いわけです。

 次のページでは、モデル図に表した構造と状態に基づく動作をどうやってプログラムに書けば良いかについて考えてみましょう。

著者
久保秋 真(くぼあき しん)
株式会社アフレル
メーカー系ソフト開発会社などを経て、2007年より(株)アフレルに勤務(http://www.afrel.co.jp)。教育用レゴ マインドストームを活用した技術研修の開発と指導に従事。研修の講師として全国を飛び回る毎日。ETロボコン、MDDロボットチャレンジではモデル審査員を務める。早稲田大学理工学術院非常勤講師、日本大学生産工学部非常勤講師。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています