Pull to refresh

Собираем свой маленький беспилотник

Reading time3 min
Views18K

Будем делать вот такой, маленький, как на картинке, беспилотный автомобиль.

Вот так выглядят маленькие беспилотники
Вот так выглядят маленькие беспилотники

Как я дошёл до этого

Мне всегда были интересны темы беспилотников и роботов, но руки до такого не доходили - боялся слишком большого объёма навыков, которые потребуются для этого.

В марте-апреле 2020го года, когда сидение дома уже порядком поднадоело, понял, что я созрел для беспилотников. И, вдохновлённый статьёй Беслана, принялся изучать вопрос и заказывать необходимые комплектующие на Али и в других магазинах.

Приезжали заказы в разное время, поэтому, из всего, что попадало под руку, собирал первые версии беспилотника (тогда ещё ни разу не беспилотного).

Первые шаги
Первые шаги

Начиналось всё с черепахоподобного поделия из картона, котому требовался сетевой провод. Провода от двух веб камер были перетянуты кабельными стяжками. А машинка не была соединена с компьютером, и я управлял ей с радиопульта от RC машинки.

В качестве мозга для беспилотника я выбрал Nvidia Jetson Nano Developer kit, а в качестве тачки - Remo Hobby S-Max - это то немногое, что осталось в беспилотнике по сей день.

Рабочий прототип из картона и макетных плат
Рабочий прототип из картона и макетных плат

Затем машинка стала обрастать новыми компонентами: появились беспроводная сеть, лидар, IMU и остальные.

В процессе добавления я осваивал кучу нового:

  • ROS

  • Вспоминал/изучал C++

  • Учился работать с разными устройствами

  • Осваивал нейронные сети и машинное обучение

  • Узнавал про алгоритмы, специфичные для роботов и беспилотников

  • Паял, резал, клеил и всячески работал руками и головой

Когда картон и макетные платы стали слишком замедлять процесс - приобрёл недорогой, но большой 3D принтер, а провода спаял с нужными разъёмами.

Сперва спроектировал всё из картона и соплей (но с котиком)

Почти рабочий прототип
Почти рабочий прототип

А потом уже сделал корпус из пластика. В процессе пришлось освоить проектирование в CAD (использовал FreeCAD) и разобраться с настройкой принтера.

Потом писал алгоритмы, исправлял баги и добавлял датчики.

Что получилось

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

Тут есть:

  • камера (ночного видения), чтобы смотреть и распознавать объекты

  • однолучевой лидар и лазерные датчики расстояния, чтобы строить карту стен и других препятствий

  • управление машинкой, чтобы ехать, куда хочется

  • колёсная одометрия и IMU, чтобы понимать куда вы заехали

Уже есть несколько готовых скриптов (Jupyter notebook'ов):

  • чтобы просто поуправлять машинкой с джойстика, глядя при этом на картинку с камеры и на вид сверху, построенный по лидару

  • беспилотный режим: машинка сама исследует помещение, строит его карту и ищет жертву живность (людей, кошек и собак), а, найдя такой объект, - следует за ним

Я потратил много времени и оттоптал много разных граблей и велосипедов, и теперь хочется поделиться своим опытом и наработками с сообществом.

Что требуется (список компонентов)

  • RC машинка Remo Hobby Smax 1:16 RH1635

  • Контроллер мотора, у меня такой: SURPASS HOBBY KK 35A ESC Waterproof Electric Speed Controller for 1/16 RC Car Brushless Motor Power system

  • Одноплатный компьютер Nvidia Jetson Nano Developer Kit

  • Микро SD карта на 64 GB (возможно, влезет и на 32)

  • wi-fi карточка типа такой и пара антен с IPEX разъёмом (USB свистки с wi-fi показали себя очень плохо)

  • Два датчика Холла типа KY-003 для Arduino

  • магнит примерно такого размера: 20x3x2 мм

  • камера, работающая с Jetson Nano; у меня IMX219 8MP Infrared Night Vision 160 Degree FOV + 2 Infrared LED Lights

  • система питания для jetson'а типа T208 или T200 на 18650 акумуляторах и сами аккумуляторы или повербанк (но тут нужно брать с хорошим током и нужно будет stl модельку для корпуса под него исправить)

  • однолучевой лидар типа YDLIDAR X2L

  • IMU типа Bosh BNO055

  • ШИМ плата PCA9685 для соединения контроллера двигателя и Jetson'а

  • Конвертер логических уровней для преобразования из 5V в 3.3V и обратно

  • короткий USB - USB-C дата кабель (чтобы заменить слишком длинный кабель от лидара)

  • (опционально) два датчика расстояния; у меня VL53L0X (6 pin)

  • доступ к 3D принтеру

  • провода, коннекторы, стяжки, инструменты и т.д.

  • руки, которые смогут всё это соединить

Более подробно и со ссылками есть на github проекта.

Как собрать

Сделал туториал по сборке в виде нескольких видео.

Там же видео проездов и обсуждение задач и проблем.

Часть 1. Рассказываю, что и зачем делаю, соединяю основные компоненты.

Часть 2. Паяю, соединяю компоненты проводами.

Часть 3. Гоняю, рассказываю про софт и алгоритмы.

Часть 4. Запускаю два беспилотника вместе; добавляю лазерные сенсоры, чтобы они друг друга видели

Ссылки

Код, STL модели для печати, описание и ссылки есть на github проекта.

Видео есть на моём канале, там же будут выходить новые серии.

Обсуждение этого и других интересных проектов роботов и беспилотников в telegram канале.

Что дальше

Буду дорабатывать алгоритмы:

  • дотюню/улучшу текущие

  • добавлю лидарную одометрию (ранее не успел допилить NDT, а теперь можно будет доделать)

  • добавлю салки/прятки с кошкой

  • другие алгоритмы исследования и детекции

Добавлю манипулятор, чтобы можно было собирать с пола игрушки в ящик.

Попробую другие датчики для колёсной одметрии: магнитный датчик угла.

Tags:
Hubs:
+55
Comments21

Articles

Change theme settings