
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Автор dvillevaldМой GithubFollow About: Мне нравятся приложения для искусственного интеллекта и машинного обучения, особенно в робототехнике. Подробнее о dvillevald »
Научите своего робота находить путь в лабиринте дорожных конусов с помощью камеры и современной модели глубокого обучения.
Запасы
-
NVIDIA JetBot
На странице спецификации материалов NVIDIA JetBot Wiki перечислено все, что вам нужно для создания JetBot, а также ссылки для покупки у популярных поставщиков
-
Компьютер с NVIDIA GPU
Необходимо обучить модель
- BlueDot Trading 4”радиоуправляемые гоночные конусы для ловкости, оранжевые - набор из 20 шт.
Шаг 1: мотивация


Каждый раз, когда я еду в зоне сжатия, я думаю о том, как сложно будет беспилотному автомобилю преодолевать конусы движения. Оказывается, с новым JetBot от NVIDIA это не так уж и сложно - имея всего пару сотен изображений, вы можете обучить ультрасовременную модель глубокого обучения, чтобы научить своего робота находить путь в лабиринте игрушечных дорожных конусов. используя только бортовую камеру и никакие другие датчики.
Шаг 2: NVIDIA JetBot и обзор проекта

JetBot - это робот с открытым исходным кодом, основанный на комплекте NVIDIA Jetson Nano. Вы можете найти подробные инструкции по его сборке и настройке здесь.
Этот проект представляет собой модифицированный пример предотвращения столкновений из NVIDIA JetBot Wiki. Он состоит из трех основных шагов, каждый из которых описан в отдельной записной книжке Jupyter:
- Сбор данных на JetBot - записная книжка data_collection_cones.ipynb
- Обучайте модель на другом GPU-компьютере - ноутбук train_model_cones.ipynb
- Запустить живую демонстрацию на JetBot - записная книжка live_demo_cones.ipynb
Вы можете найти эти три блокнота Jupyter здесь
Шаг 3. Соберите JetBot и загрузите записные книжки Jupyter
- Соберите и настройте JetBot, как описано здесь.
- Подключитесь к своему роботу, перейдя по адресу https://: 8888, войдите в систему с паролем по умолчанию jetbot.
- Выключите все остальные работающие записные книжки, выбрав «Ядро» -> «Выключить все ядра…».
- Перейдите в ~ / Notebooks /
- Создайте новую подпапку ~ / Notebooks / traffic_cones_driving /
- Загрузите data_collection_cones.ipynb и live_demo_cones.ipynb в ~ / Notebooks / traffic_cones_driving /
ВАЖНО: записные книжки Jupyter data_collection_cones.ipynb и live_demo_cones.ipynb, указанные в этой инструкции, следует запускать на JetBot, а train_model_cones.ipynb - на компьютере с графическим процессором.
Поэтому нам нужно загрузить data_collection_cones.ipynb и live_demo_cones.ipynb в JetBot и поместить их в ~ / Notebooks / traffic_cones_driving /
Шаг 4: Сбор обучающих данных на JetBot
Мы соберем набор данных классификации изображений, который будет использоваться, чтобы помочь JetBot работать в лабиринте конусов движения. JetBot научится оценивать вероятности четырех сценариев (классов):
- Бесплатно - когда можно безопасно двигаться вперед
- Заблокировано - когда перед роботом есть препятствие
- Влево - когда робот должен вращаться влево
- Вправо - когда робот должен вращаться вправо
Для сбора обучающих данных на JetBot мы будем использовать записную книжку Jupyter data_collection_cones.ipynb, которая содержит подробные инструкции о том, как это сделать. Чтобы запустить этот ноутбук на JetBot, выполните следующие действия:
- Подключитесь к своему роботу, перейдя по адресу https://: jetbot-ip-address:: 8888.
- Войдите в систему с паролем по умолчанию jetbot
- Выключите все остальные работающие записные книжки, выбрав «Ядро» -> «Выключить все ядра…».
- Перейдите в ~ / Notebooks / traffic_cones_driving /
- Откройте записную книжку data_collection_cones.ipynb и следуйте ей
Шаг 5: Обучите нейронную сеть на машине с графическим процессором
Затем мы будем использовать собранные данные для повторного обучения модели глубокого обучения AlexNet на компьютере (хосте) с графическим процессором, запустив train_model_cones.ipynb.
Обратите внимание, что train_model_cones.ipynb - единственный блокнот Jupyter в этом руководстве, который запускается НЕ на JetBot
- Подключитесь к компьютеру с графическим процессором с установленным PyTorch и запущенным сервером Jupyter Lab.
- Загрузите блокнот train_model_cones.ipynb и на этот компьютер
- Загрузите файл dataset_cones.zip, который вы создали в записной книжке data_collection_cones.ipynb, и извлеките этот набор данных. (После этого шага вы должны увидеть папку с именем dataset_cones, появившуюся в файловом браузере.)
- Откройте записную книжку train_model_cones.ipynb и следуйте ей. В конце этого шага вы создадите модель - файл best_model_cones.pth, который затем необходимо загрузить в JetBot для запуска живой демонстрации.
Шаг 6: Запустите живую демонстрацию на JetBot

Последний шаг - загрузить модель best_model_cones.pth в JetBot и запустить ее.
- Заряжайте своего робота от аккумуляторной батареи USB
- Снова подключитесь к своему роботу, перейдя по адресу https://: jetbot-ip-address:: 8888.
- Войдите в систему с паролем по умолчанию jetbot
- Выключите все остальные работающие записные книжки, выбрав «Ядро» -> «Выключить все ядра…».
- Перейдите в ~ / Notebooks / traffic_cones_driving.
- Откройте и следите за записной книжкой live_demo_cones.ipynb
Начните осторожно и дайте JetBot достаточно места для передвижения. Попробуйте другую конфигурацию конуса и посмотрите, насколько хорошо робот работает в различных средах, освещении и т. Д. Хотя записная книжка live_demo_cones.ipynb подробно объясняет все шаги, следующая диаграмма показывает логику движений робота с учетом вероятностей, предсказанных моделями.
В записной книжке также объясняется, как сохранить историю перемещений робота с вероятностями свободного / влево / вправо / заблокировано, прогнозируемыми моделью, и как сделать два видеоролика FPV (вид от первого лица) (со скоростью 1 и 15 кадров в секунду) с наложенной телеметрией и Данные о действиях JetBot. Они полезны для отладки, настройки ПИД-регулятора и улучшения модели.
Удачи и дайте мне знать, если у вас возникнут вопросы!:-)
Код доступен на Github
Рекомендуемые:
Плата: система слежения за транспортными средствами на основе GPS и GSM: 3 шага

Печатная плата: Система слежения за транспортными средствами на основе GPS и GSM: Система слежения за транспортными средствами на основе GPS и GSM 30 июня 2016 г., инженерные проекты В проекте Система слежения за транспортными средствами на основе GPS и GSM использует глобальную систему позиционирования (GPS) и глобальную систему мобильной связи (GSM), которая делает этот проект более э
Как обнаружить болезни растений с помощью машинного обучения: 6 шагов

Как обнаруживать болезни растений с помощью машинного обучения: процесс обнаружения и распознавания больных растений всегда был ручным и утомительным процессом, требующим от людей визуального осмотра тела растения, что часто может приводить к неправильному диагнозу. Также было предсказано, что глобальный w
Перенос фотографий в банку с газировкой: 7 шагов (с изображениями)

Перенос фотографий в банку из-под газировки: это руководство показывает вам простой и быстрый способ переноса фотографий в банки из-под газировки. Основной процесс заключается в том, что вы сначала копируете свое изображение на обычную бумагу. Затем вы переносите фото на самоклеящуюся пленку. После этого вы наклеиваете пленку так
Простой перенос печатной платы: 6 шагов (с изображениями)

Простой перенос печатной платы: Раньше я делал печатные платы с помощью стойкого к травлению фломастера или с помощью символов переноса сено. Изготовление печатных плат с помощью УФ-масок и проявление химикатов тоже было не очень привлекательно. Оба способа очень утомительны и отнимают много времени. Итак, я придумал следующий метод
Нестареющий (холодный) перенос тонера для изготовления печатных плат: 10 шагов (с изображениями)

Перенос тонера без нагрева (холодный) для изготовления печатных плат: Метод переноса тонера для изготовления печатных плат очень практичен и экономичен. Использование тепла для передачи - нет. Большие платы расширяются при нагревании (больше, чем при лазерной печати), и тепло воздействует на верхнюю часть тонера, а не на нижнюю часть