変わりモノがいい!

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

PiCar-V Self-driving 第4回目チャレンジ 惨敗

推定原因に対するチェックを行いました。

PiCar-VのSelf-drivingができるようにはなりましたが、レーンから外れることが多く、運転免許試験に落ちるような下手な運転手状態、でした。
ステアリング角度に問題があると思われ、その原因として、
1)そもそも学習データを取った時の僕のマニュアル運転が下手
2)picarというライブラリを使っているがステアリングの制御方法を確認していなかった
3)走行時にカメラが上、下に動いている
この中に原因があることを祈り、調べてみました。

f:id:ken2017:20200903062726j:plain


まずは僕の運転テクニック

PiCar-Vの運転をジョイスティックのようなものでできればもっと上手に運転できると思うのですが、パソコンのキーボードのキーで前進、後退、左折、右折を指示するだけなので結構やりにいくいです。

f:id:ken2017:20200807092409j:plain
このため、カーブが連続しているような場合、ステアリング操作に工夫というかコツが必要になります。
例えば左カーブに入る時、できるだけレーンの右側に位置をとり、カーブに入った後には、小刻みに左折ボタンを押したり離したりして、カーブを抜ける時には意図的に右折ボタンをちょっと押してPiCar-Vの姿勢をレーンに対して直進方向になるようにします。
今回は、このことを意識して運転しました。

f:id:ken2017:20200826101115j:plain

次は、picarの中のステアリングの制御方法の確認

picarの中のステアリングに関するコードと走行中の画像をモデルにかけて計算した結果とステアリングに関するコードの整合性を確認しました。
まずは、picarの中のステアリングに関するコード

f:id:ken2017:20200903065106j:plain
範囲チェックを行ったのちにサーボコントローラへの角度データの書き込みを行っています。
特に問題になる記載はありませんでした。
次にカメラから入手した画像をモデルにかけて計算するコード

f:id:ken2017:20200903065322j:plain
これはシンプルなコードであり間違えようがないですね。
最後に計算した結果をステアリングの制御部へ渡すコード

f:id:ken2017:20200903065458j:plain
上のコードは速度とステアリング角度の両方が記載されていますが、ステアリング角度に関しては計算結果そのものを直接入れています。
ここで範囲チェックを行っていなくてもpicarのところのステアリング制御のコードのことろで範囲チェックを行っているので特に問題はないと思います。
ということでステアリング制御のためのコードは問題がないと判断しました。

これが原因かな? 走行時のカメラの動き

最後の候補がカメラの動きです。

学習データを撮る時にもSelf-drivingの時にもカメラが勝手に位置を変えていました。
この原因が判らず、最初に学習データを撮ったときはカメラの位置が変わったらキーボードを操作してカメラの位置を下向きにしていました。
どうやらこれが良くなかったようです。
僕は、PiCar-Vのカメラの初期位置を下向きに設定していました。
これは、できるだけレーンの白線をキチンと撮像できるようにと思ってやったことです。
この状態でPiCar-Vを走行させると一定時間経過するとカメラが動いて水平方向になるように上方向に動きました。
そして一定時間経つと今度は下方向に位置を変えました。
この結果、学習用の画像を撮ってもカメラの位置がどこにあるかで撮れる画像が大きく違っていました。
これを避けるために、試しにカメラの初期位置を水平方向(上位置)にして走行させました。
すると理由はまだ見つけていないですが、カメラの位置は水平のままで動きませんでした。
picarにあるカメラ用のサーボコントローラのコードを時間があるときにチェックしようと思います。

再度学習開始

準備ができましたので学習データ撮りのための走行を行いました。
今回は、できるだけ多くの学習データが取れるように何周も何周も運転しました。
そうやって前回よりも多い5203個のデータ(画像)を撮りました。
このデータを使って学習を行った結果が以下の画面キャプチャーです。
今回もepoch数は1000としています。
最終的な速度Loss、角度Lossは非常に小さな値になっており前回の学習より結果が良いように思います。
そのことを表すように検証における計算で求めた速度、角度のデータと実際のデータの差は前回の学習の時の差よりも小さく、角度でいえば最大でも4度未満となっており期待が持てるものです。
今回はお昼過ぎに学習を開始し、終了したのは夜中の23時40分ごろ。
11時間程度かかりました。

f:id:ken2017:20200903070133p:plain

第4回Self-drivingチャレンジ実施

祈るようにPiCar-Vを走らせました。
その結果がコレ
残念、改善できず。


第4回Self-drivingチャレンジ

動画をよく見てみると、狭いところでコースを作った関係でカーブがきつく、左折が主体で右折指示を出すことが少ないことが原因の一つになっているようにも思えます。
従って左折での失敗はないが左折後の姿勢修正ができていないように思えます。
要は右折指示に相当するデータが極端に少ないように思いました。
このことを教訓として再度、学習データを撮ることにします。
直線走行時にも左折時にも意識的に右折指示を出すようにしてみます。
要は、ハンドルを左右に動かしながら走行するイメージです。
どういう結果になるか判りませんが試してみます。
今日はここまで。
明日もゴールに向けて頑張ります。

では、また。

(記事後記)
ひょっとしたら制御遅れが原因かも。
制御が遅れ、結果、学習ででてきたことがない画像が入力され姿勢が修正できない。
これに対応するためには、意図的に制御遅れと同じような姿勢を作り、それから姿勢を修正する動作を取り入れた学習をすれば実際の走行において制御遅れが発生した場合にも対応できるかも。
試してみるかね。

 

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