Я хотел бы рассказать о своей работе и нашем коллективном любимом проекте - мобильном комнатном роботе на основе комбинации микропроцессорной платы ARDUINO (ATMEGA328 - что понятнее), ESP8266 и Raspberry Pi. Мы с друзьями назвали его MIRO — от «Мобильный интеллектуальный робот».
Оглавление: Часть 1 , Часть 2 , Часть 3 , Часть 4 , Часть 5 .
Я руководитель Учебно-исследовательского центра робототехники Тихоокеанского государственного университета и одновременно нашего местного небольшого хакспейса EastMaker. Наш центр при университете существует уже пятый год. Формально мы являемся структурным подразделением университета, у которого есть два основных вектора деятельности (неожиданно): образовательный и научный.
Научная деятельность пока связана в основном с существующим багажом – системами навигации и связи подводной робототехники.
Еще до появления нашего центра на кафедре компьютерных наук существовала Лаборатория интеллектуальных технологий и систем («ЛИТС») — совместная лаборатория с Институтом морских технологий Дальневосточного отделения РАН.
И оно все еще существует. При создании центра заведующий этой лабораторией стал его научным руководителем, а Центр робототехники стал ресурсной базой ЛИТиС.
Вторая составляющая деятельности – образование.
Образовательный процесс в Центре построен в рамках проектной деятельности студентов и школьников (в ряде проектов мы привлекаем школьников города).
Над проектами работают как студенты, так и аспиранты практически всех технических специальностей.
Наш центр является межведомственным и не привязан ни к какому ведомству.
Проекты, исследования и разработки на нашей технической базе могут выполнять студенты и сотрудники всего университета.
Лишь бы было желание и этой самой базы хватило.
Одновременно с этой деятельностью мы с друзьями создали в Хабаровске частную школу робототехники и прикладных инженерных знаний для детей.
А для образовательной деятельности в школе и в Центре робототехники практически сразу стало понятно, что нужен некий курс для юного бойца, охватывающий основы по следующим направлениям:
- основы микропроцессорной техники;
- простые датчики (принципы работы, особенности использования);
- основы технологий обработки материалов (фрезерование, лазерная резка, 3D-печать);
- сценарии управления и простые алгоритмы из области мобильной робототехники.
И мы обнаружили следующую странность.
Было несколько действительно хороших роботов и комплектов ARDUINO. Часто довольно дорого.
Но обычно у них было два больших недостатка:
- использование какого-то «оригинального» железа (часто того же ARDUINO, но в фирменном исполнении, что предполагает приобретение плат исключительно одного производителя);
- отсутствие учебного материала (это вообще интересная вещь - люди делают отличные наборы и наборы для обучения, но совершенно не заботятся о производстве базовых вещей: пособий, уроков, рабочих тетрадей (при необходимости)).
Со временем логика этого проекта полностью изменилась.
Изначально мы создали образовательный комплекс на базе нашего робота.
И не было там ни ESP, ни Raspberry Pi. Были ARDUINO и модуль Bluetooth. Вот самая первая тележка:
Благодаря этой тележке мы знали, чем занять учеников.
Ну, еще на фестивале «РОБОМЕХ», который мы организовали в Хабаровске, мы организовали для посетителей небольшую игру по робо-футболу.
Через некоторое время мы сделали вторую версию, которая принципиально не отличалась, за исключением формы и некоторых доработок в компоновке.
На этом этапе мы также полностью отказались от 3D-печати — все держатели и кронштейны были изготовлены из двух листовых материалов (акрил и фанера) методом лазерной резки.
У нас уже была отличная иллюстрированная инструкция по сборке комплекта, своего рода ликбез с пособиями и рабочими тетрадями, и мы активно обучали школьников и студентов, проводили мастер-классы на днях открытых дверей и городских праздниках.
Примерно в это же время рынок был наводнен различными решениями на эту тему.
А возможности ATMEGA328 в реальной робототехнике, даже для образования, стали слишком незначительными.
Тогда и родилась новая концепция комнатного робота MIRO, представляющая собой открытое решение для быстрого прототипирования внутренних и уличных мобильных роботов с достаточно функциональным аппаратным обеспечением, позволяющим окунуться в OpenCV и ROS и всевозможные IOT. В этом суть сегодняшней концепции MIRO. Во-первых , MIRO - небольшой мобильный робот, с полностью открытым исходным кодом (вплоть до использования готовых серийных компонентов и плат - если производитель не предоставляет исходный код, то у нас его нет), распространяемый по лицензии CC Attribution Share Alike Лицензия 4.0. Корпус робота изготовлен с помощью 3D-печати и лазерной резки.
После первой версии робота, стремясь снизить стоимость, мы вообще не хотели использовать 3D-печать в технологии производства.
Но помучившись с листовыми материалами во втором варианте, я полностью отказался от идеи снижения стоимости в ущерб качеству и функциональности.
И сегодня MIRO на 90% изготавливается с помощью 3D-печати.
Гораздо более механически надежен и приятен в использовании.
Единственной целью, которую мы преследовали в процессе проектирования деталей шкафа, была простота печати.
Мне хотелось избежать сложных опор и «искривленных» участков — чтобы даже дешевый 3D-принтер давал хороший результат. Забегая вперед, скажу, что мы этого добились — тестовая печать без каких-либо доработок на абсолютном ширпотребе ANET A6 это подтвердила.
MIRO имеет некоторую модульность.
Модуль переднего датчика можно довольно легко заменить, не разбирая робота.
Кроме того, робот спроектирован таким образом, что практически все компоненты легко доступны и легко заменяются.
Мы специально стремились к простоте использования и модификации.
Подробнее об этом я расскажу чуть позже.
Во-вторых , MIRO — это разработанные программные средства:
- API робота для ATMEGA328 с библиотекой связи с Raspberry Pi (еще в разработке) или с хостом по UART (но это уже готово).
- Примеры уроки и программы от простейшего вращения моторов до технического зрения с передачей видеопотока или результатов обработки видео на хост. В ближайшее время мы планируем сделать пачку примеров для ROS.
- Готовый изображений Raspbian с предустановленными библиотеками и программным обеспечением, виртуальные машины VirtualBox также поставляется с предустановленным программным обеспечением для разработки.
В настоящее время находится в стадии бета-тестирования Веб-сайт с возможностью публиковать свои проекты для MIRO. Пока там можно размещать только небольшие файлы, но со временем, думаю, раскошелимся.
Сейчас будет серия статей о MIRO, в которых я расскажу о ней подробнее, со всеми подробностями.
Честно говоря, объем материалов уже такой, что мне сложно успевать вовремя обновлять репозитории (это все-таки не основная моя работа).
В результате в материалах могут быть ошибки и неточности.
Кроме того, у меня нет абсолютно никакого опыта поддержки проектов с открытым исходным кодом.
Надеюсь, скоро всему этому научусь.
Также планируется перевести все материалы на английский язык.
Для нас это отдельная большая работа, и мы просто пока не успели ее сделать.
Некоторые материалы из цикла статей будут дублировать мои инструкции из репозиториев, но местами будут более подробными.
Сегодня мы рассмотрим аппаратную часть робота.
Робот MIRO основан на сочетании трех популярных микропроцессорных систем:
- ARDUINO (на базе Atmel ATMEGA328, ядро AVR)
- ЭСП8266
- Raspberry Pi (какая версия сейчас не важно).
Для получения напряжения 5В, необходимого большинству микропроцессорных устройств робота, используется преобразователь на микросхеме LM2596S. В базовой конфигурации все датчики и исполнительные механизмы управляются ATMEGA328. ESP8266 позволяет осуществлять беспроводное программирование чипа ATMEGA328 из ARDUINO IDE, а также служит мостом SERIAL-WIFI, позволяя обмениваться данными с последовательным портом ATMEGA328 (UART) по беспроводной сети с использованием протокола TELNET. Очевидно, что ATMEGA328 и ESP8266 соединены через линии RX/TX. Кроме того, для проведения беспроводной прошивки микросхемы ATMEGA328 линия RESET этой микросхемы подключается к линии GPIO2 микроконтроллера ESP8266. Таким образом, даже без Raspberry Pi MIRO содержит развитую и удобную для разработки архитектуру.
В базовой комплектации робота с фронтальным модулем SENS1 к микроконтроллеру ATMEGA328 подключаются следующие датчики и устройства:
- Цифровые датчики одометра (левое и правое колеса)
- Драйвер левого и правого двигателя на базе микросхем L9110S.
- Ультразвуковой линейный датчик HC-SR04
- Фоторезистивные датчики освещенности (слева и справа)
- Пьезоизлучатель звука
- Светодиоды переднего света (левый и правый)
- Датчики линии (слева, справа и по центру)
- Серводвигатель наклона камеры
Вы можете спроектировать и изготовить собственный фронт-модуль для замены предлагаемого модуля (в документации называемого SENS1) своими задачами и устройствами.
Устройства 1, 2 и 8 обязательны для функционирования робота и не могут быть отключены.
Это и понятно – без мотористов робот не сможет двигаться, а без датчиков одометрии вы ничего не сможете сказать о характере движения робота и не сможете должным образом контролировать его движение.
Ну и подвес камеры (если его можно так назвать), вероятно, тоже является неотъемлемой частью.
Плата Raspberry Pi подключается к ATMEGA328 через интерфейс I2C (TWI).
Raspberry Pi Camera v1.3 подключена к плате Raspberry Pi. Хотелось бы обратить ваше внимание на те серийные компоненты, которые на данный момент используются в МИРО.
В основном мы ориентировались на одного китайско-российского производителя (название компании вы можете увидеть в карте производства, в списке серийных комплектующих).
Частично это было сделано намеренно.
У китайцев полно всяких модулей твитеров, свистков и прочего ширпотреба.
Эти же ребята представляют хоть какой-нибудь бренд с номенклатурными обозначениями.
И можно хоть как-то указать, какая железка должна быть в том или ином узле робота.
Хотя продают тот же ширпотреб за небольшие деньги.
Я присмотрелся к ним и был впечатлен тем, что это, похоже, российская компания.
А сообщение, которое они публикуют на своем сайте, вселило надежду, что ребята «за все красивое».
На деле, видимо, все немного не так хорошо.
Принципиальная схема как минимум платы UNO+WiFi от этого производителя не выдерживает никакой критики.
Он неполный и содержит много ошибок.
По нему мы не смогли определить все компоненты платы и что куда подключено.
Разработчики встроили в саму плату одну бесполезную ошибку/особенность: единую схему сброса для ATMEGA328 и ESP8266. Это означает, что на этой плате невозможно организовать беспроводную прошивку ATMEGA328 через ESP8266 — когда ESP8266 пытается сбросить ATMEGA, он тянет собственную линию сброса.
При этом на плате имеется отдельная кнопка сброса ESP и кнопка общего сброса сразу всех контроллеров.
Кроме того, на плате имеется 8-строчный DIP-переключатель.
И восьмой переключатель не активирован.
В итоге я оборвал линию сброса ESP и с помощью жгута проводов дал возможность подключить ее к общей цепи сброса с помощью этого восьмого переключателя.
То есть, если переключатель 8 выключен, сброс ESP возможен только нажатием кнопки ESP RESET, а сигнал на общей линии RST или нажатие общей кнопки сброса не приводит к сбросу ESP. При включении переключателя все возвращается в то состояние, в котором оно было до модификации платы.
Остаётся только придумать, как разорвать цепочку сбросов.
Я нашел самое безболезненное решение.
- Отпаиваем диод D3 возле разъема для подключения внешней антенны.
- Припаяйте конденсатор между ножкой припаянного диода (на нем 3,3В) и землей.
Вспомнив сообщение на сайте, я написал им предложение все равно исправить эту «фичу».
Но мне даже ничего не ответили.
Делать свое железо вообще не хотелось, но видимо придется.
Тоже под открытой лицензией.
Есть альтернативное решение — обычная Arduino UNO и вот эта плата расширения (или что-то подобное).
Но это несколько неудобно при прошивке ESP. Однако прошивка ESP в ее нынешней роли в MIRO — довольно редкая процедура.
Ну в любом случае для беспроводной прошивки нужно подключить GPIO2 ESP8266 к линии Reset контроллера ATMEGA328. Можно выбрать другой GPIO, но в коде MIRO указан GPIO2 (или код придется править).
Сначала по неопытности выбрали первое, что попалось под руку, как говорится, GPIO0. Но они быстро поняли свою ошибку - чтобы прошить прошивку ESP, эту перемычку пришлось отключить/выпаять, потому что в процедуре прошивки используется линия GPIO0 в ESP. Общий вывод: при сборке МИРО можно использовать любые платы любого производителя, позволяющие удовлетворить требования схемы включения.
Полная принципиальная схема робота MIRO представлена в одном из упомянутых материалов.
Просто тривиальный вопрос.
Есть ли подобные решения на рынке? Конечно, есть.
Но это дорого.
И, кстати, ребята, которые уже целую серию издают статьи вот про тележку на РОС тоже отметили отсутствие более-менее доступного "аппаратного" решения.
Будет здорово, если мы с авторами реализуем свои результаты в MIRO. Теперь о планах в целом.
За развитие всего и вся до третьей версии проект получил государственную поддержку.
финансирование.
А именно, Фонд содействия инновациям.
За что ему большое спасибо.
Без этих денег мы, наверное, оставили бы его при себе и совсем в другом качестве.
Мне очень хочется, чтобы робот стал площадкой для прототипирования, обучения и экспериментов, что положит начало какому-то реальному взаимодействию между CMIT-ами (FabLab-ами, хакспейсами) в нашей стране.
Он стал уникальной точкой совместных усилий, где вклад каждого становится преимуществом каждого.
Я четко понимаю, что рассчитываю на несколько команд, которым это будет интересно.
Но даже такое взаимодействие будет успешным.
Меня очень вдохновляет то, как это работает на Западе — как из практически пустого пространства и инициативы нескольких скучающих людей рождается огромная экосистема.
Что, если это сработает? Есть много мест, где можно приложить усилия.
Текущая дорожная карта развития, насколько я ее вижу, лежит на доске Канбан на GitHub .
Мы также разработали некоторую политику развития проекта.
Любая платформа требует определенных ограничений, «галочек».
Без них все превращается в анархию, и платформа не возникает, а если и возникает, то ненадолго.
На том же GitHub лежит документ , что-то вроде манифеста по развитию платформы.
Со временем оно почти наверняка изменится — просто опыт будет настроен так, как удобно всем (пользователям, разработчикам).
Что касается коммерческого потенциала, то он, безусловно, у проекта есть, и мы с командой тоже постараемся его использовать.
Как? Самое простое – это производство и продажа сборочных комплектов.
В конечном итоге это еще и способ расширить аудиторию пользователей, которые не очень хотят заморачиваться с продакшеном.
Не долго думая, было решено открыть предзаказ на готовых роботов на сайте уже сейчас.
Всем спасибо за внимание и буду рад конструктивным вопросам и инициативам, помогающим в развитии проекта.
Следующая статья будет посвящена механике, конструкции и изготовлению корпуса.
Несколько фотографий роботов.
P.S. На протяжении всего пути проект сопровождали близкие и дорогие мне люди, которые в разные периоды времени становились частью команды и помогали развивать проект. У кого-то наши профессиональные пути разошлись, но я не могу не отметить их вклад. Пусть их имена почти никому ничего не говорят, но я надеюсь, что они будут довольны.
Это Евгений Ледков, который сейчас работает в ДВФУ в дирекции образовательных программ, написавший первый бизнес-план для того, чего по сути еще не существовало, и работавший над проектом всей душой.
И Павел Ефимов, тоже перешедший в ДВФУ, в лабораторию робототехники, который сделал как раз очень многое, прямо или косвенно связанное с проектом.
И Баир Дамбаев, который вернулся на родину в Улан-Удэ и теперь обучает детей в основанном им детском центре.
И еще несколько ребят, которые просто хорошо выполнили свою работу.
Теги: #Сделай сам или Сделай сам #Raspberry Pi #Разработка робототехники #с открытым исходным кодом #arduino #Разработка Arduino #ESP8266 #Робототехника своими руками
-
Обзор Sony Vaio Vpc-E Серии C3L1E/Wi
19 Oct, 24 -
Мой Питомец - Linguaplayer
19 Oct, 24 -
Gaim 2.0 Готов К Выпуску
19 Oct, 24