DonkeyCar セットアップ（旧バージョン2.5.8）

#ハードウェア
DonkeyCarスターターキット
https://www.robocarstore.com/products/donkey-car-starter-kit

または
RaspberryPi3B または 3B+
8G以上のマイクロSDカード
ラズパイ広角カメラと長いカメラケーブル(30cm)
市販RCカーシャシ（タミヤTT-02，M-05，等）
PCA9685 I2C-PWMインターフェース
https://www.adafruit.com/product/815
の互換品等
#PCでラズパイ起動SDを作成
イメージをダウンロード
https://drive.google.com/open?id=1vr4nEXLEh4xByKAXik8KhK3o-XWgo2fQ
etcherで書き込む
SDのルートにファイル名「ssh」の空ファイルを作成
SDのルートに無線LAN接続情報のファイル「wpa_supplicant.conf」を作成
#ラズパイでインストール作業
RaspberryPiにセットして起動
PCからターミナルソフトでラズパイにSSH接続
接続先：donkeypi.local
ユーザー名：pi
パスワード：raspberry
注：ラズパイのデスクトップは使用できない
ログインしたら
(env)$ sudo raspi-config
7 Advanced Options の
A1 Exapand Filesystem を選択し
Finish で再起動
起動したら再度ログイン
#DonkeyCarのインストール
(env)$ sudo apt-get update
(env)$ sudo apt-get upgrade
(env)$ git clone https://github.com/autorope/donkeycar
(env)$ cd donkeycar
2.5.8をtag2.5.8という名のブランチにチェックアウト
(env)$ git checkout -b tag2.5.8 refs/tags/2.5.8
(env)$ pip install -e .\[pi\]

Adafruit_PCA9685 のインストールでエラーになる場合は
~/donkeycar/setup.py の42行目をコメントアウトして再実行
終了したら
pip install Adafruit_PCA9685 
でインストール

(env)$ donkey createcar ~/mycar
#起動
車体を台に乗せてタイヤを浮かす
(env)$ cd ~/mycar
(env)$ python manage.py drive
（ここでタイヤが回り始めるかもしれない）
タブレット等のブラウザでdonkeypi.local:8887に接続
ブラウザ画面左上の「Joystick/Gamepad/Device Tilt」のJoystickボタンをクリック
四角いjoystickエリア内でタッチし上下左右にドラッグするとタイヤが動作する
(env)$ ctrl-c
で終了
#ESCとステアリングサーボの調整
~/mycar/config.pyの
STEERING_CHANNEL = 1
STEERING_LEFT_PWM = 420
STEERING_RIGHT_PWM = 360
THROTTLE_CHANNEL = 0
THROTTLE_FORWARD_PWM = 400
THROTTLE_STOPPED_PWM = 360
THROTTLE_REVERSE_PWM = 310
の数値を調整する
CHANNELの数値はESC/サーボのコネクタを接続したI2C-PWMのチャネル番号

★タミヤのESCなら
STEERING_LEFT_PWM = 500
STEERING_RIGHT_PWM = 300
THROTTLE_FORWARD_PWM = 500
THROTTLE_STOPPED_PWM = 400
THROTTLE_REVERSE_PWM = 300

★ステアリングの方向が逆の時は
STEERING_LEFT_PWM と STEERING_RIGHT_PWM の値を入れ替える
★タイヤの回転方向が逆の時は
THROTTLE_FORWARD_PWM と THROTTLE_REVERSE_PWM の値を入れ替える

#ゲームコントローラーのインストール
(env)$ pip install git+https://github.com/autorope/donkeypart_ps3_controller.git
~/mycar/manage.pyを編集
28行目に次の行を追加
from donkeypart_ps3_controller import PS3JoystickController
50～52行を次の5行に差し替え
ctr = PS3JoystickController(
   throttle_scale=cfg.JOYSTICK_MAX_THROTTLE,
   steering_scale=cfg.JOYSTICK_STEERING_SCALE,
   auto_record_on_throttle=cfg.AUTO_RECORD_ON_THROTTLE
)
~/mycar/config.pyの51行目のTrueをFalseに替えた方が良い
#走行練習
(env)$ python manage.py drive
ブラウザ画面のカメラ画像で車体直前の路面が映り込むようにカメラの向きを調整
(env)$ ctrl-c
で終了
(env)$ python manage.py drive --js
#ホストPCでインストール作業
★Macの場合
minicondaをダウンロード
ターミナルを開きminicondaをインストール
$ xcode-select --install
(Xcodeがインストール済みなら不要)
$ git clone https://github.com/autorope/donkeycar
$ cd donkeycar

2.5.8をtag2.5.8という名のブランチにチェックアウト
$ git checkout -b tag2.5.8 refs/tags/2.5.8

$ conda env create -f install/envs/mac.yml
$ source activate donkey
ターミナルで再ログインした際はこのコマンドで仮想環境に入る事
(donkey)$ pip install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.3.0-py3-none-any.whl
(donkey)$ pip install -e .
(donkey)$ donkey createcar ~/mycar
#教師データ作成
ラズパイの
~/mycar/tub/
にあるxxx_cam-image_array_.jpgとrecord_xxx.jsonを全て削除
(env)$ rm ~/mycar/tub/\*.jpg
(env)$ rm ~/mycar/tub/record\*.json
車体をコース上に置く
(env)$ cd ~/mycar
(env)$ python manage.py drive
コースを３～4周走行
ctrl-cで終了
#ホストPCで訓練
ホストPCのターミナルにて
(donkey)$ rsync -r pi@donkeypi.local:~/mycar/tub/  ~/mycar/tub/
(donkey)$ python ~/mycar/manage.py train --tub ~/mycar/tub --model ~/mycar/models/mypilot
(donkey)$ rsync -r ~/mycar/models/ pi@donkeypi.local:~/mycar/models/

★USBメモリを使う
ラズパイにUSBメモリを挿す
(env)$ ls /dev
デバイス名(sda1)を確認
(env)$ sudo mount /dev/sda1 /media
(env)$ sudo cp -r ~/mycar/tub /media/任意の名前
(env)$ sudo umount /media
USBメモリをPCに移動
#推論で自動運転
ラズパイにSSH接続しているPCのターミナルから
(env)$ python manage.py drive --model=~/mycar/models/mypilot
タブレット等のブラウザでraspberrypi.local:8887に接続
車体をコース上に置く
ブラウザ画面にある「Mode & Pilot」をクリックして「Local Pilot(d)」を選択
#学習画像ファイルから動画を生成
PCのターミナルで
(donkey)$ donkey makemovie --tub ~/mycar/tub --out ./movie.mp4