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

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

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

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

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

В марте-апреле 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, а теперь можно будет доделать)

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

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

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

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

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 21

    +1
    Можете докупить RC модули и катать на ней FPV на улице, попутно отлаживая беспилотные алгоритмы:
    Аналоговая камера (есть уже цифровые линки, но они дороже и слабее аналоговых, например DJI FPV)
    5.8G видео-передатчик (можно послабее и подешевле взять)
    Шлем / очки со встроенным 5.8g приемником
    RC пульт, есть куча разных
    Дальнобойный модуль для пульта на ~900Mhz.
      0
      Спасибо, посмотрю в эту сторону.
      Сейчас уже можно гонять с телефона (если с него wifi раздать) и подключить джойстик, но без fpv, конечно.
      Основной упор делал на беспилотность, поэтому в fpv не двигался почти.
        0
        Я пробовал через 4g / lte гонять, на открытой местности работает, у зданий не очень. Из за низкого upload-а надо несколько сим-карт ставить. Когда 5g заведут — вообще огонь будет.
        Пробую делать беспилотник для улиц, там нужны данные для обучения ml моделей, поэтому решил начать с fpv чтоб катать и собирать разметку (некоторые доставочные стартапы использует комбо-вариант, беспилотник + переключение на оператора для разруливания сложных ситуаций).
        Тоже на jetson nano. Только в качестве привода взял гусеницы, что было ошибкой, они быстро забиваются грязью и начинают застревать, а чистить их запаришься.
          0
          Про сбор датасета на fpv — это огонь идея!
          На гусеницах хорошо по пересечёнке и снегу, а по городу да, колёса удобнее.
          Можно попробовать закомпресить видео (разрешение, fps, звук и тд), что бы оно не было требовательно к каналу.
            0
            Поэтому многие армии мира фанатеют от колесных танков, предполагая, что их работа в будушем: полицейские операции в городе.
            0
            У меня похожая машинка (https://habr.com/ru/post/424191/). Правда чистое fpv c H.265.
            Максимальный объем данных в потоке видел в района 120Кб/сек
            Типично (медленно двигаться/относительно статичная картинка на 960x480) — 30..40Кб/сек. Через 4G лаг маленький и на улице.

            Интересно, а у Вас fpv в каком протоколе?
            +1

            Цифровой линк можно сделть на базе модифицированного wifi. В воздухе это работает на десятки километров. На земле из-за препятствий будет сильно меньше, но для небольшой машинки хватит с запасом

              0
              Круто
              Попробую в бОльшей машинке, которую для outdoor соберу
              Спасибо
          0
          Спасибо. Отличная статья!
            0
            Спасибо
            Рад поделиться
            0

            А я всё хочу своего OpenBot дособирать, там он тоже может сам двигаться за человеком на основе информации с нейросети с телефона (tenzor flow lite)

              0
              интересный проект
              почти у каждого уже есть компьютер для такого
                0
                Тем более сейчас стали втыкать разные нейроускорители в телефоны.
              0
              Классная статья, симпатичные крохи получились, даже самому захотелось попробовать сделать
                0
                Спасибо
                0
                Отличная статья, подписался на Ваш канал на ютюбе.
                  0
                  Спасибо
                  0
                  две машинки с лазерами и приемниками это уже почти лазертаг, сегодня обновил свою машинку, изготовил цели из молочной тары: youtu.be/oAqPJe4yDpQ
                  ST32F103 (BluePill) +SI4432 RC/Telemetry
                    0
                    круто
                    добавить туда ботов — прям квейк получится =)
                    0
                    Здорово!
                    Надо добавлять память. Чтобы карту составлял, план, а не рандомно ездил.
                    Очень интересная задача — осознание собственных габаритов в процессе езды (обучения).
                      0
                      так он и составляет ;)

                    Only users with full accounts can post comments. Log in, please.