2024年12月20日
014-1.WeDo2.0スクラッチ入門-第7回「ジグザグに走るロボット」
この連載では「レゴ WeDo 2.0(以下、WeDo 2.0)」と「Scratch(スクラッチ)」を使ってプログラミングの方法を紹介します。なお、「WeDo 2.0 ソフトウェア」を使ったプログラミングの方法については、すでに「WeDo 2.0入門」で紹介していますので、そちらをご覧ください。(文/松原拓也)
◆ 前回に作ったロボットとブロックを使う

前回に引き続き、WeDo 2.0のセットを使って移動できるロボットを作ります。写真のロボットを用意しましょう。

今回のテーマはロボットをジグザグに走らせることです。
この図のように「前進→右せん回→前進→左せん回→前進」の順にロボットを動かします。

ここで前回に作ったプログラムを見てみましょう。このプログラム内にある「motor」ブロックを使いまわします。このブロックは「新しいブロック」を使って作成したモーターを動かすブロックです。引数の「R」は右のモーターの回転方向です。「L」は左のモーターの回転方向です。値が1の場合は正転。-1の場合は逆転です。

プログラムができました。
motorブロックを5回ほど呼び出すことでジグザグの動きを作り出しています。「motor」ブロックはこのままではモーターの回転量が少ないです。そこで、一番最後のブロックの設定を「0.1秒オンにする」→「0.3秒オンにする」に変更して、回転量を約3倍に増やしています。

プログラムの実行結果です。
ロボットをジグザグに走らせることができました。
一応、これで完成なのですが、ちょっと不満な点があるので直したいと思います。 まず、ロボットの前進するきょりやせん回する角度が固定されていて、使い勝手がよくありません。そこで、きょりや角度を自由に設定できるようにしたいです。 あと、どこでどんな処理をしているのか、プログラムが少しわかりにくいです。そこで、もっとプログラムをわかりやすくします。
◆ わかりやすいプログラム

「プログラムをわかりやすく」とはどういうことか、例で紹介します。ここでは「60歩動かす」「90度回す」などのブロックに注目です。このようにブロックの名前と機能が同じになっていると、どのような処理をしているのかすぐにわかります。

実行した結果です。
ジグザグの線が描かれました。ペンという機能を使って、画面に線を描いています。
◆ 前進とせん回するブロックを作る

以上のことをふまえて、改良したプログラムがこちらです。
新しく「ugokasu」「mawasu」というブロックを作りました。ブロックの名前と機能を同じにしたため、プログラムがわかりやすくなりました。 「ugokasu」はロボットを前進させるブロックです。ブロックの引数(kyori)は進めたいきょりです。 そして、「mawasu」はロボットをせん回させるブロックです。引数(kakudo)はせん回させる角度です。角度がプラスの場合、ロボットは時計方向にせん回します。角度がマイナスの場合、反時計方向にせん回します。
かけ算のブロックを使って、きょりや角度を一定の値にかけて時間に変換しています。この値は見た目で調節したものなので、バッテリーの残量や地面のまさつなどで変化します。

プログラムの実行結果です。
ロボットをジグザグに走らせることに成功しました。先ほどよりも、ロボットはゆっくり動きます。移動するきょりも長くなりました。
これでプログラムは完成ですが、ロボットがぴったり90度に曲がってくれない場合があります。WeDo2.0のパワーモーターMにはエンコーダーが入っていないため、回転量を検出できません。時間で回転量を制御するためバラつきがあります。プログラムの再現性が低いわけです。思ったように動かない場合にはかけ算のブロックにある「0.004」や「0.008」の値を変更してみましょう。
今回作成したプログラム(スクラッチ2.0用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。