レゴマインドストームEV3のClassroomで黒ライントレースをしてみる | そう備忘録

レゴマインドストームEV3のClassroomで黒ライントレースをしてみる

Classroomでの黒ライントレース

教育用レゴマインドストームEV3の新しいプログラミング環境のClassroomで黒ライントレースのプログラムを作ってみた時の備忘録。

ClassroomのユーザインターフェースはScratch風に変更されているのだが、従来のLabVIEWソフトウェアでのプログラミングと同じことがほぼ出来るはずなので、まずは黒ライントレースのプログラムを作ってみた。

Classroomでの黒ライントレース

ライントレースの仕組み

黒ライントレースの基本的な仕組みだが、カラーセンサーの反射光の強さを利用する。

反射光の強さとはカラーセンサーから光を照射して反射する光の強さを測定する機能で黒い部分は光を吸収するので反射光の強さが弱くなり、逆に白い部分は光を反射するので反射光の強さが強くなる。

そして黒ライン上の真上にカラーセンサーをもってくるのでは無く、半分の位置にカラーセンサーの光が当たるように常に左右の車輪のパワーを微調整する。

トレースの中心位置

カラーセンサーの反射光の強さを常に監視して黒側に寄ったときには反射光の強さが弱くなるので右側の車輪の速度を強めて左旋回をする。

逆に白側に寄った時は反射光の強さが強くなるので左車輪の速度を早めて右側に旋回する事を常に繰り返す。

左右の車輪のパワー制御のイメージ図

詳しくは以前の記事を参照して欲しい。

従来のプログラム

比較の為にLabVIEWでの従来をプログラムを載せておく。

プログラムの詳細については以前の記事のプログラミングの説明欄を参照して欲しい。

黒ライントレースプログラム全体

Classroomでのプログラミング

上記と同じプログラムをEV3 Classroomで作成してみる。

EV3 ClassroomソフトウェアのインストールとEV3インテリジェントブロックとの接続は以前の記事を参照して欲しい。

プログラム全体

LabVIEWと比較すると一つのブロックに収まる情報が多くなりプログラム全体としては短くなっているのを感じる。

Classroomでの黒ライントレースプログラム全体

またClassroomの場合、プログラムが長くなった際に縦にプログラムが続く。

以前のLabVIEWは横に長くなるので正直プログラムを追いづらい側面もあった。

PythonやC++でのプログラミングと同様に縦スクロールでプログラムの前後を行き来出来るのは見やすいかも知れない。

詳細説明

プログラムをスタートする

変数Centorに46をセットする

46はカラーセンサーの中心を黒ラインの半分に合わせた時の反射光の強さ

環境(室内、室外、昼、夜)によって数値は異なるのでライントレースの直前に測定して値を変更する

変数BasePowerに30をセットする

走行時の基本となるモーターのパワー

この数値を大きくするとライントレースの速度が早くなるのだが、まずは30程度で試してみる

終了条件無しのループ

ループしながら左右のモーターのパワーを常に微調整しながらライントレースを行う

ポート1に接続したカラーセンサーの反射光の強さを取得して変数Centorを減算して中心位置からどれぐらいズレているのかを判定して変数Powerにセットする

中心位置からズレている割合に応じて左右のモーターのパワーを調整する

ズレている割合が大きいほど、より強い値で中心位置への補正を行う必要がある

2.4で割っているのはそのままの数値をモーターのパワー補正に使ってしまうと補正が強すぎて左右に蛇行してしまいスムーズなライントレースができない為

但しBasePowerを大きくすると、より強い数値で補正する必要が出てくるので2.4よりも小さい数値を設定しないと補正が間に合わずにルートから外れてしまう

変数BasePowerに変数Powerを加算してポートB(左車輪)のパワーを調整する

変数BasePowerから変数Powerを減算してポートC(右車輪)のパワーを調整する

実行

プログラムを作成したら右下の三角の実行ボタンをクリックするとプログラムをEV3にダウンロードをしながら実行される。

プログラムの実行

ライントレースの様子

EV3 Classroomによる黒ライントレースの実際の様子は以下の動画で確認して欲しい。

カーブで若干補正が間に合っておらず黒ラインの右側に出そうになっているので除算する数値(2.4)をもう少し小さい値にしても良いのかも知れない。

以上で今回の記事は終了とする。

最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

おすすめ

2件のフィードバック

  1. ジル より:

    はじめまして!
    EV3のプログラムの組み方について参考にさせてもらっています。
    私はjavaのエンジニアをしながら
    ここ一年程EV3を使ったプログラミング研修の講師を担当しています。
    souichirouさんのプログラムがすごいなと思っています。
    情報交換など交流出来たらうれしいです!
    よろしくお願いいたします。

    • souichirou より:

      ジルさん こんにちは。
      コメントありがとうございます。
      プログラムが少しでも参考になったのであれば良かったです?
      情報交換ですがHP上部の「問い合わせ」より連絡を頂ければメールでのやり取りが可能です。
      よろしくおねがいします。

ジル へ返信する コメントをキャンセル

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。