# マイクロマクイーン ライト(micro:Maqueen Lite)自動運転(ライントラッキング)
# 10.1. 目標
ライントラッキング機能を使って、黒い路線が書かれているマップの上で、マイクロマクイーン ライト(micro:Maqueen Lite)を自律的に運転させるためのプログラミング方法を把握します。
# 10.2. 必要な機材
# PC利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマクイーンのコントロール用とプログラミング | - |
02 | micro:bit保護ケース | 1 | HW | micro:bit保護 | - |
03 | micro:bit用 USBケーブル | 1 | HW | micro:bitとPCの接続 | - |
03 | マイクロマクイーン ライト(micro:Maqueen Lite) | 1 | HW | 車体本体 | - |
04 | 単4型乾電池 | 3 | HW | マイクロマクイーンとmicro:bitへの電源供給 | - |
05 | Chromebook、MacOS、WindowsのPC | 1 | HW | MakeCode操作用 | - |
06 | Google Chrome | 1 | SW | MakeCodeアクセス用 | - |
07 | USB変換アダプタ | 1 | HW | PC接続用 | PCのUSBポートがType-Cのみの場合、TypeC ⇄ TypeA変換アダプタが必要 |
08 | 路線マップ | 1 | ー | 車体が走る路線として利用 | 自作でも可能 |
# タブレット・スマートフォン利用時に必要な機材
No. | 名称 | 個数 | HW/SW | 用途 | 補足 |
---|---|---|---|---|---|
01 | micro:bit(v2)本体 | 1 | HW | マイクロマクイーンのコントロール用とプログラミング | - |
02 | micro:bit保護ケース | 1 | HW | micro:bit保護 | - |
03 | マイクロマクイーン ライト(micro:Maqueen Lite) | 1 | HW | 車体本体 | - |
04 | 単4型乾電池 | 3 | HW | マイクロマクイーンとmicro:bitへの電源供給 | - |
05 | タブレット・スマートフォン | 1 | HW | micro:bitアプリ操作用 | - |
06 | micro:bit アプリ | 1 | SW | micro:bitプログラミング用 | - |
07 | 路線マップ | 1 | ー | 車体が走る路線として利用 | 自作でも可能 |
# 10.3. MakeCodeブロックの概要
No. | ブロック | 概要 | 機能 |
---|---|---|---|
01 | ライントラッキングセンサー用ブロック | 車体底部の2つのライントラッキングセンサーのデータを取得。 具体的には、黒い線を検知した場合、インジケーターをOFFにしたうえ、0を出力。白い部分を検知した場合、インジケーターをONにしたうえ、1を出力。 ・ センサーの選択:左、右 ・ 戻り値:0、1 |
# 10.4. 動作イメージ
黒い路線に沿って、マイクロマクイーン ライト(micro:Maqueen Lite)が自動運転します。 マップを自作することも可能です。黒いテープなどである程度太い線を作ることが必要です。
参考情報
- マップを自作することも可能です。黒いテープなどである程度太い線を作ることが必要です。
# 10.5. プログラミング例
# MakeCodeプログラミング例(ブロック)
# MakeCodeプログラミング例(JavaScript)
basic.forever(function () {
if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 0 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 0) {
maqueen.motorRun(maqueen.Motors.All, maqueen.Dir.CW, 50)
} else if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 1 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 0) {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 30)
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 10)
} else if (maqueen.readPatrol(maqueen.Patrol.PatrolLeft) == 0 && maqueen.readPatrol(maqueen.Patrol.PatrolRight) == 1) {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, 10)
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, 30)
}
})
# MakeCodeプログラミング例(python)
def on_forever():
if maqueen.read_patrol(maqueen.Patrol.PATROL_LEFT) == 0 and maqueen.read_patrol(maqueen.Patrol.PATROL_RIGHT) == 0:
maqueen.motor_run(maqueen.Motors.ALL, maqueen.Dir.CW, 50)
elif maqueen.read_patrol(maqueen.Patrol.PATROL_LEFT) == 1 and maqueen.read_patrol(maqueen.Patrol.PATROL_RIGHT) == 0:
maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 30)
maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 10)
elif maqueen.read_patrol(maqueen.Patrol.PATROL_LEFT) == 0 and maqueen.read_patrol(maqueen.Patrol.PATROL_RIGHT) == 1:
maqueen.motor_run(maqueen.Motors.M1, maqueen.Dir.CW, 10)
maqueen.motor_run(maqueen.Motors.M2, maqueen.Dir.CW, 30)
basic.forever(on_forever)
# MakeCodeプログラミング例のQRコード
# 10.6. ライントレーサーのキャリブレーション
ライントラッキングは、Maqueenの底面についている二つのライントレーサー(赤外線グレースケールセンサー)が利用されます。
校正された状態で出荷されるため、基本的には再校正の必要はありませんが、センサーが黒い線をうまく認識できていない場合には、以下の手順でセンサーのキャリブレーション(校正)と確認を行うことができます。
# ライントレーサーのキャリブレーション手順
以下の手順でキャリブレーション(校正)を行うことができます。
No. | 画像 | 手順 | 確認 |
---|---|---|---|
01 | 製品に付属されているトラッックマップの裏面にあるマイクロマクイーン (micro:Maqueen)のキャリブレーションエリアに車体を置きます。 | 左右のライントレーサーが、黒いエリアに入っていることを確認します。 | |
02 | キャリブレーションボタン(Link-Key)を約1秒間押します。 | ― | |
03 | ― | 2つの青色LEDライントラッキングインジケーターが点滅し、キャリブレーションが完了します。 |
# キャリブレーション結果の確認
キャリブレーションが問題なく完了したかを確認することができます。
下記の手順通りでインジケーターが点灯・消灯する場合、センサーが正常に動作されています。
No. | 画像 | 手順 | 確認 |
---|---|---|---|
01 | マイクロマクイーン (micro:Maqueen)を白い場所に置きます。 | 2つのライントラッキングインジケーターが点灯します。 | |
02 | マイクロマクイーン (micro:Maqueen)を黒い場所に置きます。 | 2つのライントラッキングインジケーターが消灯します。 |