このページは、ビジュアルプログラミングソフト「mBlock3」で解説しています。以下に、最新版の「mBlock5」での解説ページも、合わせてご覧ください。
■ mBlock5対応!mBotで出来る事とプログラミングの基本 ーmBotを自由に動かそうー
https://j-tinkering.com/mblock5-mbot5/
ロボットプログラミングの醍醐味! ー思った通り動かないー
今回は、mBotを自立走行させるプログラミングです。実際にモーターを制御してロボットを制御していくというロボットならではのプログラミングを楽しみたいですね。
mBotをまっすぐ走らせるには?
mBotを四角く動かす為には、どうしたら良いでしょうか?簡単に言えば、
「まっすぐ走る」「90度曲がる」を4回繰り返せば良いですよね。
という事で、まずは「まっすぐ走らせましょう」
まっすぐ走らせるには、mBlockのロボットブロックの「○○向きに■■の速さで動かす」を使います。

さて、それでプログラムを実行してみましょう!私の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を曲げるには、「○○向きに■■の速さで動かす」ブロックを↓のように設定します。

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


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

mBotをカーブさせる
mBotを直角(90度)に曲げるのではなく、カーブさせる事が出来れば、8の字に自立走行する事も可能ですよね。mBotをカーブさせるには、90度直角に曲げるで設定した左右モーターの出力を調整すればいいですよね。
これも、モーターの出力、タイヤとホイールのかみ合わせ、走行する床面とタイヤの摩擦具合等、バッテリーの充電残量(例えば、新品の単三電池=満充電だと、出力電圧は6Vなのですが、充電量が徐々に減っていくと、出力電圧も6Vから5Vへと減ってきて、モータースピードも変わります)等によって、変わります。その時、その場所で、変わるといってもいいでしょう。

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