Giter Club home page Giter Club logo

cabinet-car's Introduction

Команда Кабинетный Болид

General

Робот, созданный для решения задачи РРО Будущие инженеры 2023

© Беззубцев Федор, Федоров Тимофей

Наши фотографии

Обычная фотография Смешная фотография

Видео заезда нашего робота на Youtube


Предисловие

Робот является автомобилем с передними поворотными колесами и задним приводом. На роботе установлены: лидар, для определения стенок и кубиков, на подпружиненной основе (для более удобной настройки уровня лидара), камерой для определения цвета кубиков и энкодер на ведущем двигателе, для определения пройденного расстояния. Система курсового управления автомобиля управляется сервомотором. При проектировании были учитаны углы Аккермана и принцип трапеции Жанто. Во главе робота находится микроконтроллер ESP32.

Содержание репозитория

  • Папка "Robot models" содержит все модели старой версии робота
  • Папка "Code" содержит код робота
  • Папка "schematic" содержит электромеханическую схему робота
  • Папка "team_photo" содержит два фото команды по регламенту
  • Папка "robot_photo" содержит обзорные фото робота с шести сторон
  • Папка "readme_photo" содержит фото, используемые в README.md файле

Фото робота

Здесь представлены фото робота спереди, сзади, справа, слева, сверху и снизу. Front Back Right Left Top Bottom

*Если картинки не открываются, проверьте папку "robot_photo", пожалуйста

Подсистема перемещения робота

Система перемещения робота была полностью спроектированна и собранна участниками команды. Робот использует детали, напечатанные на 3D принтере. Для соединений деталей используются винты и гайки М2 и М3. В креплении дифференциала и в рулевом управлении использованы подшипники и латунные втулки, уменьшающие трение.

Для движения робота вперёд используется коллекторный двигатель Polulu с редуктором. Задние колёса соеденены с мотором при помощи дифференциала, который позволяет роботу правильно проходить повороты. Дифференциал закреплён к корпусу робота. Для контроля направления движения робота используется сервомотор MG90S с металлическим редуктором, а также система тяг и кулаков. Сервомотор вращает качалку, которая в свою очередь тянет тяги, которые врашают кулаки на которых закреплены передние колёса колёса. Для связи тяг и кулаков используется система из запресованных в пластик подшипников, подшипники соеденены между собой винтом. При расчёте системы рулевого управления использовались углы Аккермана.

Фотографии системы рулевого управления

Система

О наших электрических и механических компонентах

About

Лидар

В нашем роботе используется LD19. Он основан на принципе лазерной триангуляции расстояния и использует высокоскоростной процессор для сбора и обработки данных. Система измеряет данные о расстоянии более 4500 раз в секунду. Дальномер LD19 вращается по часовой стрелке и выполняет 360-градусное лазерное сканирование окружающего пространства. Полученные данные преобразуются главным микроконтроллером для построения виртуальных стен. Данный лидар имелся в наличии и является достаточно простым для использования, поэтому мы решили использовать именно его.

Камера

Для определения цвета знаков было решено использовать модуль технического зрения TrackingCam. Он является сенсорным устройством для исследования окружающего пространства путем обработки и анализа изображения со встроенной видеокамеры. Данная камера проста в настройке и использовании.

Драйвер двигателя

В качестве драйвера двигателя используется модуль MOSFET транзистора D4184. Данный модуль неприхотлив, прост в использовании. Однако у данного модуля есть один существенный минус: двигатель, под управлением данного драйвера, не имеет возможности двигаться в обратном направлении.

Металлический мотор-редуктор Polulu

Этот мотор-редуктор представляет собой миниатюрный двигатель постоянного тока средней мощности с обмоткой на 6 В и металлическим редуктором. Его поперечное сечение составляет 10 × 12 мм, а D-образный выходной вал редуктора имеет длину 9 мм и диаметр 3 мм. Эти миниатюрные щеточные моторы-редукторы постоянного тока выпускаются в широком диапазоне передаточных чисел - от 5:1 до 1000:1 - и с пятью различными двигателями: мощными 6 В и 12 В с угольными щетками с длительным сроком службы (HPCB), а также двигателями высокой (HP), средней (MP) и малой (LP) мощности 6 В с щетками из драгоценных металлов с меньшим сроком службы. Двигатели HPCB на 6 В и 12 В обладают одинаковой производительностью при соответствующих номинальных напряжениях, только двигатель на 12 В потребляет вдвое меньше тока, чем двигатель на 6 В. В нашем роботе используется двигатель 50:1 HPCB на 6 В.

Магнитный энкодер Polulu

На роботе команды "Кабинетный болид" закреплён магнитный энкодер polulu. На валу мотора закреплён диск магнитная полярность которого различна в разных точках. Энкодер сосоит из двух датчиков хола смещённых на 90 градусов друг относительно друга. Мы получаем с энкодера два сигнала смены магнитной полярности смещённые на 90 градусов. Это позволяет точно определить скорость вращения мотора и поддерживать её постоянной на протежение всего заезда. Данный энкодер был специально спроектирован для линейки двигателей polulu и использовать другой(сторонний) энкодер было не целесообразно

Датчик линии QTR-01A

На роботе установлены четыре датчика линии QTR-01A. На основе данных датчиков мы создали свои кастомные энкодеры на ведущие колеса. Таким образом мы собираемся коректировать ошибку лидара при движении робота.

Потенциометр

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

Сервопривод MG90S

MG90S - это маленький сервопривод похожий на популярную версию MG90. Так почему бы не использовать его синий аналог? Ответ прост - металлический редуктор. Благодаря ему сервопривод может приложить большое усилие для поворота колес без каких-либо последствий. С помощью этого сервопривода робот может довольно точно задать угол поворота колес.

ESP32

Плата Lolin D32 основана на микроконтроллере ESP32 от "Espressif systems" с низким энергопотреблением. Она обладает множеством мощных функций, включая двухъядерный процессор на базе Arm, Wi-Fi, Bluetooth, I2C, I2S, SPI, АЦП, ЦАП и 4 Мб флэш-памяти. Модуль D32 предоставляет эти функции в удобном формате DIP и может быть запрограммирован непосредственно с USB-интерфейса - дополнительное оборудование для программирования не требуется.

Подсистема питания и сенсоры робота

Питание

Источником питания робота является литий-полимерная батарея с номинальным напряжением 8.7 вольта. Для полного отключения питания робота, на плате размещен тумблер. На плате установлен делитель напряжения который позволяет контроллеру безопасно считать текущее напряжение акумулятора и предотвратить его разряд. На плате напряжение с акумулятора понижается до 5в при помощи схемы на основе модуля MP1584 для подачи его на лидар серву и камеру, ESP32. Для подачи на драйвер двигателя напряжение с акумулятора повышается до 8в при помощи схемы на основе модуля LM2577.

Сенсоры

Основным сенсором для определения стенок и кубиков является лидар, он позволяет узнавать расстояние до 300 точек вокруг робота с частотой обновления 15 раз в секунду. Поскольку лидар не имет возможности чётко определять цвет объекта перед роботом, для этой цели используется камера TrackingCam.

Схема электромеханического устройства

В этом блоке представлена схема основной печатной платы робота. Файл схемы печатной платы можно найти в этой папке. Общая схема

*Если картинка не открывается или вам нужна картинка лучшего качества, проверьте папку "schematic", пожалуйста.

Сборка робота

  1. Необходимо напечатать все пластиковые части на 3D принтере. Для этого зайдите в папку "3D-models" и распечатайте все модели на 3D-принтере.
  2. Необходимо купить такие компоненты как: Esp32 Lolin32, Понижающий преобразователь, Повышающий преобразователь, лидар LD-19, камеру TrackingCam, мотор Polulu, сервопривод SG-90S, драйвер мотора. Для робота также необходимы 4 подшипника 3x9x7, 16 подшипников 2x5x2.5, 2 подшипника 10x15x6, латунные втулки 3x6x4, дифференциал и четыре силиконовые шины Pololu. Для питания робота можно использовать любую 7.4V 2S Li-Po батарею размером 53x30x11.5мм, например, мы используем вот эту батарею.
  3. Для сборки напечатаных и купленных компонентов понадобится 16 винтов и гаек различных размеров(М3 /16, /10... и М2 /10):
  4. В соответствии с файлом печатной платы, спаяйте печатную плату робота (папка "schematic").
  5. Открыв 3Д файл робота в папке, соберите робота, как показано на модели.

Распознование стенок и препядствий

Для распознования стенок используется алгоритм апроксимации набора точек до прямой. Робот путём геометрических вычеслений, определяет расстояние до окружающих его стенок, и высчитывает свою координату относительно одного из углов поля. Движение робота (в первоначальном виде) осуществляется при помощи системы точек, по которым робот должен проехать. Основные точки ставятся програмно, при старте робота и находятся в начале и конце каждого прямого сегмента (по середине между стенками). По нахождению кубика робот ставит в соответствущей регламенту стороне две точки: сбоку перед и сбоку за кубиком. Для распознования кубиков робот смотрит есть ли какие либо точки в местах, где должны располагатся кубики, если такие точки есть, то кубик есть, а если нет, то кубика нет. Для определения цвета кубика используются данные с камеры. Для дополнительной информации откройте код. блоксхему

*Если картинка не открывается или вам нужна картинка лучшего качества, проверьте папку "Schematic diagram", пожалуйста.

Установка необходимых программ и прошивка платы

  • Для программирования робота вам понадобится Arduino IDE. Это программное обеспечение с открытым исходным кодом позволяет легко писать код и загружать его в плату. Откройте exe-файл и следуйте инструкциям программы установки.

  • Установите ESP32 в менеджере плат Arduino IDE, добавив ссылку (https://dl.espressif.com/dl/package_esp32_index.json) в настройки IDE.

    • Сначала добавьте дополнительные ссылки менеджера плат Settings Менеджер
    • Во-вторых, установите плату Boards Install
  • Используйте менеджер библиотек для установки библиотек ESP32. Открыть

    • Библиотеку для аналогового порта ESP32. AnalogWrite
    • И библиотеку ESP32Servo. ESP32Servo
  • Выберите плату "WEMOS LOLIN32". Подключите плату с ESP32 с помощью кабеля Micro USB к компьютеру и выберите соответствующий порт в IDE arduino. Нажмите кнопку "Загрузить". Upload

  • Также вам понадобитсяTrackingCam. Скачайте и откройте exe-файл и следуйте инструкциям программы установки.

  • После скачивания откройте программу и настройте камеру.

    • Подключите камеру к компьютеру и откройте программу.
    • Подберите настройки для зеленого и красного кубика(не забудьте переключить поиск(полоска снизу)на блоб два, после настройки первого кубика, иначе настройки запишутся поверх прошлых)
    • Или поставьте их как на скриншоте: Red Green
  • Настройки зависят от освещения и материала кубика. Те настройки, что указанны на скриншотах, могут не работать в вашем случае.

Запуск робота

  • Загрузить в робота нужный код
  • Проведите жеребьевку, как указано в правилах
  • Поставьте робота на стартувую позицию
  • Включите робота переключением тумблера в замкнутое положение
  • Нажмите кнопку для запуска

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.