Оглавление:

EyeRobot - роботизированная белая трость: 10 шагов (с изображениями)
EyeRobot - роботизированная белая трость: 10 шагов (с изображениями)

Видео: EyeRobot - роботизированная белая трость: 10 шагов (с изображениями)

Видео: EyeRobot - роботизированная белая трость: 10 шагов (с изображениями)
Видео: Костюм для аниматора БЕНДЕР | Robot BENDER costume #shorts 2024, Июль
Anonim
EyeRobot - роботизированная белая трость
EyeRobot - роботизированная белая трость

Аннотация: Используя iRobot Roomba Create, я создал прототип устройства под названием eyeRobot. Он будет направлять слепых и слабовидящих пользователей через загроможденную и густонаселенную среду, используя Roomba в качестве основы, сочетающей простоту традиционной белой трости с инстинктами собаки-поводыря. Пользователь указывает желаемое движение, интуитивно нажимая и поворачивая ручку. Робот берет эту информацию и находит свободный путь по коридору или через комнату, используя сонар, чтобы направлять пользователя в подходящем направлении вокруг статических и динамических препятствий. Затем пользователь следует за роботом, поскольку он направляет пользователя в желаемом направлении за счет ощутимой силы, ощущаемой через ручку. Этот вариант робота требует небольшого обучения: толкайте, чтобы идти, тянуть, чтобы остановиться, крутить, чтобы повернуть. Прицел, обеспечиваемый дальномерами, аналогичен видению собаки-поводыря и является значительным преимуществом по сравнению с постоянным методом проб и ошибок, который отмечается при использовании белой трости. Тем не менее, eyeRobot по-прежнему представляет собой гораздо более дешевую альтернативу, чем собаки-поводыри, которые стоят более 12 000 долларов и служат всего 5 лет, в то время как прототип был построен гораздо дешевле 400 долларов. Это также относительно простая машина, требующая нескольких недорогих датчиков, различных потенциометров, некоторого оборудования и, конечно же, Roomba Create.

Шаг 1: демонстрация видео

Видео демонстрация
Видео демонстрация

Версия высокого качества

Шаг 2: Обзор работы

Обзор работы
Обзор работы

Пользовательский контроль: управление eyeRobot максимально интуитивно понятно, что позволяет значительно сократить или исключить обучение. Чтобы начать движение, пользователю просто нужно начать идти вперед, линейный датчик в основании ручки улавливает это движение и начинает двигать робота вперед. Используя этот линейный датчик, робот может затем согласовать свою скорость с желаемой скоростью пользователя. eyeRobot будет двигаться так быстро, как хочет пользователь. Чтобы указать, что нужен поворот, пользователю просто нужно повернуть ручку, и, если поворот возможен, робот отреагирует соответствующим образом.

Навигация роботов: при путешествии в открытом космосе eyeRobot будет пытаться придерживаться прямого пути, обнаруживая любые препятствия, которые могут помешать пользователю, и направляя пользователя вокруг этого объекта и обратно на исходный путь. На практике пользователь может естественным образом следовать за роботом, не обладая сознательными мыслями. Чтобы перемещаться по коридору, пользователь должен попытаться толкнуть робота в одну из стен с обеих сторон, при достижении стены робот начнет следовать за ним, направляя его. пользователь по коридору. При достижении перекрестка пользователь почувствует, что робот начинает поворачиваться, и может выбрать, повернув ручку, повернуть ли новое ответвление вниз или продолжить движение по прямому пути. Таким образом, робот очень похож на белую трость, пользователь может ощущать окружающую среду с помощью робота и использовать эту информацию для глобальной навигации.

Шаг 3: Датчики диапазона

Датчики диапазона
Датчики диапазона

Ультразвук: EyeRobot имеет 4 ультразвуковых дальномера (MaxSonar EZ1). Ультразвуковые датчики расположены по дуге в передней части робота, чтобы предоставлять информацию об объектах перед и по бокам робота. Они информируют робота о радиусе действия объекта и помогают ему найти открытый маршрут вокруг этого объекта и вернуться на исходный путь.

ИК-дальномеры: eyeRobot также оснащен двумя ИК-датчиками (GP2Y0A02YK). ИК-дальномеры расположены так, что направлены на 90 градусов вправо и влево, чтобы помочь роботу следовать за стеной. Они также могут предупреждать робота об объектах, слишком близких к его сторонам, в которые может войти пользователь.

Шаг 4: датчики положения тростника

Датчики положения тростника
Датчики положения тростника

Линейный датчик: для того, чтобы eyeRobot соответствовал своей скорости скорости пользователя, eyeRobot определяет, толкает ли пользователь его поступательное движение или замедляет его. Это достигается за счет скольжения основания трости по направляющей, поскольку потенциометр определяет положение трости. EyeRobot использует этот вход для регулирования скорости робота. Идея eyeRobot, адаптирующаяся к скорости пользователя с помощью линейного датчика, на самом деле была вдохновлена семейной газонокосилкой. Основание трости соединено с направляющим блоком, движущимся по рельсу. К направляющему блоку прикреплен ползунковый потенциометр, который считывает положение направляющего блока и сообщает его процессору. Чтобы ручка могла вращаться относительно робота, через деревянный брусок проходит стержень, образующий вращающийся подшипник. Затем этот подшипник прикрепляется к шарниру, чтобы ручка могла регулироваться по росту пользователя.

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

Шаг 5: процессор

Процессор
Процессор

Процессор: Роботом управляет Zbasic ZX-24a, установленный на материнской плате Robodyssey Advanced II. Процессор был выбран из-за его скорости, простоты использования, доступной стоимости и 8 аналоговых входов. Он подключается к большой макетной плате для быстрого и легкого внесения изменений. Вся энергия для робота поступает от блока питания на материнской плате. Zbasic связывается с Roomba через порт грузового отсека и полностью контролирует датчики и двигатели Roomba.

Шаг 6: Обзор кода

Обзор кода
Обзор кода

Избегание препятствий: для обхода препятствий eyeRobot использует метод, при котором объекты рядом с роботом оказывают на него виртуальную силу, отодвигая его от объекта. Другими словами, объекты отталкивают робота от себя. В моей реализации виртуальная сила, прилагаемая объектом, обратно пропорциональна квадрату расстояния, поэтому сила толчка увеличивается по мере приближения объекта и создает нелинейную кривую отклика: PushForce = ResponseMagnitudeConstant / Distance2Толчки, исходящие от каждого датчика, складываются; датчики на левой стороне нажимают вправо и наоборот, чтобы получить вектор движения робота. Затем скорость вращения колес изменяется, так что робот поворачивает к этому вектору. Чтобы гарантировать, что объекты, мертвые перед роботом, не покажут «нет реакции» (потому что силы с обеих сторон уравновешены), объекты на мертвой передней части толкают робота на более открытую сторону. Когда робот прошел мимо объекта, он использует кодировщики Roomba для корректировки изменения и возврата к исходному вектору.

Следование по стене: Принцип следования за стеной состоит в том, чтобы поддерживать желаемое расстояние и параллельный угол к стене. Проблемы возникают, когда робот поворачивается относительно стены, потому что единственный датчик дает бесполезные показания дальности. На показания дальности влияет как угол поворота робота к стене, так и фактическое расстояние до стены. Чтобы определить угол и, таким образом, исключить эту переменную, робот должен иметь две точки отсчета, которые можно сравнить, чтобы получить угол робота. Поскольку у eyeRobot только одна сторона обращена к инфракрасному дальномеру, для достижения этих двух точек он должен сравнивать расстояние от дальномера с течением времени по мере движения робота. Затем он определяет угол по разнице между двумя показаниями, когда робот движется вдоль стены. Затем он использует эту информацию для исправления неправильного позиционирования. Робот переходит в режим следования за стеной всякий раз, когда рядом с ним находится стена в течение определенного времени, и выходит из нее всякий раз, когда на его пути появляется препятствие, которое сбивает его с курса, или если пользователь использует поворотную ручку для перемещения робот от стены.

Шаг 7: Список деталей

Список деталей
Список деталей

Необходимые детали: 1x) Roomba create1x) Большой лист акрила2x) ИК-дальномер Sharp GP2Y0A02YK4x) Ультразвуковые дальномеры Maxsonar EZ11x) Микропроцессор ZX-24a1x) Robodyssey Advanced Материнская плата II1x) Ползунковый потенциометр1x) Однооборотный потенциометр1x) Линейный подшипник1x) Линейный подшипник1x) Петли, дюбели, винты, гайки, скобы и провода

Шаг 8: мотивация и улучшение

Мотивация и улучшение
Мотивация и улучшение

Мотивация: Этот робот был разработан, чтобы заполнить очевидный пробел между способной, но дорогой собакой-поводырем и недорогой, но ограниченной белой тростью. При разработке рыночной и более способной роботизированной белой трости Roomba Create стал идеальным средством для создания быстрого прототипа, чтобы проверить, работает ли эта концепция. Кроме того, призы обеспечат экономическую поддержку значительных затрат на создание более способного робота.

Улучшение: Объем, который я узнал при создании этого робота, был значительным, и здесь я попытаюсь изложить то, что я узнал, когда я перейду к попытке построить робота второго поколения: 1) Избегание препятствий - я много узнал о препятствиях в реальном времени. избегание. В процессе создания этого робота я прошел через два совершенно разных кода уклонения от препятствий, начиная с исходной идеи силы объекта, затем перейдя к принципу поиска и поиска наиболее открытого вектора, а затем вернувшись к идее силы объекта с помощью ключевая реализация того, что реакция объекта должна быть нелинейной. В будущем я исправлю свою ошибку, заключающуюся в том, что не проводил никаких онлайн-исследований ранее использованных методов перед тем, как приступить к своему проекту, так как теперь я узнаю, что быстрый поиск в Google дал бы множество замечательных статей по этой теме. Датчики - Начиная этот проект, я думал, что мой единственный вариант для линейного датчика - это использовать ползун и какой-то линейный подшипник. Теперь я понимаю, что гораздо более простым вариантом было бы просто прикрепить верх стержня к джойстику так, чтобы при нажатии на ручку вперед он также толкался вперед. Кроме того, простой универсальный шарнир позволяет преобразовать поворот ручки в ось поворота многих современных джойстиков. Эта реализация была бы намного проще, чем та, которую я сейчас использую. 3) Свободно вращающиеся колеса - хотя это было бы невозможно с Roomba, теперь кажется очевидным, что робот со свободно вращающимися колесами будет идеальным для этой задачи. Роботу, который катится пассивно, не потребуются двигатели и батарея меньшего размера, а значит, он будет легче. Кроме того, эта система не требует линейного датчика для обнаружения толчка пользователя, робот просто катится со скоростью пользователя. Робота можно было повернуть, поворачивая колеса, как автомобиль, и, если нужно было остановить пользователя, можно было добавить тормоза. Для следующего поколения eyeRobot я, безусловно, буду использовать этот совсем другой подход.4) Два разнесенных датчика для отслеживания стены - как обсуждалось ранее, проблемы возникали при попытке следовать за стеной только с одним боковым датчиком, поэтому необходимо было перемещать робота между измерениями для достижения разных точек отсчета. Два датчика с расстоянием между ними значительно упростили бы отслеживание стены. 5) Больше датчиков - хотя это стоило бы больше денег, было сложно написать код этого робота с таким небольшим количеством окон в мире за пределами процессора. Это сделало бы код навигации намного более мощным с более полным набором сонаров (но, конечно, датчики стоят денег, которых у меня не было в то время).

Шаг 9: Заключение

Заключение
Заключение

Вывод: iRobot оказался идеальной платформой для создания прототипов для экспериментов с концепцией роботизированной белой трости. Из результатов этого прототипа очевидно, что робот этого типа действительно жизнеспособен. Я надеюсь разработать робота второго поколения на основе уроков, которые я извлек из использования Roomba Create. В будущих версиях eyeRobot я представляю себе устройство, способное делать больше, чем просто вести человека по коридору, а скорее робота, которого можно будет передать слепым для использования в повседневной жизни. С помощью этого робота пользователь будет просто говорить о своем пункте назначения, и робот будет направлять его туда без сознательных усилий со стороны пользователя. Этот робот будет легким и достаточно компактным, чтобы его можно было легко поднимать по лестнице и спрятать в шкафу. Этот робот сможет выполнять глобальную навигацию в дополнение к локальной, имея возможность направлять пользователя от начала до пункта назначения без предварительных знаний или опыта пользователей. Эта возможность выходит далеко за рамки даже собаки-поводыря, с GPS и более продвинутыми датчиками, позволяющими слепым свободно перемещаться по миру, Натаниэль Баршай (введен Стивеном Баршаем) (особая благодарность Джеку Хитту за Roomba Create)

Шаг 10: конструкция и код

Строительство и Кодекс
Строительство и Кодекс

Несколько посторонних слов о конструкции: Палуба сделана из куска акрила, вырезанного по кругу с отверстием сзади для доступа электроники, а затем ввинчивается в монтажные отверстия рядом с грузовым отсеком. Макетная плата вкручивается в отверстие под винт в нижней части отсека. Zbasic крепится с помощью L-образного кронштейна с теми же винтами, что и дека. Каждый гидролокатор прикручивается к куску акрила, который, в свою очередь, прикрепляется к L-образному кронштейну, прикрепленному к палубе (L-образные кронштейны отогнуты назад на 10 градусов, чтобы обеспечить лучший обзор). Направляющая для линейного датчика ввинчивается прямо в деку, а ползун устанавливается с помощью L-образных скоб рядом с ней. Более подробное техническое описание конструкции линейного датчика и регулирующей тяги можно найти на шаге 4.

Код: я прикрепил полную версию кода robots. В течение часа я пытался очистить его от трех или четырех поколений кода, которые были в файле, теперь это должно быть достаточно легко для понимания. Если у вас есть ZBasic IDE, ее будет легко просматривать, если не использовать блокнот, начиная с файла main.bas и просматривая другие файлы.bas.

Рекомендуемые: