О роботе

Исследования роботов, мысли и идеи на эту тему

Первый вариант

Цель создания первого варианта робота — изучение существующих на рынке компонентов, поиск технологий создания элементов робота, инструментов проектирования и моделирования.

Итак, вот что получилось в результате:

Первый вариант робота для исследований

Характеристики:
  • Материал — 3 мм акрил (оргстекло). Выбран, потому что хорошо режется лазером и клеится Cosmofen-гелем.
  • Размеры — высота: 60 см, ширина: 31 см.
  • Общий вес — 2560 г. (нога с верхним шарниром и сервоприводом — 560 г., рука с плечевым шарниром и сервоприводом — 290 г., тело — 860 г.).
  • Сервоприводы TowerPro MG995, HXT12K. Шесть в каждой ноге, по три в руке, один в шее.
  • Контроллер — OR-AVR-M128-S + модуль подключения по OR-USB-UART
  • Два блока питания TURNIGY 8-15A UBEC. Питание внешнее.
  • Гироскоп, акселерометр, компас, термометр Pololu MinIMU-9
  • Датчик тока, напряжения (спаян самостоятельно, ACS713).
  • Моделирование деталей Компас 3D
  • Моделирование электронных схем DipTrace.
  • Управление роботом — с компьютера, собственной программой на hta + jsсript.

Видео робота:

  • Робот встает из положения лежа:
  • Робот машет рукой:

В этом варианте особо тщательно прорабатывались ноги. Моделировались по человеческой ноге, имеют 6 степеней свободы/сервоприводов. Вот изображение модели ноги:

Руки сделаны только для красоты, а до головы дело вообще пока не дошло. Акселерометр подключен, снимаются показания, но пока не принимает участие в алгоритме управления роботом. Программа позволяет управлять сервоприводами, снимать показания с датчиков, объединять положения сервоприводов в шаги, а шаги в последовательность действий, выполнять действия последовательно. Интерфейс программы на картинке:

Зеленые элементы — сервоприводы (размещение в соответствии с реальными), синеголубые — датчики, правая панель — шаги. Внизу окно журнала команд, отправляемых контроллеру. Не судите строго, это просто рабочий инструмент для исследований.

В результате, робот может стоять. При хорошо подобранном положении сервоприводов — стоять достаточно устойчиво. Выполнять различные действия руками — правда в этом случае уже нужно следить за равновесием и синхронно наклонять тело робота, удерживая от падения. Может подниматься из положения лежа «нечеловеческим образом», подтягивая ноги под себя. Ходить не может, так как не могу заставить стоять его на одной ноге. Видимо, есть просчеты в геометрии и распределении масс отдельных частей робота. Точную причину еще предстоит выяснить, пока есть только предположение, что масса ног существенно больше массы тела, поэтому при наклоне не удается удержать равновесие.

Трудности

Прежде всего выяснилось, что акрил для такого размера робота недостаточно прочен. При падении робот может себе что-нибудь отломить. Серьезных поломок пока не было, по большей степени из-за того, что пока удавалось его ловить, и сильных падений не было, но кое-что уже пришлось подклеивать. Кроме того, акрил не всегда обладает достаточной жесткостью, что приводит к небольшому изгибанию элементов под нагрузкой. В качестве эксперимента пробовал монолитный поликарбонат. Несмотря на то, что сломать его практически невозможно, его жесткость еще меньше, чем у акрила, не совсем ясно, можно ли его резать лазером (по крайней мере там, где мне резали акрил, резать поликарбонат отказались) и не нашел информации о способах его склейки.

Обнаружилась интересная особенность сервоприводов — небольшой люфт в шестеренках. Причем, люфт небольшой, но если на приводе рычаг и таких частей несколько, как, например, в ноге, конечный люфт получается достаточно серьезным и увеличивается под нагрузкой. Более сильный люфт оказался у серв HXT12K, он хорошо ощущается, если просто покачать качалку привода. У MG995 свободного люфта почти нет, но под нагрузкой все равно ощущается. Это хорошо проявляется, когда робот стоит, наклонившись чуть вперед или назад. Угол между этими наклонами и есть люфт сервоприводов ног.

Недостаточная мощность сервоприводов в коленях. Несмотря на то, что сервоприводы достаточно мощные — 10 кгс/см мощности коленных сервоприводов не хватает на подъем тела робота. То есть, он может присесть без проблем, а вот когда встает, приходится немного помогать. Сервоприводы MG995 и HXT12K в коленях не справляются с этой задачей. Попытка использовать более мощный сервопривод TGY-MG958 с его 15 гкс/см также не привела к нужному результату. При том, что увеличения мощности не обнаружилось, он еще и грелся под нагрузкой, как утюг, всего за несколько минут так, что рука не терпела. Прошлось от него отказаться. Приводы под нагрузкой потребляют серьезный ток — 1.5 — 2А, поэтому и используются два блока питания для правых и левых сервоприводов.

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

На вывод робота в заданное положение могут влиять, казалось бы, не очень существенные факторы, например, неровность пола или чуть-чуть другое положение ног. В некоторых случаях это не играет роли, а иногда из-за этого робот теряет равновесие.

В результате этого процесс обучения робота каким-то простым действиям, даже просто сохранять положения сервоприводов по шагам, может оказаться достаточно трудоемким, так как робот, прекрасно выполняя какую-то последовательность действий, вдруг перестает ее делать нормально из-за различных небольших внешних факторов. Например, такое поведение часто связано с падением напряжения на аккумуляторе, который используется для питания робота. И это несмотря на то, что используются специальные стабилизаторы напряжения.

По результатом исследований сделаны следующие выводы:

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

Особенно интересным представляется создание самообучающейся модели робота. Предположим, что в модель заложена основная кинематика робота и массы каждого элемента робота. В этом случае, перед выполнением определенного действия робот может грубо предсказать, приведет ли это действие к нарушению равновесия и что нужно сделать для того, чтобы это равновесие сохранить. Как пример, нужно вытянуть руки вперед, в этом случае цента масс сместится также вперед, что может привести к падению робота, но если при этом наклонить тело робота чуть назад, все будет в порядке. Однако, основываясь только на результатах расчета, не всегда можно получить нужный результат. Если ввести в этот расчет опыт выполнения различных действий самого робота, можно получить интересные результаты. Например, робот прогнозирует, как следует сохранить равновесие, если протянуть вперед руки. Затем это делает, и результат этого действия сохраняется в базе знаний робота. В самом простом варианте  сохраняется упал/не упал. В этом случае, можно уже научить робота избегать действий приводящих к падению. Улучшая обучение, можно анализировать больше состояний, не просто упал/не упал, а насколько нарушилось условия равновесия при этом действии. Возможно, не только в конечном результате, но и в процессе выполнения действия. Для этого можно действие разбить на временные интервалы и замерять условие равновесия в каждый момент времени. Затем, проанализировав результаты, робот может попытаться улучшить условия равновесия, выполняя это же действие, но чуть по-другому, снова получая результат и сравнивая его с предыдущим. Если удастся создать алгоритм такого типа, мы получим систему, которая будет сама учиться выполнять действия наиболее оптимальным образом. Естественно, в случае изменения каких-то частей робота, скорее всего, старый опыт, созданный по этой модели, окажется неприменим, но ведь робот может заново научиться. В этом случае наличие качественной обратной связи как критерия правильности выполняемого действия играет решающую роль, иначе, как можно научиться, если не знаешь, как оценить результат?

Добавить комментарий