変わりモノがいい!

変わりモノには価値がある・・・ハズ?

RoverC、悪戦苦闘中

メカナムホイールの制御は難しいね。

RoverCはメカナムホイールを採用している。
見た感じもカッコいいし、上手く制御できたら普通のタイヤでは実現できない姿勢での移動が可能になる優れモノです。
でも、当然のことではありますが、慣れないと思うように動かせないことが今回判りました。
AI自動運転チャレンジの前に立ちはだかる壁、ですね。
ということで、今回RoverCを色々といじってみました。

f:id:ken2017:20200721133935j:plain

何が起きたかというと、

先日の記事でRoverCが自律?走行できたと書きました。
動画も載せていますが、比較的スムーズに動いていたので良かった良かったと安心し、AI自動運転にチャレンジに向けた準備に入りました。
AI自動運転ではカメラを前向きにする可能性があると思い、カメラの位置は今の位置よりは下げる必要があると考えました。
いきなりカメラを前向きにするのはチャレンジングすぎるので、まずはカメラの向きは下向きで位置を下げ、RoverC本体とカメラの位置を調整できるようにしました。
これをやった後、ドツボにはまりました。
カメラの位置を変えた写真がコレ。

f:id:ken2017:20200721135144j:plain
上から見た写真がコレ。

f:id:ken2017:20200721135316j:plain
さて、GO!
と走らせた動画がコレ。
問題は、カーブを出た後の姿勢の悪さ、直線走行時のふらつき、直線走行時の斜めに向いての走行、と、カメラを高い位置で走行した前回の動画とは別物のような走りになりました。


P制御

こちらの動画の方が程度が酷く、走行中に黒線からはずれ来た道の黒線を見つけ逆回転を始めました。

P制御B
これには参りました。
原因を探るために開発環境につないで何が起きているかを把握することとしました。

まずは、画像入力から

UnitVからの画像を2値化して、その画像に対して最小二乗法を適用してラインの関数を求め、傾きを求めています。
開発環境であるMaixpyにUnitVを繋ぎラインの画像を映して2値化の閾値が適切かどうか、ライン以外の映像の影響の有無をチェックしました。

f:id:ken2017:20200721143845j:plain
結果は、2値化の閾値は適切なるもライン以外の画像の影響は特にカーブの時に出ている可能性があるので画像にマスクをかけることにしました。
マスクをかけたのは、画像の上1/3、左1/5、右1/5です。
この領域の画像を見ないようにしました。

次にメカナムホイール制御の状態をチェックしました。

これには手間取りましたし、未だ完璧ではなく暫定的な処置と思っています。
メカナムホイール制御の状態のチェックはRoverCのコンとロラであるM5StickCを開発環境であるArduino IDEに繋いで行いました。

f:id:ken2017:20200721144828j:plain
チェックの仕方は、M5StickCと開発環境が入ったパソコンをUSBで繋いだ状態でパラメータや制御の式を変えて動かし、状態の変化や動きの変化をチェックし、結果に基づいて開発環境でプログラムを変更し、それをM5StickCに転送し、結果を確認する、ということを切り返し、これはと思う状態になったら実際の走行路で試してみるというやり方です。
特に、メカナムホイールの制御が気になっていましたので、必要な情報をM5StickCのLCDに表示してRoverCになにが起きているのかを推定できるようにしました。

f:id:ken2017:20200721145857j:plain
その結果判ったことは、
走行速度を15に固定しているが(最高は100)これではメカナムホイールの4つのタイヤに同じ指示をしてもタイヤによっては回転しない場合がある、
直線走行における斜め姿勢での走行の原因はここにある可能性がある、
また、カーブを抜ける時の姿勢の戻りの遅さにも影響を与えている可能性がある、
ということでした。
ということで、走行速度を上げることとしました。
また、実走行路での直線走行でのふらつきがあったので制御方式を変更することとしました。
変更前は、PID制御のP制御のみを使っていましたが、Dによる制御も加えPD制御に切り替えました。
上のところで暫定処置と書いたのは、PD制御のパラメータの調整が不十分でカーブの走行に若干の不安定さが残っているのでカーブでは走行速度を落とすようにしたことです。
そんなこんなを繰り返し、たどり着いた状態がコレです。

なんとか走ってくれた。

直線におけるふらつきやカーブ出口における姿勢の悪化は抑制できたと思います。
但し、直線における斜め姿勢走行の状態は改善はされているとはいえ、斜めの状態は残っています。
これはメカナムホイールの4つのモータに対する速度調整が不十分であるのだと思います。
速度を15にした時には、メカナムホイールの一つ、二つが回転しないような状態にもなりましたので、今の速度である20では調整代があまりないので、速度をもう少し上げて調整する必要があるかも知れません。
メカナムホイールは楽しいホイールですが、使い方は難しそうです。


PD制御

それにしても楽しいオモチャを手に入れてしまったと思っています。
ブログを書くことも忘れてRoverCの動作改善に夢中になっていました。
もう暫く動作改善を続け、その後にAI自動運転にチャレンジしたいと思います。
これはハードルが一気にあがります。
Donkey CarやDeep Racerもどきを作ることになるので。
熱中しすぎたらブログは夏休み(ぶきっちょなもので何かに集中すると他のことができなくなるのです)、になりそうな予感です。
気分のおもむくままに、ですね。

では、また。

(参考情報)

www.donkeycar.com

aws.amazon.com

qiita.com

 

プライバシーポリシー お問い合わせ