mBlockのサンプルプログラムには、障害物回避動作とライントレース動作のプログラムが用意されています。今回は、それらを流用することで、ライン追従しながら障害物を検知して停止するプログラムを作成しました。
この記事では、mBlockを使った具体的なプログラムとそのポイントをご紹介します!
ライントレース用の黒色ラインの作成には、反射の少ない黒色マスキングテープがお勧めです。
(黒色マジックペンでは、反射してセンサーが黒色を認識しないことがあります)
Arduinoでのプログラミング例はこちら↓
「障害物回避×ライントレース」プログラム概要
作成するプログラムでは、以下の動作を実現します。
- ライントレースセンサーを用いて、ライン追従動作をさせる
- 超音波センサーを用いて、障害物を検知した際にmBotを停止させる
「障害物回避×ライントレース」プログラムの流れ
mBlockで用意されているサンプルプログラムには、障害物回避とライントレースのプログラムが用意されています。今回は、それらのプログラムを流用して作成します。
サンプルプログラムの内容把握
mBlock画面右上の「サンプルプログラム」を押すと、サンプルプログラムの一覧が表示されます。
障害物回避プログラムの内容
サンプルプログラム一覧から「ObstacleAvoidance」を選択し、「OK」を押します。
障害物回避のサンプルプログラムとして、以下のブロックが表示されます。
超音波センサーで検出した障害物までの距離が10cmより大きければ前進、10cm以下の時に右に回転するプログラムとなっています。
ライントレースプログラムの内容
サンプルプログラム一覧から「SimpleLineFollowProgram」を選択し、「OK」を押します。
ライントレースのサンプルプログラムとして、以下のブロックが表示されます。
ライントレースセンサーの検出値に応じて、前進、右回転、左回転、後退の動作を切り替えています。
「障害物回避×ライントレース」プログラムの設計
以上のサンプルプログラムを流用することを考えます。
障害物回避のプログラムをベースとして、
次のように処理を置き換えることで、「障害物回避×ライントレース」の組み合わせ処理を実現することができます。
変更箇所 | ベース処理 | 置き換え後 |
---|---|---|
A | mBotの前進処理 | ライントレース動作のサンプルプログラム |
B | 障害物を検知して方向転換する処理 | mBotの停止処理 |
「障害物回避×ライントレース」プログラム例
上で示した処理の置き換えを、ビジュアルプログラミングで表現すると次のようになります。
障害物回避のプログラムをベースとして、Aの箇所をライントレースのプログラム、Bの箇所を停止処理で置き換えることで実現しました。
「障害物回避×ライントレース」実行結果
このプログラムを実行した結果です。
※Arduinoでプログラムした時と同様の動作となります
ライントレースをしながら、障害物を検知して停止していることが分かります。また、障害物を取り除くと、前進を再開します。
まとめ
今回は、「障害物回避 × ライントレース」のプログラム例をご紹介しました。
このように、既存のサンプルプログラムを流用するだけでも、mBotの動作の幅を広げる面白いプログラミングが可能です。この記事を参考に、ぜひ自分だけのカスタマイズプログラムにも挑戦してみてください!
次回の記事では、さらに応用した動作のプログラミングをご紹介する予定ですので、お楽しみに!
mBlockでの基本的な操作方法は『mBotで楽しむレッツ!ロボットプログラミング』がお勧めです。
その他のmBlockでのプログラミング例一覧はこちらにまとめています。
コメント