自律走行Donkey Car:TensorFlow MobileNetV2 AIでゴミ収集
標準的なRCカー(Raspberry Pi + Pi Camera)を、TensorFlowのSSD MobileNetV2を用いてゴミを検知・収集する自律走行ゴミ収集車に変身させるガイド。
プロジェクト概要
このガイドでは、Raspberry Pi 3とPi Cameraを搭載した標準的なRCカーを自律ゴミ収集車に変える方法を示します。ソリューションは2つの軽量ニューラルネットワークに依存:1つはリアルタイム物体検知、もう1つはステアリングとスロットル制御。Pi 3の限られたRAMとCPUでは一度に1つのモデルしか実行できないため、検知と走行をタイムスライス方式で交互に実行します。
核心アイデアは、ゴミ箱を認識するモデルをトレーニングし、車をゴミ箱に向かわせ、自律的に廃棄物を回収させることです。
車とラップトップコンポーネントの識別
プロジェクトには2つの主要フェーズがあります:
- 物体検知 – 適度な畳み込みネットワークがPi CameraフィードをTensorFlowとOpenCVで処理
- 行動クローニング – 人間のステアリングとスロットル入力を模倣して自律走行を学習。追加センサー(超音波、GPS、6-DOF IMU)でトレーニングデータとテレメトリを拡張
はじめに
2019年リリースのMobileNetV2は組み込みデバイス向けに設計されています。Raspberry Pi 3のCPUではMobileNetV2 SSDを快適に実行可能ですが、より重いYOLOバリエーションは過大なRAMを要求します。
VGG16(約350MBの重み)の実行はPiで失敗し、よりスリムなモデルの必要性を裏付けました。事前学習済みMobileNetV2 SSDでの転移学習により、最小フットプリントで高精度を実現。
ハードウェア改造
ベース車両はMagnet RCカーで、DonkeyCarシャーシに改造。主な変更点:
- トップカバーを分解し、レシーバー、ESC、サーボにアクセス
- 元のクリップを置き換える2つの3Dプリントアダプターを設置
- 木製プレートにRaspberry Piと専用サーボコントローラーを搭載
- サーボコントローラーを車のステアリング(チャネル0)とスロットル(チャネル1)にI²Cで接続
- 6-DOF MPU6050 IMU、GPSモジュール、HC-SR04超音波センサーを追加(5Vレベルシフター必要)
完成車両の構成:
- 単眼広角Pi Camera
- ステアリング用サーボコントローラー
- 加速度とジャイロデータ用6-DOF IMU
- 屋外位置決め用GPS
- 障害物回避用超音波距離センサー
すべてのセンサーデータはタイムスタンプ付きで tub フレームワーク経由でログ記録され、トレーニングデータセットを拡張。
ソフトウェアセットアップ
ソフトウェアスタックは最小ながら強力:TensorFlow、OpenCV、いくつかのPythonユーティリティ。以下にステップバイステップインストールガイドを示します。
1. TensorFlow、OpenCV、依存関係のインストール
pip install tensorflow[pi]
pip install matplotlib raspberry
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install qt4-dev-tools
pip3 install opencv-python
TensorFlowは独自のモデルフォーマットを必要とするため、公式 TensorFlow modelsリポジトリ を使用し、 PYTHONPATH を設定:
git clone --recurse-submodules https://github.com/tensorflow/models.git
export PYTHONPATH=$PYTHONPATH:/home/pi/tensorflow1/models/research:/home/pi/tensorflow1/models/research/slim
2. Protocol Buffersコンパイラのインストール
ProtoBufはMobileNetV2 SSD重みの読み込みに必要。
sudo apt-get install autoconf automake libtool curl
wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.tar.gz
tar -zxvf protobuf-all-3.5.1.tar.gz
cd protobuf-3.5.1
./configure
make
make check
sudo make install
cd python_export
python3 setup.py build --cpp_implementation
python3 setup.py test --cpp_implementations
sudo python3 setup.py install --cpp_implementation
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION_VERSION=3
sudo ldconfig
protoc --version
3. IMUとGPSの統合
MPU6050を meta.json と manage.py スクリプトに追加し、加速度とジャイロデータを取得:
{
"inputs": ["cam/image_array", "user/angle", "user/throttle", "user/mode",
"imu/acl_x", "imu/acl_y", "imu/acl_z", "imu/gyr_x", "imu/gyr_y", "imu/gyr_z"],
"types": ["image_array", "float", "float", "str", "float", "float", "float", "float", "float", "float"]
}
必要なPythonライブラリをインストール:
sudo apt-get install python3-smbus
pip install mpu6050-raspberrypi
pip install RPi.GPIO
4. 最終ステップ
すべての依存関係インストール後、仮想環境を非アクティブ化しPiを再起動:
deactivate
sudo shutdown -h now
これで車はSSD MobileNetV2による物体検知と、行動クローニングモデルによる自律走行の実行準備が整いました。
結論
軽量ニューラルネットワークと堅牢なセンサー統合を組み合わせることで、Raspberry Pi 3はゴミ箱を確実に検知・収集でき、スケーラブルで低コストな自律廃棄物収集ソリューションへの道を開きます。
製造プロセス
- 操業と維持管理の変革:効果的計画への実践ガイド
- 都市環境における自律走行車のリアルタイムモーションプランニング:縮小プロトタイプ研究
- オイルミストコレクターシステム:有害エアロゾルから作業環境を守る
- ダイムラーとBMW、自律走行技術開発で戦略的提携を発表
- コンチネンタル、IAA MOBILITYで未来のモビリティ向け自動運転ソリューションを披露
- ダストコレクター安全操作の7つの必須ヒント:作業員と環境を守る
- 透明グラフェン光検出器+ニューラルネットで3Dモーショントラッキング─ LiDAR/カメラ置換へ
- 自律ドローン群充電システム:UGV連携でミッション時間延長
- 自律走行の未来への備え:フリートオーナーが先手を打つ方法
- 5Gがコネクテッドカーをどう変革するか:速度、安全、スマート機能
- 欧州人が未来のコネクテッドカーに求めるもの:安全性が最優先