今回は、mBotプログラミングシリーズの第9回です。
この回では、ライントレースセンサーを活用して、ラインに沿って自動運転するプログラムを作成します。
ライントレースの動きは、倉庫内の仕分けロボットや配送ロボットの仕組みにも似ており、実社会での応用例をイメージしながら学ぶことができます。
初心者でも無理なく取り組めるよう、具体的な手順をわかりやすく解説しますので、ぜひ最後までお付き合いください!
ライントレース用の黒色ラインの作成には、反射の少ない黒色マスキングテープがお勧めです。
(黒色マジックペンでは、反射してセンサーが黒色を認識しないことがあります)
全講座の一覧はこちら
目標
- ライントレースセンサーの仕組みを理解する。
- ライントレースセンサーから得られる値を利用する方法を学ぶ。
- ラインを検知して自動運転するプログラムを作成する。
ライントレースとは
ライントレースとは、地面に描かれたライン(通常は黒や白)をセンサーを使って検知し、そのラインに沿ってロボットを走らせる技術です。
mBotのような教育用ロボット、自動車の高速道路での自動運転や、物流システムの自動化などの分野で広く利用されています。
ライントレースセンサーとは
ライントレースセンサーは、地面の色の違いを検知するセンサーです。
mBotには、白と黒を識別できるセンサーが2つ搭載されており、ラインの左右位置を判定できます。
mBot左下に位置するセンサーが『sensor1』、右下が『sensor2』となります。
また、各センサーには素子が2つ付いています。
1つはLEDライト、もう一つがフォトダイオード(光センサー)です。
ライントレースセンサーの仕組みを次に示します。
- LEDライトの光が地面に当たる
- 光が反射する量は、「白い地面=多い」「黒い地面=少ない」
- 光センサーで検出する光の量に応じて、『白』または『黒』と判断する
必要なブロック
『センサー』パレット
各種センサーのブロックが入っています。
今回はライントレースセンサーのブロックを使います。
ライントレースセンサーの値を表します。
値の意味は次の通りです。
センサー値 (ブロックが示す値) | sensor1の値 (左センサー) | sensor2の値 (右センサー) | 意味 |
---|---|---|---|
0 | 0 | 0 | 両方とも黒 |
1 | 0 | 1 | 左:黒 右:白 |
2 | 1 | 0 | 左:白 右:黒 |
3 | 1 | 1 | 両方とも白 |
各センサーの値は、黒の認識で『0』、白の認識で『1』です。
左右のセンサー値を0,1で並べて、2進数としてみた時の値が0~3となります。
2進数とは、0と1の2つの数字だけを使って数を表現する方法のことです。
コンピュータやデジタルシステムで使われる数値表現であり、非常に重要な概念です。
ここでは簡単に10進数と2進数の対応表を示します。
10進数 | 2進数 |
---|---|
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
左右のライントレースセンサー状態の真偽値を表します。
ブロックのプルダウンで次の選択が可能です。
・センサーの場所:『左側』『右側』『全て(のセンサー)』
・センサーの認識:『黒』『白』
※ブロックの日本語に違和感がありますが、
正しくは、『ライントレースセンサー「ポート2」の「左側」が「黒」を認識』
と思われます。
簡単な動作プログラム作成
『ライントレースセンサーの値をmBlockのステージ上に常時モニタリングする』プログラムを作ってみます。
変数『ライントレースセンサー』を作って、ライントレースセンサーブロックの値を変数に入れます。
『変数を表示する』ブロックを処理することで、ライントレースセンサーの値がmBlockのステージ上に表示されます。
旗マークを押すたびに、その時のセンサー値で値が更新されます。
【例題】ライントレースセンサーを使って自動運転させよう
例題1:ライントレースさせてみよう①
- 例題
- 解答例
『黒いラインの上をライントレースさせる』プログラムを作ってみましょう。
ライントレースセンサーの値による動作は次の通りとします。
- 左右ともライン上の場合:直進
- 左がラインから外れた場合:右回転
- 右がラインから外れた場合:左回転
- 左右ともラインから外れた場合:後退
なお、ライントレースセンサー値の判定には、以下のブロックを使ってください。
条件『左がラインから外れた』のプログラムを、『左が白』のブロックのみでプログラムとしてしまうと、『右が黒』『右が白』どちらも場合もその処理が実行されてしまうので注意が必要です。
例題2:ライントレースさせてみよう②
- 例題
- 解答例
例題1と同じ動作をするプログラムを作ってみましょう。
なお、ライントレースセンサー値の判定には、例題1とは違い、以下のブロックを使ってください。
例題1のプログラムの条件分岐ブロックの条件式のみを変更しています。
まとめ
ライントレースセンサーを使った自動運転プログラムを作成することで、センサーとモーターの連携について深く学ぶことができます。
このような知識は、単なるロボットの操作にとどまらず、現実世界の様々な場面で応用する力となります。
さらに、今回学んだ技術は他のセンサーや新しいロジックとの組み合わせで、より複雑なプログラムを作成する土台になります。
次回は、赤外線センサーを使った協調制御プログラムを作成します。
mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。
mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。
コメント