このリポジトリは、 タミヤ 楽しい工作シリーズ No.104 ブルドーザー工作基本セット をDonkeyCar化した際のアプリケーションプログラム( MITライセンス 準拠)です。 工具や外装組み付け部品を除き、約22,500円(税込)で制作することができます。
-
Donkeycar Ver3.1.1 が前提です 動作確認を行ったバージョンが上記です。
-
Raspberry Pi 3B+ の使用が前提です pigpioパッケージを使用しているため Jetson では動作しません。
-
Raspbean Streatch Lite の使用が前提です 動作確認を行ったバージョンが上記です。
- 以下の部品を調達してください。
| 部品名 | 参考単価 | 数量 | 用途 |
|---|---|---|---|
| タミヤ 楽しい工作シリーズ No.104 ブルドーザー工作基本セット | 6,099円(税込) | 1セット | Donkey Car本体として |
| Raspberry Pi 3B+ | 5,670円(税込) | 1台 | Zeroを使用するとtensorflowが推論中内部エラーを出す |
| Raspberry Pi用広角カメラモジュール | 4,773円(税込) | 1セット | 入力データ取得用として |
| SANDISK SDSQUAC-016G-JN3MA ウルトラ microSDHC UHS-I カード 16GB | 2,654円(税込) | 1枚 | Raspberry Pi用ストレージとして |
| Maxell MPC-C2600BK モバイル充電バッテリー 2.600mAh ブラック | 1,280円(税込) | 1台 | Raspberry Piバッテリとして(他の製品でも可) |
| ELECOM JC-U3912Tワイヤレスコントローラ | 5,841円(税込) | 1台 | 手動運転デバイスとして、要単3電池✕2 |
| ELECOM TB-MAEMCBN010BKタブレット用OTGケーブル スタンダード microB-Aメス変換 USB2.0 ブラック 0.1m | 500円(税込) | 1本 | コントローラドングル接続用 |
| TB6612使用Dual DCモータドライブキット | 350円(税込) | 1セット | DCモータ&モータ用電源とRaspberry Piをつなぐモータドライバとして |
| ブレッドボード・ジャンパー延長ワイヤ(メスーメス)15cm赤 (10本入) | 330円(税込) | 1セット | モータドライブキットとRaspberry Piをつなぐ |
| PANASONIC LR6NJ/2B アルカリ乾電池 EVOLTA NEO(エボルタ ネオ) 単3形 4本 | 304円(税込) | 2セット(4本) | JC-U3291TBK の電池として |
| 電池ボックス 単3×4本 リード線・フタ・スイッチ付 | 110円(税込) | 1個 | モータ用電源として |
| 積層コンデンサ 0.1μF 50V 10本入り | 100円(税抜) | 1パック(3本×2モーター) | DCモータノイズ除去用 |
上記には、 本体に組み付けるための材料 を含んでいません。またはんだ・はんだごてをはじめとする工具類も含まれていません。
- モバイル充電バッテリをフル充電する
- ブルドーザー工作基本セットを同梱マニュアルに従い組み立てる(ドーザー部分は外してもよい)
- 各モータに0.1μF(50V)×3をパシコンとしてはんだ付け(ギアボックスに搭載する際に干渉しないようにする)
- DCモータドライブキットをはんだ付け、ピンコネクタは組付け易い位置(秋月サイトにある画像とは反対にピンヘッダをつける)にはんだづけ
- 電池ボックスのスイッチをOFFにしてアルカリ乾電池を装填、ケーブル先がばらばらにならないようはんだでまとめておく
- 2つのモータのケーブル端も同様にはんだづけ
- 2つのモータと電池ボックスをDCモータドライブキットのターミナルに接続
| 接続元 | 接続先 | 備考 |
|---|---|---|
| Raspberry Pi GPIO 16 | DCモータドライブキット AIN1 | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 21 | DCモータドライブキット AIN2 | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 20 | DCモータドライブキット PWMA | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 16 | DCモータドライブキット BIN1 | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 21 | DCモータドライブキット BIN2 | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 20 | DCモータドライブキット PWMB | ジャンパワイヤで接続 |
| Raspberry Pi 5V | DCモータドライブキット VCC | ジャンパワイヤで接続 |
| Raspberry Pi GND | DCモータドライブキット GND | ジャンパワイヤで接続 |
| Raspberry Pi GPIO 04 | DCモータドライブキット STBY | ジャンパワイヤで接続 |
| 電池ボックスケーブル赤 | DCモータドライブキット VM | 電池ボックスのスイッチがOFFであることを確認してから、ターミナルブロックに接続 |
| 電池ボックスケーブル黒 | DCモータドライブキット PGND | 電池ボックスのスイッチがOFFであることを確認してから、ターミナルブロックに接続 |
| 左履帯駆動DCモータケーブル上 | DCモータドライブキット A01 | ターミナルブロックに接続 |
| 左履帯駆動DCモータケーブル下 | DCモータドライブキット A02 | ターミナルブロックに接続 |
| 右履帯駆動DCモータケーブル上 | DCモータドライブキット B02 | ターミナルブロックに接続 |
| 右履帯駆動DCモータケーブル下 | DCモータドライブキット B01 | ターミナルブロックに接続 |
- ジャンパ延長ワイヤとRaspberry Piを接続
結線の詳細は こちら を参照のこと
- Raspberry Piにカメラモジュールを接続
- 本体に組み付け
- Raspberry Pi にJC-U3912T USBアダプタを接続
- JC-U3912Tに電池を搭載する(使用前に下面の電源をONにすること)
- micro SDカード (32GB)を入手して、フォーマットを実行
- Raspbean ダウンロードサイト から Raspbean Streatch Lite のimg圧縮ファイルをダウンロードし、展開する(ほげほげ部は最新OS呼称)
- ImageWriterなどでimgファイルをmicro SDカードへ書き込み
wpa_supplicant.confを作成し、microSDカードへ保存(UTF-8/LF)、取り外す
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="XXXXXXXXXXX"
psk="xxxxxxxxxxxxxxxxxx"
}sshというファイル名で0バイトファイルを作成し、microSDカードへ保存(UTF-8/LF)、取り外す
sshを作成しておくと、初期起動時点からにssh接続可能になる
- SDカードを刺し、HDMIケーブル経由でモニタ、USB経由でマウス&キーボードを接続し、起動する
- IPアドレスを探し出し、ターミナルソフト経由でSSH接続する(pi/raspberry)
sudo vi /etc/dphys-swapfileを実行し、CONF_SWAPSIZEとCONF_MAXSWAPを4096に変更し、保存するsudo raspi-configを実行し、以下の設定を行う
- デフォルトパスワードの変更
- Interfacing Options の Camera を有効化
- Interfacing Options の I2C を有効化
- Advanced Options の Exapand Filesystem を選択
- 終了すると再起動指示が出るので、従う
- 再起動したら、再度ターミナルソフトでSSHログイン
- 以下のコマンドを実行し、SSH接続可能にする
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential python3 python3-dev python3-pip python3-virtualenv python3-numpy python3-picamera python3-pandas python3-rpi.gpio i2c-tools avahi-utils joystick libopenjp2-7-dev libtiff5-dev gfortran libatlas-base-dev libopenblas-dev libhdf5-serial-dev git ntp -y
sudo apt install libilmbase-dev libopenexr-dev libgstreamer1.0-dev libjasper-dev libwebp-dev libatlas-base-dev libavcodec-dev libavformat-dev libswscale-dev libqtgui4 libqt4-test -y
sudo apt install pigpio
sudo systemctl start pigpiod
sudo systemctl enable pigpiod- 以下のコマンドを実行し、Python3環境を構築する。
cd ~/
mkdir projects
cd projects
python3 -m virtualenv -p python3 env --system-site-packages
echo "source env/bin/activate" >> ~/.bashrc
source ~/.bashrc- 以下のコマンドを実行し、Donkeycarおよび関連パッケージをインストールする
cd ~/projects
git clone https://github.com/autorope/donkeycar -b 3.1.1
cd donkeycar
pip install -e .[pi]
# Google Colab を使う場合
wget https://github.com/PINTO0309/Tensorflow-bin/raw/master/tensorflow-1.15.0-cp35-cp35m-linux_armv7l.whl
pip install tensorflow==tensorflow-1.15.0-cp35-cp35m-linux_armv7l.whl
# Google Colab を使わない場合
pip install tensorflow==1.13.1
pip install pigpio
pip install opencv-python2019/11/22 時点の Google Colab 環境の cuda ライブラリが10より上になったため、Tensorflow 1.13.1 が動作しません。
- 以下のコマンドを実行して、本リポジトリをダウンロードする
cd ~/projects
git clone https://github.com/coolerking/caterpillar
cd ~/
ln -s /home/pi/projects/caterpillar .- 以下のコマンドを実行して、設定ファイルを変更する
cd ~/caterpillar
cp myconfig_cat.py myconfig.py- DCモータ電源のスイッチON
- ssh接続し、ユーザ名
pi、パスワードraspberryでログイン cd ~/caterpillarを実行する- (存在しない場合)
mkdir dataを実行し、tubデータ格納ディレクトリを作成する - USBワイヤレスアダプタを3秒以上押し込み、LEDを青点滅に変更(ペアリング開始)
- PS4コントローラの充電をはずし(はずさなくても可能)、shareボタンを押しながらPSロゴボタンを3秒以上押し続け、コントローラ側のLEDが青点灯させる(ペアリング完了)
python manage_cat.py driveを実行する
- コントローラはプログラム実行前に電源ONにすること
- JC-U3912Tの操作方法 はこちらを参照のこと
モデルの入出力層、Tubデータ構成を変更していないので、通常のトレーニング処理(例: python manage_cat.py train --tub data/tub_N-YY-MM-DD --model models/mypilot.h5)を実行してください。
Google Colaboratoryを使ったトレーニングは こちら を参照してください。
カメラが動作しない場合は以下の項目を確認してください。
sudo raspi-configでカメラを有効化したかどうかraspistill -o test.jpgで撮影できるかどうかvcgencmd get_cameraの結果が両方1かどうか
上記が動作しない場合は、カメラをつけ直ししてください。Raspberry Piに慣れていない人は、意外とこの取付が正しく行われていないことが多いです。Raspberry Piのカメラインターフェイスは、すぐにずれてしまうので注意してください。
Donkeycar上のアプリケーションディレクトリが ~/caterpillar であること以外は、通常のDonkeycarと同じです。
プログラムが異常停止した場合、モータが回転したままとなることがあります。 そのような場合は、DCモータ電源(電池ボックス)をオフにしてください。
暴走した場合は、STBYピンをLOWにする
stop_motor.pyを試してみてください。
タミヤシリーズの履帯はゴムなので、長時間そのままにすると伸びやすくなります。 車体の性質上、回頭時は回頭方向側の履帯を止めて回転するので、伸びているとすぐにはずれてしまいます。 このため使用していない場合はできるだけ外しておいたほうが良いと思います。 特に長期保存する場合は、かならずはずしておきましょう。
Donkeycarレース参加する場合は、予備の履帯も用意すると良いと思います。
グリスの塗布をしないでも動作しますが、ギアに塗布すると電池の持ちが上がります。 ただし、誤って転輪につけてしまうと、履帯が剥がれやすくなるので、その場合は一旦外して中性洗剤で洗うともとに戻ります。
本リポジトリのソースコードは、すべて MITライセンス 準拠とします。