t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

LEGO Mindstorm EV3でライントレースボットを作ってみる。

今回はLEGO Mindstorm EV3でライントレースボットを作ってみた。

ライン(線)をトレース(追いかける・辿る)するロボットだ。

絵面はこんな感じ。

このためにわざわざライントレース用のパネルを購入。
普通にAmazonで検索するとなんと1万7千円とか馬鹿げた値段のものが出てきたんだけど、競技用の公式品か何かだろうか。。

白地に黒線描いただけやん!

まじかよ。

私が買ったのは4000円くらいの良心的なやつ。

??良心的??

白地に(略!

目的

PID制御を用いたスムーズなライントレースを目指すことで、微積分の重要さを改めて認識して学習のモチベーションとしたい。
ただセンサー1個では難しいので、まずは簡単なジグザグ方式のボットから。追加のセンサーはメルカリ済み。

雰囲気

LEGO Mindstorm EV3ではサーボと、カラーセンサーを本体(コンピュータ)をから制御することができ、この機能を使うとレゴで本当に動作するロボットを作ることができる。

本体に専用のOSを書き込んだMicroSDカードを挿すことでPythonコードを動かすことができるようになるという仕組み。
起動中のスクリーンをみてみた。見る人が見れば一発で分かると思うけど、これ多分Linuxだな。

さて、ちゃんとしたタイヤは2個しか入ってないけどとりあえず適当に組み立ててみたところ、本体どう乗せるんだこれ問題に直面。

一旦ばらし。

気を取り直して再度手持ちのパーツでがちゃがちゃいじる。

できた!

こいつは、ドラゴンスネイク1号と名付けよう。

竜頭蛇尾だから。

LEGOさん。。タイヤ2個入りってひどくないっすか。

USBでパソコンに繋いで、

VS Codeでプログラムを書く。

プログラム

#!/usr/bin/env pybricks-micropython
import time
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor,
                                 InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile

# This program requires LEGO EV3 MicroPython v2.0 or higher.
# Click "Open user guide" on the EV3 extension tab for more information.

# Create your objects here.
ev3 = EV3Brick()


# Write your program here.
ev3.speaker.beep()

a_motor = Motor(Port.A)
d_motor = Motor(Port.D)
cs = ColorSensor(Port.S1)
a_motor.reset_angle(0)
d_motor.reset_angle(0)

a_motor.run(36)
d_motor.run(36)

while True:
    if cs.reflection() < 50:
        a_motor.run(36*10)
        d_motor.run(36)
    else:
        d_motor.run(36*10)
        a_motor.run(36)

説明

メインループはこの部分

while True:
    if cs.reflection() < 50:
        a_motor.run(36*10)
        d_motor.run(36)
    else:
        d_motor.run(36*10)
        a_motor.run(36)

カラーセンサーの反射値で黒線と白地の境界が50くらいなので、50より暗ければ左タイヤの回転を上げて右カーブ、明るければ右タイヤの回転を上げて左カーブという方法で1つのセンサーでライントレースを行っている。

ちなみに何度も曲がり切れずにコードを調整している途中でバッテリー切れを迎えたので上記コードになってからテストはまだしてない。

まぁそもそもセンサー1個では限界あるしな。
3つ使って綺麗にライントレースしている動画を見たので2個メルカっておいた。

ちなみにAmazonでカラーセンサーの新品を見ると2万近くしてて、なんでこんな高騰してんのか調べてみたらLEGO Mindstorm EV3てもう廃盤なんだということが分かった。

ああ、もう新品はなかなか手に入らないのか。なら1セット7万とかしているのも頷ける。

後継はLEGO SPIKEというらしい。

どれどれ。。

6万!おまえもかよ。(白目)

以上

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。