人工知能のディープラーニングを使って、ラジコンカーの自動運転をしてみました。ラジコンカーに自動運転をさせるための手順は、おおまかに以下の三つです。1)手動運転モードで、人がラジコンカーを操縦します。コースからはみ出さないように10周以上走らせます。そのときのカメラ画像とステアリング角度の情報を記録します。2)それらを訓練データとして人工知能のディープラーニングに学習させます。3)自動運転モードに切り替えると、ディープラーニングの学習結果を使って、ラジコンカーが自動運転します。動画ラジコンカーの自動運転の動画ラジコンカーの自動運転の動画(コースを少し難しくしました)ラジコンカーに取り付けたカメラの映像(人がラジコンカーを操縦中)このような画像をディープラーニングの訓練データに使用する。早送りで編集してみました。Design(8GB)(注意)ラジコンカーの、スピードコントローラとサーボはPWM入力に対応しているものを選択する。Carのものを利用しました。Carの説明通りに行いました。Carのページ2.配線ラズベリーパイに、PWMサーボドライバー、カメラを接続する。3.3V(01pin),SDA1(03pin),SCL1(05pin),Ground(09pin)をPCA9685の基板に接続)PWMサーボドライバーには、以下のチャンネルにサーボとスピードコントローラを接続する。1電源は、バッテリーを分岐して、スピードコントローラ、DCDCコンバータ、電圧計に接続する。DCDCコンバータの5V出力をラズベリーパイに接続する。3B+用)をダウンロードし、マイクロSDカードに書き込む。それを使ってラズベリーパイを起動する。PCで、Python環境のAnacondaにdonkeycarのソフトウェアをインストールする。PCからラズベリーパイの接続には、TeraTermの使用した。ファイル転送にはWinSCPを使用した。PWMと前輪のステアリングの関係について、キャリブレーションをする。1PWMと後輪のスロットルの関係について、キャリブレーションをする。0キャリブレーション結果をconfig.pyに書き込む。開く(IPアドレスはpiに合わせる)GUI画面このChrome画面でPWM出力値を変更できる。j車の旋回直径のグラフを書いて左右対称になるようキャリブレーションを再調整(config.pyを修正)する。310Chrome画面にラジコンカーのカメラ映像が映るので、カメラの取付位置と角度を調整する。piで、ブルーツースを有効にして、ワイヤレスコントローラの設定を行う。4.人がラジコンカーを操縦してデータを記録するpiとワイヤレスコントローラの接続に成功すると、以下で確認できる。--jsモードは起動時の「User」のまま。ワイヤレスコントローラで、ラジコンカーを操縦して、訓練データを記録する。一定スロットルpiのtubフォルダにDonkeyデータが記録される。((注意)ボタン割り当てが違ったのでcontroller.pyを修正した。)((注意)tubフォルダ内の記録データを削除するときにmeta.jsonをうっかり消さないこと。)5.ディープラーニングで学習するtubフォルダ内に記録されたデータをWindowsに転送する。それを訓練データとして、ディープラーニングを学習させる。models/mypilot学習結果のmypilotをpiに転送する。記録したデータから動画を生成する。--out=tub_movie.mp4(tubフォルダ内に記録されたデータが最初(0_cam-image_array_.jpg、record_0.json)からでないときエラーになった。)6.学習結果を使って、ラジコンカーを自動運転させる学習結果で起動する。Angle」に切り替える。Angle」に切り替えたときにエラーが出たのは、Windowsのmanage.pyがKerasLinearで、piのmanage.pyがKerasCategrocialであった。これらを統一する必要がある。)ラジコンカーは自動運転でコースを走る。7.ディープラーニングのモデル学習モデルを出力してみた。