最新ページ情報

このページは、ビジュアルプログラミングソフト「mBlock3」で解説しています。以下に、最新版の「mBlock5」での解説ページも、合わせてご覧ください。
■ mBlock5対応!mBotで出来る事とプログラミングの基本 ーmBotを自由に動かそうー
https://j-tinkering.com/mblock5-mbot5/

ロボットプログラミングの醍醐味! ー思った通り動かないー

今回は、mBotを自立走行させるプログラミングです。実際にモーターを制御してロボットを制御していくというロボットならではのプログラミングを楽しみたいですね。

mBotをまっすぐ走らせるには?

mBotを四角く動かす為には、どうしたら良いでしょうか?簡単に言えば、

「まっすぐ走る」「90度曲がる」を4回繰り返せば良いですよね。

という事で、まずは「まっすぐ走らせましょう」

まっすぐ走らせるには、mBlockのロボットブロックの「○○向きに■■の速さで動かす」を使います。

前向きに100の速さで動かすブロック画像

さて、それでプログラムを実行してみましょう!私のmBotを動かすとこんな動きになります。

動画で分かるように、プログラムでは、前向きに100の速さで設定しますが、mBotはまっすぐ走ってくれません。なぜでしょうか?

まっすぐ走るには、両輪のタイヤを動かすモーターのパワーが同じであり、路面の状況がまっ平らで、タイヤとホールのかみ合わせがしっかりしていて、タイヤにも異物が無く、ギアの噛み合わせも完璧、・・・といった用に、様々な要素がそろって始めてまっすぐ動きます。

ですが、実際は、どのmBotにも微妙に上記の要素が異なるでしょう。さらに、電池の残量によっても、出力=回転数が変わったりします。

動画の例で言うと、「左にずれていく」という時は、ホイール・タイヤがしっかり組み合わされているか、タイヤに変な異物が有ったり、変形していないかを確認し、それでも左にずれるようであれば、左右のモーターの出力を変えて、まっすぐ走るように調整する必要が有るのです。そもそも、床が平らなのかどうかも影響してきますよね。

モーターの出力を変えるには、↓のようなブロックを組み合わせます。

左右のモーター制御ブロック

mBotの説明書通りに組み立ててあれば、モーターポート1は左タイヤ対応で、モーターポート2は右タイヤ対応になると思います。

さあ、皆さんのmBotで試してみましょう。モーターの出力は、255・100・50・0・-50・-100・-255から選ぶことも出来ます。 最高出力は255であり、0はモータを停止させ、マイナスの数は逆回転させます。 (注:50程度のパワーレベルでは、mBotを動かすには弱すぎて動かないかもしれません。)。

微調整するには、手入力で数値を細かく設定する必要が有ります。ちなみに、0でモーターを停止させる=mBotを止めるという1行は、今後プログラムする上で、私も含めてビギナーでは、抜けがちなので、しっかり把握しておきましょう!

私のmBotは、左にずれて走行していく為、左のモーターの出力を上げるか、右のモーターの出力を下げるかの調整でした。調整した所、まっすぐ走るには、このような設定になりました。

左右モーター調整

 

mBotを90度右折させるには?

さて、まっすぐ走るようになった後は、右折のプログラムを作ります。これも、まっすぐ走るの時のような微調整が必要です。

mBotを曲げるには、「○○向きに■■の速さで動かす」ブロックを↓のように設定します。

右向きに100の速さで動かす

これで実行すると、ずっと回転しつづけますよね。

90度で止める為には、「時間」で制御する必要が有ります。

そこで、「1秒まつ」ブロックを付け加え、1秒待った後に、モーターを止める為に、「○○向きに■■の速さで動かす」ブロックの、モーター出力を「0」にしましょう。ちなみに、モーター出力を0にするブロックを入れず、1秒待つブロックだけで実行すると、mBotは、ずっと周り続けます。

右向き1秒待って止める
さて、1秒回転させると、mBotは何度くらいの方向を向いたでしょうか?私の場合、「100度」程度を向いたので、1秒では回転させすぎでした。そこで、数回時間を変えてテスト・調整をしてみると、0.85秒でほぼ90度に回転する事が分かりました。
 
曲がるときも、使用しているバッテリーの種類(単三電池かリチウムイオン電池かなど)、バッテリーの充電量、モーターとホイール間の摩擦量、ターンのスピード設定、タイヤと床面の摩擦具合などが、90度回転に必要な時間に影響します。ここがロボットプログラミングならではの難しさであり、面白さで、奥深さだと私は思います。
 
90度回転0.85秒待つのブロック
 
私の場合は、↑のように0.85秒という微調整をしました。
 

 
 

まっすぐ走る・90度曲がるのブロックを組み合わせる

さあ、あとは、これまで作ったブロックを合体させて、4回繰り返すブロックで囲うだけです。
まっすぐ走らせる時間が1秒だと短かったので、2秒にしました。最後に、モーターを止めるブロックを入れておきましょう!
 
四角く走る
 

mBotをカーブさせる

mBotを直角(90度)に曲げるのではなく、カーブさせる事が出来れば、8の字に自立走行する事も可能ですよね。mBotをカーブさせるには、90度直角に曲げるで設定した左右モーターの出力を調整すればいいですよね。

これも、モーターの出力、タイヤとホイールのかみ合わせ、走行する床面とタイヤの摩擦具合等、バッテリーの充電残量(例えば、新品の単三電池=満充電だと、出力電圧は6Vなのですが、充電量が徐々に減っていくと、出力電圧も6Vから5Vへと減ってきて、モータースピードも変わります)等によって、変わります。その時、その場所で、変わるといってもいいでしょう。

mBotをカーブさせるプログラム

■皆さんでやってみましょう!

1、mBotを長方形に動かすプログラム
2、起動前に警告音が鳴り、動いているときに点灯しているプログラム
3、mBotがアルファベットの「S」を綴るようにプログラム
 
 

※ご注意:このページのチュートリアルでは、mBlock IDE(PC)から、BluetoothやUSBケーブルを通じて、プログラムを実行します。 mBot制御ボード上のプログラムは更新されません。