ロボットプログラミング 教材 ろぼたみくらぶ
ロボットプログラミング教材ろぼたみくらぶ

「止まらない」に関連するトラブル

動作時間を指定してもとまらない

[GO=5]などで、動作時間を指定してもロボットが止まりません。なぜですか?

この項目は、TronZ-Card V2やTAMI-TOOLである程度プログラミングを経験していて、[GO][STOP][DELAY][DELAY100]などの命令語が分かる方を対象にしています。

動作時間を指定してもとまらない

次のプログラムを実行すると、ロボットの動きはどうなるでしょう。

実行結果[GO=5]なので、0.5秒前進して止まりそうに感じます。しかし実際に動かしてみると、ロボットは前進し続けます。0.5秒の命令を無視して、電源が続く限り前進し続けます。これはなぜでしょう。
理由これは命令を無視している訳ではなく、0.5秒前進した後に[GO]の動きに変化を与える命令の[STOP]や[LEFT]、[RIGHT]などが無いため。
では0.5とは何なのか実際のプログラム動作上は[DELAY100=5]と同じで、「次の命令実行まで0.5秒遅延」と同じ働きになります。[GO=5]の後に続く命令がなければ、ロボットは[GO]を実行し続けるしかない訳です。仮に[GO=5]が[GO=0]だったとしても上記プログラムにおいては同じ動作をします。
ポイント[GO=5]の”5”の部分の値は、厳密には動作の時間を指定する値では無く[DELAY100]と同じ効果で、次の命令を実行するまでの遅延時間である。

プログラミングで0.5秒前進後に停止させたければ、停止の命令を入れる必要があります。一見すると[END]で停止しそうに思いますが、[START]と[END]のカードはプログラムの始まりと終わりを示しているだけなので、ロボット制御になんの機能もありません。

ポイント[START]と[END]のカードはプログラムの始まりと終わりを示しているだけなので、ロボット制御になんの機能も無い。

では、ロボットを0.5秒で停止の命令をするにはどうしたら良いでしょう。
[GO=5]の命令カードの次に[STOP]の命令カードを入れて試してみます。

実行結果ロボットは0.5秒前進した後に停止します。思い通りに行きました。0.5秒前進し停止したロボットはそのまま全く動きません。

この状態のロボットは「[STOP]を実行し続けている」状態になっています。

では、次のプログラムを実行するとどうなるでしょう。

コントローラーの【OUT0】ポートにLEDモジュールを付けて命令語[ON=0]で点灯するようにしました。早速実行してみます。

実行結果前進開始から0.5秒後にLEDが点灯し、そのまま前進し続けて止まらない。
ここでも前進したまま止まらない状態になり、さらにLEDも点灯しっぱなしです。これは、[GO=5]で前進が始まり、0.5秒後に次の命令の[ON=0]が実行されますが、それ以降に前進やLED点灯に変化を与える命令が無いので前進とLED点灯を実行し続けている状態です。
まとめ[GO=5]の値は、厳密にはその動作時間ではなく、次のプログラム実行までの遅延時間である。動作として[DELAY]や[DELAY=100]と同じであり、以降のプログラムで[STOP][LEFT][RIGHT][BACK]などの[GO]に変化を与える命令が無い場合、そのまま命令を守り実行し続ける。

リモコンで操作中にロボットが止まらなくなる

リモコンでロボットを動かしていると、たまに止まらなくなります。なぜですか?

リモコンで操作していると、ロボットが止まらなくなる事があります。

リモコンの赤外線電波が途切れると止まらなくなるリモコンからの赤外線電波がリモコン受信モジュールに届かなくなると、止まらなくなる事があります。
対処方法リモコン赤外線電波が届く距離まで近づき、十字ボタンを再び押して命令を出して見てください。また、ロボット側のリモコン受信モジュールの取り付け位置あるいは、向きが悪い可能性もあります。
説明ロボタミのコントローラーは最後に受けた命令を実行し続けます。例えば、次のようにプログラムし実行した場合どうなるでしょう。

この[GO=5]の値”5”は、次にある命令の実行を0.5秒遅らせます。もしこのまま実行しても0.5秒では停止せずにロボットは動き続けます。理由は[STOP]の命令語が入っていないからです。[END]のカードが有るから止まりそうに感じますが、[START]と[END]のカードは、それ自体にロボットを制御する機能は無く、プログラムの最初と終わりを示しているに過ぎません。

リモコン操作で赤外線電波が途切れロボットが止まらなくなるのは、上記の仕組が関わっています。例えばリモコンの十字ボタンの上を押した時には前進、十字ボタンを押してない時は停止する様にプログラムしたとして、上を押している間はもちろん前進しますし、押すのをやめればその情報がロボットに伝わり、ロボットは停止します。でも押している最中に赤外線電波が途切れると、押すのをやめた情報を受信していないロボットは前進し続けます。先ほど説明した状況におちいるわけです。その場合は、新たな命令を出せばロボットはその命令を実行します。つまり、十字ボタンの上をもう一度押したり、他の動きをプログラムしてある方向を押せば直ります。

ポイント赤外線電波が途切れた時と、十字ボタンをはなした時では、ロボットが受け取る情報が違う。

リモコンの「Aボタン」を押しながら操作した場合リモコンのAボタンを押しながら十字ボタンでロボットを操作すると、十字ボタンをはなしても命令を実行し続ける仕様です。もう一度十字ボタンを操作すれば直ります。