Kerasによるオートパイロットのトレーニング
Donkey Car を確実に運転できるようになったら、次にKerasで実装したニューラルネットワークを鍛えて、自動運転させてみましょう。こちらの手順にしたがってください。
データ収集
次の手順で、良質なデータを収集してください。
- データを記録せずに数周トラックを運転練習します。
- 10周ミスなく運転できる自身がある場合は、
Start Recording
を押します。 - もしクラッシュやトラックから外れた場合は、直ちに
Stop Car
を押して記録を止めてください。 - 10から20周の良いデータ(5~20kイメージ)を収集できたら、Donkey CarのSSHセッション内で
Ctrl+C
を押し車を止めます。 - 収集したデータは最新tubフォルダ内のデータフォルダにあります。
Donkey CarからホストPCへデータ転送
Raspberry Piはそれほど強力ではないので、データをホストPCに転送してトレーニングする必要があります。
ホストPC上の新しいターミナルセッションで rsync
を使ってRaspberry Piから車のフォルダをコピーします。
rsync -r pi@<Raspberry PiのIPアドレス>:~/mycar/data/ ~/mycar/data/
ホストPC上にrsyncコマンドがない場合、WinSCPなどのソフトウェアで代替可能です。
モデルのトレーニング
- ホストPC上のターミナルから、最新 tub データを保管しているディレクトリパスを引数として渡してトレーニングスクリプトを実行します。必要に応じて、複数の tub を一緒にするために
./data/*
や./data/tub_?_17-08-28
のようにパスマスクを渡すことができます。例えば:
python ~/mycar/manage.py train --tub <tub フォルダ名(カンマで複数指定可能)> --model ./models/mypilot
tub
を引数指定しない場合、デフォルトの data
ディレクトリが使用されます。
python ~/mycar/manage.py train --model ~/mycar/models/mypilot
- rsyncをもう一度使用してオートパイロット(モデルファイル)をホストPCから車にコピーします。
rsync -r ~/mycar/models/ pi@<Raspberry PiのIPアドレス>:~/mycar/models/
- 車を再度運転開始状態にして、あなたのトレーニングしたモデルに自動運転をまかせることができます。
python manage.py drive --model ~/mycar/models/mypilot
トレーニング Tips
-
Mode & Pilot: ここまで達成したことをお祝いします。上のコマンドを実行した後に最初に留意すべきことは、Mode & Pilot メニューのオプションを確認することです。それぞれのオプションの意味を説明します。
a. User : あなたが想像したとおり、これはステアリングとスロットルコントロールの両方をユーザが制御するをあらわします。
b. Local Angle : Localという単語が分かりづらいかもしれません。これはトレーニング済みモデル(上記の
mypilot
)がステアリング制御するという意味です。Raspberry Pi上で局所的(Local)にホストされているトレーニング済みモデルを指しています。c. Local Pilot : これは、トレーニング済みモデル (mypilot) がステアリングとスロットルの両方を制御することを意味しています。コミュニティでは、現時点でのこのモードの利用はあまり信頼性が高くないと言われています。
d. Max Throttle や Throttle Mode オプションもチェックして、いくつかの設定で遊んでください。非常に多くのトレーニング作業に役立つでしょう。
-
Build a Simple Track : これはあまり詳しくは書かれていませんが、(理論的に)どのような種類のトラックに対しても訓練することができます。最初にストライプのセンターラインを持つ2車線トラックを構築する必要はないかもしれません。センターラインのない1車線で試してみてください。少なくとも、エンドツーエンドのテストを行い、ソフトウェアパイプラインがすべて適切に機能していることを確認することができます。もちろん、次のステップとして、もっと標準的なトラックを作成し、あなたに次に開催される meetup で競争したいと思うでしょう!
-
Get help : 友人を一人二人手助けを依頼してみてください。繰り返しますが、これはトラックの構築に非常に役立ちます。自分で2車線のトラックを作成することが難しいためです。また、テープの代わりに リボン を使うことによりリソース(やテープ)を節約することもできます。それらを保持するためのテープを少し必要とするかもしれませんが、彼らを再利用することができ、そして彼らはより多くの努力を積み重ねることができます(屋外の場合、風が最初にそれらを貼り付けることを困難にするかもしれませんが)。