Давайте поговорим о такой теме как программируемые роботы. Что это значит? Это законченный робот с системой датчиков, которого можно программировать простым образом с компьютера по usb кабелю. За основу возьмем среду разработки Arduino IDE и язык C++. Таким образом порог вхождения оказывается низким и заняться робототехникой может практически каждый кто начинает изучать программирование или уже обладает какими то знаниями. Если мы применяем уже готовые библиотеки, классы которые реализуют работу с датчиками и моторами, то мы получаем систему когда в программном коде робот нам например говорит что он столкнулся с препятствием с такой-то стороны, а мы на это задаем ему отъехать назад, повернуть налево и ехать дальше. Или в программе задаем проехать вперёд 1 метр, повернуть на 30 градусов направо, проехать прямо еще 2 метра и выполнить какое-то действие. На основе этого мы можем программировать робота уже на более сложные задачи, получая удовлетворение в виде обучения программирования робота или просто как хобби. При этом вау эффект обеспечен: )
Теперь поговорим о самом роботе. Конструкция шасси моей разработки, были учтены проблемы предыдущего шасси, новое имеет хорошую проходимость и легче разворачивается. Пластины шасси вырезаны лазерной резкой из оргстекла, остальные детали напечатаны на 3d принтере своей конструкции. Мотор редукторы поставил с соотношением 1:120, они дают больший момент на меньших оборотах, роботу стало заметно легче разворачиваться.
Главной особенностью новой версии является применение кругового бампера собственной конструкции. Он позволяет определить столкновение с любой стороны с высокой точностью. Сделан он на основе 8 микропереключателей, конструкцию вы можете видеть на фото. Теперь робот может ездить даже без локатора.
Электроника тоже была изменена, перешел на Arduino Mega ADK так как не хватало входов/ выходов на arduino Uno. Новая версия робота прошла стресс тестирование дома в режиме непрерывной работы в течении нескольких часов. Новая система датчиков показала что робот спокойно может ориентироваться в комнате даже среди кучи разбросанных вещей, проводов по полу.
Что это значит? Вы можете программировать робота на различные задачи движения, например: объезд комнаты, гонка по трассе, соревнования с другими роботами, поиск маркеров и.т.д.
Для демонстрации была выбрана задача проехать роботом с написанным алгоритмом движения по произвольно построенной из подручных предметов трассе до финиша обозначенного белыми листами бумаги.
Для навигации по трассе использовались следующие датчики: ультразвуковой дальномер, инфракрасный дальномер, бампер, энкодеры на колёсах. Исходя из данных с них, алгоритм выстраивает маршрут движения.
Финиш определяется датчиком линии, мне удалось его так настроить что большинство ровных поверхностей в квартире таких как ковры, линолеум он определяет как чёрный цвет. Соответственно белый лист бумаги как белый.
Проект open sorce все исходники вы можете скачать и принять участие в развитии проекта.
Также прилагаю чертежи в corel для лазерной резки и файлы для 3d печати. Если у вас нет доступа к такому оборудованию, можете обращаться ко мне изготовлю вам эти детали и вышлю почтой.
Основание(толщина 3-5мм) и бампер(толщина 5мм) для лазерной резки.
В идеале я сейчас вижу будущее данного проекта как open sorce бюджетного робота для изучения программирования роботов как простых роботов на arduino так и сложных на основе ROS (операционной системы роботов).
По поводу ROS. Она дает по истине безграничные возможности по программированию робота. Я вижу за этим будущее робототехники. На данный момент есть две основные проблемы это отсутствие бюджетных роботов под нее и вся актуальная документация на английском языке. Первую проблему решает данный робот, через блютус, wi-fi или через телефон на Android его можно связать с ядром ROS(уже пробовал через блютус связать с ноутбуком с ROS). Вторую не знаю как решить, потихоньку изучаю туториалы на английском языке, но идет крайне медленно. Если вызовутся люди готовые перевести на русский язык был бы очень благодарен, готов организовать такую работу.