Часть 1 — Основы

Как вы относитесь к созданию самоуправляемой модели автомобиля? Эта серия статей познакомит читателя с основами и продвинутыми методами, включая простое поведение при вождении, основанное на обнаружении объектов. Это заняло немного времени и решимости, но я получил удовольствие, делая это!

Начнем со списка моих постов:

  1. Основы, включая настройку оборудования для первого прототипа
  2. Программное обеспечение и изучение первой модели
  3. Пытаемся заставить его работать — с помощью предварительной обработки изображений и борьбы с ошибками!
  4. Переход на новый уровень — более крупный и быстрый автомобиль, улучшение производительности с использованием 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, но у него были некоторые проблемы (подробности ниже).

Тем не менее, теперь у меня был радиоуправляемый автомобиль с ручным управлением и все необходимое для обучения самостоятельному вождению. Эти компоненты и установка спроектированы таким образом, чтобы быть портативными, чтобы в будущем подтвердить мои знания и все более сложные эксперименты, которые я планировал.

В следующей статье я расскажу о настройке программного обеспечения и о том, как я начал изучать свою первую модель.