Выбор модели

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

После нескольких прошлых проектов у меня есть raspberry pi (небольшой одноплатный компьютер, как на изображении ниже), поэтому я решил быстро проверить, что могут предложить торговые площадки в этом случае. Хотя вы можете построить робота на основе Arduino, я искал что-то, что вы можете построить поверх Raspberry Pi.

Когда вы начинаете гуглить, трудно остановить прокрутку. Вариантов очень много. Сначала я хотел построить робота с нуля — начать с проекта, закупать деталь за деталью, найти мастерскую для изготовления металлического или пластикового корпуса, но моментально отказался от этой идеи. Безусловно, можно было купить наборы деталей, чипов, но путь к готовому и законченному результату был бы неуправляем — я боялся забросить проект. В качестве введения я просто хотел контролировать и немного настраивать робота, уделяя особое внимание программированию, а не поиску нужных колес или болтов и гаек.

Я решил остановиться на наборах, где все уже тщательно подобрано для вас, и к каждому набору прилагается инструкция. Все, что вам нужно, это собрать все вместе. Что может пойти не так, верно?

Есть 2 модели, которые мне нравятся (по описанию, конечно) и стоят не так дорого: паук и машина. В итоге купил последнюю. Паука (и всех паукообразных роботов) интересует только гироскопический датчик. Просмотрев несколько роликов, я обнаружил, что паук довольно медлительный и шумный. Тем более, что кузов собран из акриловых пластин (как у машины), что еще больше снизило мои ожидания. Поэтому я решил начать с автомобиля и создать паука с нуля (и из материалов, которые мне нужны), исходя из прошлого опыта.

Производитель (Sunfounder) предлагает 3 типа машины:

  1. Picar-S (в комплекте 3 модуля: слежение за линией, ультразвуковой датчик, слежение за светом)
  2. Picar-V (имеет только веб-камеру USB)
  3. Pimobile (с следованием по линии, ультразвуковой датчик)

У меня уже есть камера для raspberry pi, которую я мог бы прикрепить позже.

Поэтому я решил пойти по первому варианту (и он был самым дешевым).

Сборка

Пришла дата доставки и я наконец получил посылку. Все было хорошо упаковано в коробку с инструкцией.

Честно говоря, я ожидал, что сборка будет сложнее — каких-то деталей нет, какие-то сломаны — знаете, как это обычно бывает, но на удивление все было в целости и сохранности.

Один момент, который я заметил — из-за того, что детали корпуса (в частности, корпус) были изготовлены из пластика, они гнулись при сборке. Это не критично, но не все детали подходят друг к другу идеально. К счастью, в комплекте шло несколько запчастей, поэтому я мог с ними поэкспериментировать. Самое главное обратить внимание на стыки, особенно на редкие колеса. В тот момент я задумался о замене их на более надежные — из металла или хотя бы из более прочного пластика.

В общем, у меня ушло 2 вечера, чтобы собрать всю машину и начать работать с кодом (и даже пересобрать часть машины, потому что я сначала не настроил колеса должным образом). В связи с этим я бы оценил этот набор на 2 балла из 5 по сложности.

Особенно меня разочаровало, что они не поставили надлежащую перемычку (200 мм, 5-контактная) — длинную в черной обертке на изображении. Проблема в том, что контакты с одной стороны не соединены вместе, а свободны. Поэтому крепление на самой плате хрупкое и иногда задние колеса отказываются менять направление вращения и нужно немного подправить этот провод.

Батареи

Будьте готовы к поиску батареек. Руководство просит вас купить две батареи 18650, что не является тривиальной задачей. Они продаются не в каждом магазине — я нашел их в магазине электронных часов. Я бы посоветовал покупать аккумуляторы с зарядным устройством, потому что они постоянно разряжаются.

Я ожидал заменить их на более распространенные батарейки АА, но представьте, как будет выглядеть машина с 5 батарейками АА внизу.

Монтаж

До сих пор все было просто и по инструкции.

С этого момента мне не нравится, как руководство проводит вас через настройку ОС для Raspberry Pi. Мне это кажется слишком сложным (особенно если у вас нет экрана). Я бы предложил просто скачать последнюю версию Raspberry Pi Imager с официального сайта raspberry pi, а внутри нее при установке можно выбрать ОС, например Raspberry PI OS (32-bit).

Кроме того, есть значок шестеренки «Дополнительные параметры», где вы можете настроить имя пользователя и пароль для доступа по SSH и даже настроить подключение к Интернету (беспроводная локальная сеть):

После установки ОС вы можете подключиться к raspberry pi по ssh и клонировать, как упоминается в руководстве, репозиторий Sunfounder git.

В репозитории есть несколько примеров программ (скриптов .py), как вы можете управлять автомобилем. Понимание этих скриптов помогает писать собственные циклы движения автомобилей.

Ультразвуковой модуль

Как я уже говорил выше, моя версия машины шла с 3-мя модулями:

  1. Последователь света
  2. Повторитель линии
  3. Ультразвуковое избегание

Эти модули работают как глаза и помогают автомобилю ориентироваться в пространстве.

Особенно меня заинтересовал модуль «Избегание ультразвука», который работает очень просто — регистрирует отражения от поверхностей излучаемого ультразвука.

Слева находится динамик, а справа приемник. Динамик излучает ультразвуковую волну (со скоростью ~ 343 м/с, в зависимости от температуры), она отражается от препятствия и возвращается к приемнику. Зная время и скорость можно легко рассчитать расстояние до препятствия.

Модуль УЗИ, который мне достался, не точен и имеет погрешность в 2–5 см, что допустимо, но хотелось бы, чтобы было лучше.

Когда все было настроено, я запустил предоставленный скрипт ultra_sonic_avoid.py и… я был разочарован. Работало, в общем-то, но из-за логики, как вести себя при приближении препятствия, машина сильно застревала и иногда не видела препятствия прямо перед собой. Я заметил, что расстояние может подскочить до очень больших и нереальных цифр, таких как: 10 см, 12 см, 15 см, а затем внезапно до 7 м. Согласно инструкции к модулю HC-SR04, он не может измерять такое большое расстояние — только до 4 м (какой именно модуль использовался в комплекте, не уточняется, но сильно сомневаюсь, что он кардинально отличается). Причем компенсации за такие прыжки нет — скрипт не учитывает предыдущие дистанции.

Как вы можете ясно видеть, есть возможности для улучшения.

Программирование

Чтобы не запачкать руки, я решил создать простое клиент-серверное приложение для управления автомобилем с моего ноутбука с помощью клавиатуры. Он поддерживает такие действия, как поворот влево/вправо, переход вперед/назад с клавиатуры в режиме реального времени. Вы можете посмотреть код на github (клиентский и серверный .py скрипты).

Также я решил добавить функцию — включать/выключать ультразвуковой модуль, чтобы «видеть» препятствия. Таким образом, это помогает избежать столкновений со стенами, ящиками при ручном вождении.

Кроме того, я записал видео, как машина едет (управление с ноутбука) и объезжает препятствия — машина останавливается прямо перед стеной автоматически (путем обнаружения препятствия ультразвуковым модулем).

Заключение

Это была моя детская мечта и только сейчас появилось время и сильное желание воплотить ее в жизнь. Было весело играть.

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

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

Что касается меня, то сейчас я хочу увеличить сложность — прикрепить камеру и управлять автомобилем с помощью блютуз-клавиатуры.

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