Giter Club home page Giter Club logo

sunz250 / w1wro Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 59.41 MB

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

Python 100.00%

w1wro's Introduction

РРО: Будущие инженеры 2022 | LigaRobotov_OSError

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

https://youtu.be/0HV11u2FUfQ - URL-адрес видеоролика на платформе youtube, показывающий автономное вождение автомобиля и его краткий обзор

Содержание

  • team_photo - 2 командные фотографии: одна официальная и одна неофициальная (забавная) со всеми членами команды
  • robot_photo - 6 фотографий транспортного средства (со всех сторон, сверху и снизу)
  • Видео - файл video.md, в котором содержится URL-адрес на видеоролик на платформе youtube, показывающий автономное вождение автомобиля и демонстрацию его отдельных компонентов
  • schematic- схематические диаграммы всеx электромеханических компонентов (электронные компоненты и двигатели), используемых в автомобиле, и способы их соединения друг с другом
  • src - программный код беспилотного автомобиля.
  • 3D модели - 3D модели для печати, необходимые для производства элементов автомобиля

Описание робота

Наш робот создан для решения задания РРО категории Будущие Инженеры. Его главной задачей является прохождение гоночной трассы с установленными на ней дорожными знаками или смещенными коридорами на время. Дорожные знаки указывают сторону полосы движения, по которой должен следовать автомобиль. Если на пути красный столб - нужно держаться правой стороны полосы. Если зелёный, то левой стороны полосы. Задание считается выполненным, если автомобиль проехал 3 круга. Сбивать или сдвигать с места дорожные знаки - запрещено. Направление, в котором автомобиль должен двигаться по трассе (по часовой стрелке или против часовой стрелки), будет варьироваться в разных матчах. Начальное положение автомобиля, а также количество и расположение дорожных знаков определяются случайным образом во время жеребьёвки перед матчем.

Для движения интеллектуального беспилотного автомобиля используется мотор на 600 оборотов в минуту и потребляющий напряжение в 12 Вольт, соединенный с ведущей осью через дифференциал. Такая конструкция позволяет равномерно распределять крутящий момент мотора между ведущими колесами и обеспечивает надлежащую плавность хода.

Для ориентирования в процессе движения по гоночной трассе наш робот оборудован всеми необходимыми датчиками и сенсорами, а также камерой. Среди них - датчик абсолютной ориентации BNO085. В BNO085 есть свой модуль вычислений, это 32-битное ядро ARM Cortex M0, что позволяет производить большинство расчетов непосредственно внутри BNO085 и пользоваться уже готовыми результатами. Ядро получает данные: акселерометра, гироскопа, магнитометра, производит расчеты и сохраняет результаты. Результаты в дальнейшем могут быть запрошены внешними устройствами.

Для определения цвета дорожных знаков и ориентации используются 2 камеры, оснащенные сенсором SONY IMX-477, подключаются через интерфейс CSI.

Главным вычислительным модулем на роботе является одноплатный вычислительный модуль NVIDIA Jetson Nano. Модуль Jetson Nano — это компактный компьютер на базе ИИ, который обладает производительностью и энергоэффективностью, необходимой для современных задач искусственного интеллекта, параллельной работы нескольких нейронных сетей и одновременной обработки данных с нескольких датчиков высокого разрешения. Поэтому он представляет собой отличное начальное решение для внедрения сложных средств искусственного интеллекта во встраиваемые системы. NVIDIA Jetson Nano обеспечивает потрясающие новые возможности в миллионах компактных энергоэффективных систем ИИ. Решение открывает новые возможности для встроенных IoT-приложений, в том числе для видеорегистраторов начального уровня, домашних роботов и интеллектуальных шлюзов с возможностями аналитики.

Описание алгоритма

Для квалификационного этапа соревнований используется программа cvalification.py. Стратегия прохождения данного этапа – движение вдоль внешней черной стены, используя показания BNO, те придерживаясь курса. После запуска программа инициализирует все необходимые модули, зажигается синий светодиод – робот готов к старту, необходимо лишь нажать кнопку. Далее робот набирает крейсерскую скорость и едет до ближайшей цветной линии. Если линия синего цвета – движение против часовой стрелки, если оранжевого – наоборот. Как только направление движения распознано, задается значение переменной clock: 1 по часовой и -1 против, она будет использоваться при расчете курса BNO. Далее движение продолжается до того, как робот увидит стену впереди себя, после чего требуемый курс BNO меняется на 90 градусов влево или вправо в зависимости от направления движения. Как только робот поворачивает, к счетчику секторов прибавляется 1. Так после 3х кругов, когда значение счетчика равно 12, робот останавливается.

Для финального этапа соревнований используется программа final.py. По большей части она аналогична cvalification.py, но также добавлено распознавание дорожных знаков. Старт, финиш и определение направление движения происходят как на квалификации. В поворотах объезд кубиков производится по пропорционально-дифференциальному регулятору, как только робот замечает кубик и определяет его цвет и позицию – начинается регуляция, причем различная в зависимости от положения знака. На прямых участках трассы регулирование реализовано иначе: используя метод векторов, робот рассчитывает угол отклонения знака от траектории движения, после чего рассчитывает ошибку в зависимости от цвета и положения кубика, своего положения, отклонения от курса, величины угла отклонения знака, которая корректирует курс BNO. Используя функциональную зависимость, калькулируется время маневра, после чего робот меняет свой курс, объезжая знак или приближаясь к нему, в конце маневра возвращаясь на исходную прямую траекторию.

Инструкция по сборке автомобиля

1. Начинаем с нижней рамы и крепления сервомотора

FIN1

2. Устанавливаем штифты и оси LEGO для крепления других элементов

FIN2

3. Устанавливаем балки LEGO

FIN3

4. Устанавливаем сервомотор

FIN4

5. Устанавливаем элементы рулевой рейки и дифференциал

FIN5

__6. Втыкаем LEGO штифты __

FIN6

7. Устанавливаем уголки и балки LEGO

FIN7

FIN8

FIN9

8. Устанавливаем блок с мотором

FIN10

9. Устанавливаем крепление JETSON NANO

FIN11

10. Устанавливаем UPS POWER MODULE для JETSON NANO

FIN12

11. Устанавливаем колеса

FIN13

12. Устанавливаем servo shield

FIN14

13. Устанавливаем крепление камер и сами камеры, батарейный блок для мотора

FIN15

FIN16

FIN17

14. Устанавливаем JETSON NANO, верхний блок с кнопкой, светодиодами, датчиком BNO085, DC-DC преобразователь для питания мотора, антенны (при необходимости). Сборка готова

FIN18

FINAL19

FINAL20

Подсоединение к роботу, загрузка и запуск программ

1. Включаем питание Jetson Nano и моторов, дожидаемся полной загрузки. Модуль стартует собственный hotspot с именем w1bot.

2. Заранее скачиваем один из общедоступных IDE с поддержкой удаленного ssh подключения и редактирования кода, например мы используем Visual Studio Code.

3. Выбираем из списка доступных сетей w1bot, подключаемся.

Screenshot_13

4. После подключения переходим в каталог home/eg4/Documents/NN, находим папку competitions, в ней программы cvalification.py и final.py

Screenshot_14

5. Устанавливаем робота на полигоне, запускаем нужную программу, ждем, когда загорится синий светодиод, после чего робот готов к старту. Нажимаем на кнопку – происходит старт.

6. При необходимости автозапуска: через консоль редактируем файл startpython.sh, расположенный в каталоге home/eg4. Там раскомментируем строчку с запуском программы, меняем имя на cvalification.py или final.py по необходимости. Таким образом после перезагрузки Jetson Nano программа запустится самостоятельно.

Screenshot_16 Screenshot_15

w1wro's People

Contributors

w1ngedshadow avatar

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.