Defartで簡単なプログラムを作る(4)

いよいよ実際にAIBOで動作するプログラムを作ってみましょう。このプログラムによってAIBOは次のように動きます。

5秒間前進しその後停止する。

この簡単な動作を状態遷移図で表現してみます。

必要な状態を考える

まず、このプログラムに必要な状態はいくつあるでしょうか?
AIBOが歩いている状態と止まっている状態の2つですね。歩いている状態が最初の状態で、5秒経過したら止まっている状態に移るわけです。この様子をDefartで表現すると以下のようになります。

tutor01.png

状態に文字が入っていますが、これは状態につけたコメントです。プログラムの動作とは何の関係もありません。状態の中央右寄りをクリックすればコメントを入力できます。

(歩いている)状態から(止まっている)状態へとアクションが結ばれているのがわかりますね。Defartで簡単なプログラムを作る(3)を参考にして実際に状態を追加し、アクションで結びつけてください。

アクションを設定する

次に(歩いている)状態から(止まっている)状態へと遷移するための条件を設定します。
アクションの●の部分をクリックしてください。するとアクションメニューがあらわれます。
メニューの先頭の「CI:」を選んだあと、続けて下のように「タイマー1」を選んでください。

tutor02.png

すぐに秒数を入力するダイアログが現れます。スライダーでは5を選べないので、表示されている数値をクリックしてキーボードから5を入力してEnterを押し、(了解)を押してください。

tutor03.png

ダイアログが消えた後のアクションは以下のようになります。「タイマー1」「5.0s」となっていることを確認して、アクションメニューを閉じてください。

tutor04.png

これにより、このアクションの条件は「タイマー1が5秒経過したとき」となりました。

tutor05.png

先ほどと比べてアクションの●の色が茶色に変化したことがわかります。アクションの●の色がグレー以外の場合は、アクションに何らかの条件が設定されていることを表しています。

歩くようにする

これで(歩いている)状態を5秒続けたら(止まっている)状態に遷移するようになりました。でも、大切なことを忘れています。そうです「歩く」ことです。
「(歩いている)状態があるじゃないか」と思う人は、これが単に状態に名付けたコメントだということを忘れています。実際AIBOを歩かせるには、それ相応のことをしなければなりません。
(歩いている)状態で実際にAIBOを歩かせる場合にもアクションを使います。(歩いている)状態の■をクリックして、新しいアクションを追加してください。

tutor06.png

新しいアクションの■をクリックして、(歩いている)状態に結びつけてください。

tutor07.png

これは「ループアクション」といって(歩いている)状態から、同じ(歩いている)状態へのアクションです。このアクションの●をクリックしてアクションメニューを出してください。

先ほどとは異なり、今度は「動:」の項目をクリックしてください。下のようなメニューが表示されるので、「前に進む」を選んでください。

tutor08.png

アクションメニューを閉じると以下のようになっています。

tutor09.png

動作を設定したループアクションの方は線の色がグリーンに変わっています。

いま設定したループアクションによって、(歩いている)状態のデフォルトのアクションが「前に進む」となりました。
このループアクションは条件を指定していませんので、何も起こらなくても条件が成立します。他の条件が成立するときには成立しませんので、先ほどのタイマーを設定したアクションで条件が成立した場合にはそちらが優先されます。つまり、5秒たって(止まっている)状態に移るまでの間、ずっと「前に進む」という動作が行われるのです。

初期状態を設定する

プログラムとして動作させるためには、どの状態からスタートさせるかを指定しなければなりません。最初の状態を初期状態といいます。この状態遷移図の初期状態は(歩いている)状態ですので、この状態の●をクリックして状態メニューから「初期状態にする」を選びます。下のように初期状態に設定された状態は黒く縁取りされます。

tutor10.png