アフレル スプリングカップ2019向けロボットの改良その2 ~レゴマインドストームEV3~
Contents
アフレルスプリングカップ2019向けロボットの改造その2
アフレル社が主催するアフレルスプリングカップ2019 ミドル部門向けロボットを更に少しだけ改造したのでその時の備忘録。
機体の基本的な構造、プログラム全体の説明についての初回の記事がこちら。
そして後輪をキャスター変更したり、ラベルの読み込みプログラムの改修を施した前回の記事はこちら。
そして今回は下記の2点の変更を行った。
- カラーセンサーを2つから1つに減らした
- ライントレース時に左右に大きく蛇行する動きの改善
1についてだがスプリングカップ2019には「レゴマインドストームEV3の基本セットに含まれるパーツのみ使用可能」との競技規約がある。
お恥ずかしいことに基本セットにカラーセンサーが2つ付属していたと勘違いをして前回までの記事を書いてしまっており、動画を見た人から指摘をしてもらって初めて間違いに気がついた。
それなのでカラーセンサーについては改良というよりも「元々の競技規約に合わせた」という事になる。
2.は前回の記事で後輪をキャスターに変更してスピードをアップさせた所、滑りが良くなりすぎてライントレース時に蛇行するようになってしまっていた。
カラーセンサーを1つに変更する際にライントレースのロジックを見直すので同時にこの問題の解消も図ってみる。
ライントレースのロジック
基本的な考え方
カラーセンサーが1つの時のライントレースは黒ラインと白紙のちょうど真ん中にカラーセンサーが来るようにトレースする。
また予め記録しておいた中心位置のカラーセンサーの反射光の強さと現在の反射光の強さ(今回は48)との差に応じて左右の車輪のパワーを調整してライントレースを行う。
ライントレースの詳細についてはこちらの記事を参照。
今回のロジック
1 | プログラム開始 |
2 | 変数Center(48がセットされている)を読み込む 変数Centerには中心位置の反射光の強さが設定されている |
3 | カラーセンサー(ポート1)の反射光の強さを読み込む |
4 | 3と2の値の差分を5で割った補正値を算出する 差分をそのまま左右の車輪のパワーに加・減算してしまうと値が大きすぎて蛇行がつよくなるので、適当な数値で割っている |
5 | 変数Power(30がセットされている)を読み込む |
6 | 5から4の絶対値を減算する 今までは変数Powerに4の補正値を加減算して両輪のパワーを調整してライントレースを行っていた。 ※今までのトレースロジックの考え方はこちら しかし前回後輪をキャスターに変更してPowerをアップした所、蛇行が激しくなってしまった。 これは後輪の滑りが良くなりすぎたこともあるがPowerをアップするとラインから外れた時の補正も勢いがつきすぎてしまい、反対側に大きくはみ出してしまう事によって蛇行が発生していると考えた。 それならば中心位置から外れた量に比例して元のパワーを下げてやれば蛇行が少なくなるのではと考えてこの様なロジックにした。 中心位置から外れていなければ4.の値はゼロになるので変数Powerは30のままになる |
7 | 6に4の補正値を加算する |
8 | ポートB(左車輪)に7の値をセットする |
9 | 6から4の補正値を減算する |
10 | ポートC(右車輪)に9の値をセットする |
実際の動き
プログラム改良後の実際の動きの動画。
若干危なっかしい所もあるが前回よりもライントレースが安定している事が分かる。
バックライントレースが
全くできません。
アドバイスがあればお願いします。
バックライントレースがどの様なものかイマイチ分からないです。
前進ではなくてバック(後退)でライントレースをするのですか?
そうであれば記事中の8と10の処理を入れ替えたらどうでしょう。