Часть 1 — Основы
Как вы относитесь к созданию самоуправляемой модели автомобиля? Эта серия статей познакомит читателя с основами и продвинутыми методами, включая простое поведение при вождении, основанное на обнаружении объектов. Это заняло немного времени и решимости, но я получил удовольствие, делая это!
Начнем со списка моих постов:
- Основы, включая настройку оборудования для первого прототипа
- Программное обеспечение и изучение первой модели
- Пытаемся заставить его работать — с помощью предварительной обработки изображений и борьбы с ошибками!
- Переход на новый уровень — более крупный и быстрый автомобиль, улучшение производительности с использованием TensorFlow Lite, режим максимальной производительности, включение детектора объектов на основе TensorRT, позволяющего избегать объектов на дороге.
Оборудование для первого прототипа
Прежде всего, вам нужно некоторое оборудование. Для начала я черпал вдохновение из donkeycar и JetBot от NVidia. У меня уже была машина на радиоуправлении, но она действительно для улицы, потому что она довольно быстрая, и мне было бы трудно ездить на ней внутри. Поэтому я подумал, что куплю дешевый радиоуправляемый краулер, на котором смогу практиковаться. Однако я знал, что в какой-то момент захочу опробовать некоторые более сложные приложения компьютерного зрения, такие как распознавание объектов. Из-за этого и производительности вывода (см. здесь и здесь) я решил начать с Jetson Nano, хотя он примерно вдвое дороже, чем Raspberry Pi 4!
Итак, вот мой список материалов:
- FY003–1A Радиоуправляемая машина с полным пропорциональным приводом на четыре колеса, альпинистская машина с дистанционным управлением: 36,24 фунтов стерлингов
- Набор для разработки Jetson Nano 4 ГБ: 99 фунтов стерлингов
- Геймпад Logitech F710 (2-я рука: 15,20 фунтов стерлингов)
- PCA9685 16-канальный 12-битный ШИМ-драйвер сервопривода: 9,99 фунтов стерлингов
- Понижающий преобразователь постоянного тока в постоянный: 6,50 фунтов стерлингов
- Водонепроницаемый матовый электронный регулятор скорости: 11,19 фунтов стерлингов
- Intel AC8265 Bluetooth, беспроводной адаптер Wi-Fi: 11,70 фунтов стерлингов
- Антенна Wi-Fi для карты NGFF M.2: 8,99 фунтов стерлингов
- Модуль камеры IMX219 для Jetson (8 Мп IMX219) — угол обзора 160°: 20,02 фунтов стерлингов
- Микросервер Etronix 17G 3,5 кг/0,11 с Metal Gear: 11,19 фунтов стерлингов
- Проставки и стойки для печатных плат: £5,84
- Удлинительные провода сервопривода: 6,50 фунтов стерлингов.
- Гибкий ленточный кабель (30 см): 3,29 фунта стерлингов.
- Блок питания 5 В 4 А: 12,99 фунтов стерлингов
- Батарея LiPo 11,1 В: 14,99 фунтов стерлингов
- Батарея LiPo 7,4 В: £? — у меня один валялся
- Зарядное устройство LiPo: £? — у меня один валялся
- Охлаждающий вентилятор постоянного тока для Jetson Nano 5V Fan Support PWM Adjustment Speed Adjustment: £6.75
- SSD-накопитель: £? — у меня один валялся
Итого 280,38 фунтов стерлингов. Стоит отметить, что NVidia JetRacer Pro с Jetson Nano стоит 304 фунта стерлингов, но без батарей. Другие сборки, такие как детали, перечисленные на сайте DonkeyCar, стоят примерно столько же. Тем не менее, я хотел иметь возможность перенести свое оборудование для самостоятельного вождения с тестовой машины на более быструю машину, а также хотел создать что-то с нуля!
Первые проблемы
Сделал бы я здесь что-нибудь по-другому? Да! Вскоре после покупки «тестовой» машины я понял, что приемник/esc/контроллер сервопривода представляют собой единое целое, и мне нужно что-то более сложное, к чему я мог бы подключить nano. Поэтому мне нужно было купить ESC и сервопривод.
Немного более дорогая «тестовая» машина могла оказаться дешевле и проще в использовании!
После разборки автомобиля, удаления комбинированного приемника, регулятора оборотов и сервоконтроллера я обнаружил, что сервопривод был бесконтурного типа, что означало, что он имел 5 проводов, а «интеллект» находился в комбинированном электронном модуле. Так что это тоже должно было пройти. В моей первой замене была указана ширина 35 мм, но она не включала крепежный фланец, поэтому, когда он прибыл, он не вписался в корпус. Пока заказывали замену, я нашел кусок акрилового листа и обрезал его по размеру — это должна была быть моя компонентная база. Затем я приступил к сверлению отверстий для электроники.
Взлом ядра и SSD
Одной из модификаций, которую я хотел сделать сразу, было использование SSD, а не карты microSD. Причина этого просто в производительности, и, к счастью, у меня был запасной SSD. SSD обеспечивает гораздо более быструю загрузку и пропускную способность, которые, хотя и не нужны для выводов, полезны, если вы хотите провести какое-либо обучение на самом устройстве. Это также ускоряет копирование изображений с Jetson, если вы тренируетесь на другом компьютере.
В этом есть небольшая сложность, заключающаяся в том, что Jetson необходимо загрузить некоторую прошивку при загрузке, чтобы включить порты USB, но мы хотим на самом деле загружаться с USB!
Решение состоит в том, чтобы взломать ядро Jetson Nano, чтобы корневая файловая система находилась на USB, и nano мог загружать оттуда утилиты USB. К счастью, теперь есть утилиты, которые могут помочь. Я следил за этим и этим, чтобы вести себя через процесс, и, пока я был там, я также увеличил своп на Jetson до 4 ГБ, так как думал, что он мне может понадобиться позже.
Создание первого прототипа
Используя различные руководства, такие как руководство для JetRacer, DonkeyCar и информацию из Ori.Codes, я вставил адаптер Intel AC8265 в Jetson и прикрепил антенны, подключил регулятор мощности к Jetson, подключил SSD и камера, а затем Jetson к сервоконтроллеру, сервоконтроллер к ESC и сервопривод и ESC к двигателю.
Ручное вождение
Собрав оборудование и запустив базовый код DonkeyCar (о котором я расскажу в следующей статье), я смог вручную управлять автомобилем, используя контроллер в стиле геймпада.
Сначала я использовал существующий контроллер Steam, мне нужно было управлять автомобилем через Bluetooth, но у него были некоторые проблемы (подробности ниже).
Тем не менее, теперь у меня был радиоуправляемый автомобиль с ручным управлением и все необходимое для обучения самостоятельному вождению. Эти компоненты и установка спроектированы таким образом, чтобы быть портативными, чтобы в будущем подтвердить мои знания и все более сложные эксперименты, которые я планировал.
В следующей статье я расскажу о настройке программного обеспечения и о том, как я начал изучать свою первую модель.