Задача сезона не просто создание беспилотного автомобиля – это гонка на время. На трассе не будет одновременно нескольких автомобилей. Вместо этого автомобиль за попытку должен достичь лучшего времени, проехав несколько кругов полностью автономно. Дорожные знаки указывают сторону полосы движения, по которой должен следовать автомобиль. Если на пути красный столб – автомобиль должен держаться правой стороны полосы, если зеленый - левой стороны полосы. Задание считается выполненным, если автомобиль проехал 3 круга. Запрещено сбивать или сдвигать с места дорожные знаки. Направление, в котором автомобиль должен двигаться по трассе (по часовой стрелке или против часовой стрелки), будет варьироваться в разных матчах. Стартовая позиция автомобиля, а также количество и расположение дорожных знаков определяются случайным образом во время жеребьевки перед матчем (после карантинного времени). Основа робота - камера OpenMV H7 Plus. С помощью ее и micropython на борту возможно отслеживание объектов внутри кадра и управление пинами GPIO. Так как эта камера фактически pyboard, но с камерой. A pyboard это оффициальная плата с GPIO выводами. Также выполнен шилд расширения для данной платы на микросхеме drv8833 для управления мотором задней оси и стабилизацией питания на 5в для пиатния камеры.
Фото | Вид |
---|---|
![]() |
Спереди |
![]() |
Сбоку |
![]() |
Сзади |
![]() |
Сбоку |
![]() |
Снизу |
Управление роботом также, как и в настоящей машине: один мотор, передняя ось с соблюдением угла аккермана. Управление передней оси осуществляется с помощью сервопривода MG 90S. А задняя ось приводится в движение с помощью обычного коллекторного мотора с соотношением 150:1 на 6в.
Все части робота были выполнены в CAD Компас 3D V19. в данном CADе присутствуют осовные операции для моделирования и сборка элементов, что идеально подходит для данной задачи. Все детали напечатаны на 3d-принтере пластиком PLA. Данный пластик идеально подходит для поставленной ранее задачи, так как обладает хорошей прочностью и легким весом.
Камера программируется на MicroPython в среде от производителя - OpenMV IDE. В данной среде возможно программировать, отлаживать и загружать код на плату. Также в данной среде поддерживается подсветка синтаксиса и документация к функциям, что делает программирование данной платы очень удобным.
Алгоритм делится на 3 части:
- Движение робота до 1 поворота (до первой оранжевой или синей линии на повороте)
- Движение, если виден кубик
- Движение при кубике вне кадра
Кадр делится на 2 равные части (разрез по вертикали), определяется кол-во черного в правой и левой. Робот поворачивает в ту сторону, где меньше черного. После того как будет замечена оранжевая или синяя линия (по определенному цветовому диапозону находится прямоугольник некоторого размера) алгоритм переходит ко 2 или 3 части в зависимости от ситуации
На некотором расстояние определяется кубик одного из цветов. В зависимости от цвета совершается такой поворот робота (стоит ПИД-регулятор), чтобы центр определенного кубика находился на 20 пикселя от правого (зеленый куб) или от левого (красный куб) края кадра. В таком случае поворот получается достаточно плавным, чтобы не врезаться в куб или стенку
Если куба в кадре нет, то робот будет действовать так: Определяет кол-во черного цвета в правой (если движение против часовой) или в левой (если движение по часовой) половине кадра. Направление движения робота (против часовой или по часовой) определяется по первой увиденной линии на 1 повороте (если оранжевая, то по часовой, если синяя - против часовой). Далее робот с помощью ПИД-регулятора стремится сохранять определенное подобранное кол-во черного в этом секторе.
Тормозит робот после прохождения 12 поворотов (3 круга)
Для сборки робота необходимо напечатать на 3d принтере все компоненты из папки models. И также докупить компоненты motor, servo, motor driver, OpenMV H7 Plus В итоге пакет деталей должен выглядеть примерно так:
основа робота
передние кулаки
x2держатели передних кулаков
x2основа камеры
крепление камеры
бампер камеры
батарейный отсек
крепление для дифференциала
колеса
x4вал переходник
OpenMV H7 Plus
сервопривод MG 90S
качалка от сервы
качалка на 3d-принтере
аккамулятор
лего детали
мотор
горстка винтов, гаек и шайб
- В основу робота надо вкрутить два передних кулака с использованием шайб m3 и винтов такого же размера
- В основу необходимо вставить сервопривод и надежно его закрепить внутри самой платформы
- На сервопривод необходимо одеть качалку с откусанными лепестками и поверх данной конструкции саму качалку, напечатанную на 3d принетере
- Скрепляется рычаг с кулаки передней оси и продевается в углубление качалки из 3-его шага
- В основу камеры вкручивается держатель для камеры
- На камеру одевается бампер
- Система из шага 6 и 5 скручивается винтами m3
- Конструкция из шага 7 вкручивается в основу винтами m3
- Батарейный отсек, внутри которой уже заложен аккум, вкручивается в платформу
- В крепление дифференциала вкручивается сам лего дифференциал
- Сборка из шага 10 закручивается в платформу
- На камеру одевается шилд, спаянный по схеме
- Все провода подключаеются согласно схеме
Мы решили использовать именно эту камеру, так как она обладает хорошим процессором и flash памятью, что позволяет быстрее обрабатывать кадры по сравнению с ее собратьями из данной серии
Используется данная серва, потому что алюминиевые шестеренки и алюминиевый вал не дают прокрутится валу и обеспечивает точное позиционирование робота в пространстве
Данный мотор, потому что именно он смог работать адекватно на 7.4v вместо заявленных 6v и не перегреваться
Использовался китаец под кодовым названием 0j10393, так как за свою цену и размеры он работает идеально
Для управления двигателями используется драйвер DRV8833, который позволяет одновременно управлять двумя коллекторными двигателями. Внутри микросхемы драйвера содержится два независимых Н-моста, рассчитанных на напряжение от 2,7 до 10,8 В, с рабочим током каждого канала до 0,5 А без радиатора или до 1,5 А с радиатором, установленным на микросхеме.
models
в этой папке хранятся все файлы робота, напечатанные на 3d-принтере. Все файлы моделей робота, не включая конечную сборку.schemes
содержит принципиальные схемы роботаsrc
вся програмная частьteam-photos
фото команды (оффициальное и в процессе работы)vehicle's-photos
фото робота (с разных видов)