PR

【mBotプログラミング例⑧】超音波センサーを使って障害物を回避させよう(mBlock編)

小学生向けロボット
この記事は約5分で読めます。

今回は、mBotプログラミングシリーズの第8回です。

この回では、mBotに搭載されている超音波センサーを使って、障害物を検知し、それを回避するプログラムを作成します。
障害物を検知して回避する動きは、ロボット工学自動運転技術にも通じる重要なトピックです。ぜひ一緒に学んでいきましょう!

目標

  • 超音波センサーの仕組みを理解する
  • 超音波センサーの値を取得するプログラムを作る
  • 障害物を検知して回避する動きをプログラミングする

超音波センサーとは

超音波センサーは、mBotの目になっている部分で、音波を使って物体までの距離を測ることができます。
前方にある障害物の距離をセンチメートル単位で計測でき、測定範囲は3cm~400cm(4m)です。

右目の下に『T』、左目には『R』が記載されています。
これは、Transmitter(送信機)とReceiver(受信機)を意味しています。

超音波センサーの仕組みを次に示します。

  1. 送信機(T)から超音波を出す
  2. 何かに反射して超音波が跳ね返ってくる
  3. 受信機(R)で跳ね返ってきた超音波を受信する
  4. 送信から受信までの時間を測定し、距離を計算する

同じような仕組みで、コウモリやイルカは超音波を発して、その反射音から物の形や距離を測っています。

必要なブロック

『センサー』パレット

各種センサーのブロックが入っています。
今回は超音波センサーのブロックを使います。

超音波が測定した距離を3~400の値で表します。


簡単な動作プログラム作成

超音波センサーの値をmBlockのステージ上に常時モニタリングする』プログラムを作ってみます。

変数『超音波センサーの値』を作って、超音波センサーブロックの値を変数に入れます。
『変数を表示する』ブロックを処理することで、超音波センサーの値がmBlockのステージ上に表示されます。

旗マークを押すたびに、その時のセンサー値で値が更新されます。

【例題】超音波センサーを使ってみよう

例題1:センサー値に応じて処理を切り替える

  • 例題
  • 解答例

障害物が近づいたら、LEDライトを赤色に点灯させて、ブザーを鳴らす』プログラムを作ってみましょう。
※障害物が遠ざかったら、LEDライトは消灯、ブザーは鳴らないようにしましょう

自動車に乗っていて、壁に近づきすぎた時、ブザーが鳴ったことはありませんか?
この例題と同じような仕組みが実際に自動車で使われています。

プログラムのポイント
  • 繰り返し処理で、超音波センサーの値を常時読み出す
  • 障害物が近づいたら』の条件は、比較演算『超音波センサーの値 < 15cm』を使う
    ※15cmの距離は任意に設定してください
  • 障害物が離れた時の消灯処理も忘れずに

例題2:障害物回避動作をさせてみよう①

  • 例題
  • 解答例

mBotを前進走行させて、障害物が近づいたら停止する』プログラムを作ってみましょう。

自動車の衝突回避動作がまさにこれですね。
実際の衝突回避は、タイヤのスリップや速度調整も考慮されていますが、この例題では単純に停止することだけを考えてプログラムしてみましょう。

プログラムのポイント
  • 繰り返し処理で、超音波センサーの値を常時読み出す
  • 障害物が近づいたら』の条件は、比較演算『超音波センサーの値 < 15cm』を使う
    ※15cmの距離は任意に設定してください

例題1とプログラムの構造は同じです。
mBotを止めるブロックと動かすブロックを適切に配置してください。

例題3:障害物回避動作をさせてみよう②

  • 例題
  • 解答例

mBotを前進走行させて、障害物が近づいたら方向転換する』プログラムを作ってみましょう。

もしくは

プログラムのポイント
  • プログラムの構造は例題2と同じ
  • 方向転換』するために、『左(または右)向きに〇秒動かす』ブロックを使う

左(または右)向きに〇秒動かす』ブロックに設定する時間は、90°~180°回転する時間を設定するのが良いでしょう。
短すぎる場合、回転が小さく、障害物に対して斜めに前進していく可能性があります。

超音波センサーでの障害物の検出は、斜めの壁に対しては検出しにくいことがありますので、そのことも念頭に入れてプログラミングしてみてください。


超音波センサー部分にサーボを取り付けた、首振りロボットによる障害物検出もプログラミングしています。
ご興味があれば、以下もご覧になってください。

まとめ

今回は、超音波センサーを使うことで、mBotが自律的に障害物を回避するプログラミングについて学びました。
この機能を活用して、迷路を通り抜けるチャレンジなど、さらに面白いプログラムに挑戦してみてください。

次回は、ライントレースセンサーを用いた自動運転プログラムを作成します。

mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。

mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。

コメント

タイトルとURLをコピーしました