アフレル スプリングカップ2019向けロボットの改良その2 ~レゴマインドストームEV3~ | そう備忘録

アフレル スプリングカップ2019向けロボットの改良その2 ~レゴマインドストームEV3~

アフレルスプリングカップ2019向けロボットの改造その2

アフレル社が主催するアフレルスプリングカップ2019 ミドル部門向けロボットを更に少しだけ改造したのでその時の備忘録。

機体の基本的な構造、プログラム全体の説明についての初回の記事がこちら

そして後輪をキャスター変更したり、ラベルの読み込みプログラムの改修を施した前回の記事はこちら

そして今回は下記の2点の変更を行った。

  1. カラーセンサーを2つから1つに減らした
  2. ライントレース時に左右に大きく蛇行する動きの改善

1についてだがスプリングカップ2019には「レゴマインドストームEV3の基本セットに含まれるパーツのみ使用可能」との競技規約がある。

お恥ずかしいことに基本セットにカラーセンサーが2つ付属していたと勘違いをして前回までの記事を書いてしまっており、動画を見た人から指摘をしてもらって初めて間違いに気がついた。

それなのでカラーセンサーについては改良というよりも「元々の競技規約に合わせた」という事になる。

2.は前回の記事で後輪をキャスターに変更してスピードをアップさせた所、滑りが良くなりすぎてライントレース時に蛇行するようになってしまっていた。

カラーセンサーを1つに変更する際にライントレースのロジックを見直すので同時にこの問題の解消も図ってみる。

カラーセンサーを1つに変更した

ライントレースのロジック

基本的な考え方

カラーセンサーが1つの時のライントレースは黒ラインと白紙のちょうど真ん中にカラーセンサーが来るようにトレースする。

トレースの中心位置

また予め記録しておいた中心位置のカラーセンサーの反射光の強さと現在の反射光の強さ(今回は48)との差に応じて左右の車輪のパワーを調整してライントレースを行う。

ライントレースの詳細についてはこちらの記事を参照

今回のロジック

黒ライントレース改良版

プログラム開始

変数Center(48がセットされている)を読み込む

変数Centerには中心位置の反射光の強さが設定されている

カラーセンサー(ポート1)の反射光の強さを読み込む

3と2の値の差分を5で割った補正値を算出する

差分をそのまま左右の車輪のパワーに加・減算してしまうと値が大きすぎて蛇行がつよくなるので、適当な数値で割っている

変数Power(30がセットされている)を読み込む

5から4の絶対値を減算する

今までは変数Powerに4の補正値を加減算して両輪のパワーを調整してライントレースを行っていた。

※今までのトレースロジックの考え方はこちら

しかし前回後輪をキャスターに変更してPowerをアップした所、蛇行が激しくなってしまった。

これは後輪の滑りが良くなりすぎたこともあるがPowerをアップするとラインから外れた時の補正も勢いがつきすぎてしまい、反対側に大きくはみ出してしまう事によって蛇行が発生していると考えた。

それならば中心位置から外れた量に比例して元のパワーを下げてやれば蛇行が少なくなるのではと考えてこの様なロジックにした。

中心位置から外れていなければ4.の値はゼロになるので変数Powerは30のままになる

スピードを落としながら補正する

6に4の補正値を加算する

ポートB(左車輪)に7の値をセットする

6から4の補正値を減算する

10

ポートC(右車輪)に9の値をセットする

実際の動き

プログラム改良後の実際の動きの動画。

若干危なっかしい所もあるが前回よりもライントレースが安定している事が分かる。

souichirou

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

おすすめ

2件のフィードバック

  1. 福岡の高校生 より:

    バックライントレースが
    全くできません。
    アドバイスがあればお願いします。

    • souichirou より:

      バックライントレースがどの様なものかイマイチ分からないです。
      前進ではなくてバック(後退)でライントレースをするのですか?
      そうであれば記事中の8と10の処理を入れ替えたらどうでしょう。

質問やコメントや励ましの言葉などを残す

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