Автономный Donkey Car: TensorFlow MobileNetV2 ИИ для сбора мусора
Постройте самоводимую RC-машинку, которая обнаруживает и собирает мусор, используя TensorFlow SSD MobileNetV2 на Raspberry Pi 3 и Pi Camera.
Обзор проекта
Это руководство демонстрирует, как превратить стандартную RC-машинку (Raspberry Pi + Pi Camera) в автономного сборщика мусора. Решение опирается на две лёгкие нейросети: одну для детекции объектов в реальном времени, другую — для управления рулением и газа. Поскольку ограниченная RAM и CPU Pi 3 могут запускать только одну модель за раз, мы чередуем детекцию и вождение в поточном режиме.
Ключевая идея — обучить модель распознавать мусорные баки и управлять машиной к ним, автоматически подбирая отходы.
Идентификация компонентов машины и ноутбука
Проект имеет две основные фазы:
- Object Detection — небольшая свёрточная сеть обрабатывает поток Pi Camera через TensorFlow и OpenCV.
- Behavioral Cloning — машина учится автономной навигации, копируя человеческие входы руля и газа. Дополнительные датчики (ультразвук, GPS, 6-DOF IMU) обогащают тренировочные данные и телеметрию.
Введение
MobileNetV2, вышедшая в 2019 году, спроектирована для встраиваемых устройств. CPU Raspberry Pi 3 комфортно запускает MobileNetV2 SSD, в отличие от тяжёлых YOLO-вариантов, требующих много RAM.
Попытка запустить VGG16 (~350 МБ весов) провалилась на Pi, подчёркивая нужен в более компактных моделях. Трансферное обучение с предобученным MobileNetV2 SSD даёт высокую точность при минимальном футе.
Аппаратные модификации
Базовое транспортное средство — Magnet RC-машинка, которую мы ретрофитим в шасси DonkeyCar. Ключевые изменения:
- Разборка верхнего кожуха для доступа к приёмнику, ESC и сервоприводу.
- Установка двух 3D-печатных адаптеров вместо оригинальных зажимов.
- Монтаж Raspberry Pi и выделенного серво-контроллера на деревянную плиту.
- Подключение серво-контроллера к рулю (канал 0) и газу (канал 1) через I²C.
- Добавление 6-DOF MPU6050 IMU, GPS-модуля и ультразвукового датчика HC-SR04 (требует 5-вольтовый сдвигатель уровней).
Готовое транспортное средство теперь включает:
- Монокулярную широкоугольную 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 и настраиваем 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 для детекции объектов и модели behavioral cloning для автономного вождения.
Заключение
Сочетая лёгкие нейросети с надёжной интеграцией датчиков, Raspberry Pi 3 может надежно обнаруживать и собирать мусорные баки, прокладывая путь к масштабируемым, низкобюджетным автономным решениям для сбора отходов.
Производственный процесс
- Планирование движения в реальном времени для автономных автомобилей в городской среде: исследование масштаб…
- Трансформация эксплуатации и обслуживания: практическое руководство по эффективному планированию
- Подготовка к автономному будущему: Как владельцы флеетов могут опередить
- Как 5G трансформирует коннектед автомобили: Скорость, безопасность и умные функции
- Безопасность прежде всего: как европейцы видят будущие коннектедкары
- 7 основных советов для безопасной работы пылесборников: защита рабочих и окружающей среды
- Передовая 3D система отслеживания движения: датчик нового поколения для автономных технологий
- Автономная система зарядки роя дронов: увеличение времени миссии с помощью НЛА
- Daimler и BMW анонсировали стратегический альянс для развития автономного вождения
- Continental презентует передовые решения для автономного вождения будущего мобильности