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

Как я дошёл до этого
Мне всегда были интересны темы беспилотников и роботов, но руки до такого не доходили - боялся слишком большого объёма навыков, которые потребуются для этого.
В марте-апреле 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, а теперь можно будет доделать) 
- добавлю салки/прятки с кошкой 
- другие алгоритмы исследования и детекции 
Добавлю манипулятор, чтобы можно было собирать с пола игрушки в ящик.
Попробую другие датчики для колёсной одметрии: магнитный датчик угла.

