前回に引き続きイベント用のロボットのプログラムを作ってみました。
まずはモーターの制御に関することから紹介します。
ソフト作りにはRoboLabを使いました。
その1、直進
ロボットを直進させるプログラムです。
AとCのモーターを回します。
モーターは逆向きにつけてしまったので、逆転させると前進します。
ただ、このままだとロボットがまっすぐ進みません。モーターの電気的な特性にバラつきがあるためです。
そこで、回転量をこまめにチェックする機能を作ってみました。NXTソフトウェアだとブロック1個で解決できるのですが、Robolabだと大変に長いプログラムになります。
モータの向きを逆にしてしまいましたので、前進するたびにエンコーダの値がマイナスになっていきます。
そのため、プログラムが見にくいかもしれません。
その2、方向転換。
90度曲がるプログラムです。その場旋回(信地旋回)します。
実際に動かすと、どういうわけかオーバーして、回りすぎます。
NXTソフトウェアと違って、角度制御を自分でやらないといけないようです。
その3。まとめです。
その1とその2を合体させてみました。前進と方向転換を行って、最後に缶を叩きます(うまく目の前に缶があれば)。
今までのプログラムはサブルーチン化しました。値の受け渡しには「コンテナ」を使います。
ロボットの場合、「10cm進め」という命令に対して、8cm進んだり12cm進んだりすることがありますが、その誤差をサブルーチン側で吸収できるように考えてみました。
プログラム内の注釈が「真地旋回」になってますけど、正しくは「信地旋回」です。