Прыгающий робот "Z-hopper"

Разработчик проекта: Студент 5 курса Сергей Лончаков

Научный руководитель: Запуниди Сергей Александрович

В проекте разрабатывается робот-платформа, реализующая абсолютно новый для автономных роботов прыжковый принцип перемещения. Сама идея прыжкового перемещения не нова и известна даже детям по игрушке-прыгалке “палка Пого” (PogockFlybar). Однако, если для взрослого человека обычно не составляет труда ходить, бегать, прыгать или лазать, то развиваемые около 20 лет двуногие роботы только сейчас достигают скорости перемещения человека. Движение часто возможно только по ровной поверхности (см. лучшие мировые достижения PETMAN (Boston dynamics, USA)HRP series (AIST, Japan)Humanoid (Toyota, Japan)ASIMO (Honda, Japan)). Проблема в неустойчивости опоры на две ноги. Роботу требуется широкий комплекс датчиков и сложные алгоритмы стабилизации положения, чтобы постоянно вычислять устойчивое положение ног при ходьбе по неровной поверхности. Увеличение количества ног частично решает проблему устойчивости за счёт усложнения алгоритмов и снижения скорости перемещения. Колесная или гусеничная опора часто применяется, но опять же подходит для ровных дорог и часто даже бордюр становится непреодолимым препятствием для небольшого робота.

Прыжковый механизм перемещения нечувствителен к форме поверхности. Достаточно, чтобы поверхность была твердая, как асфальт или сухой грунт. Все препятствия ниже высоты прыжка, такие как забор, - легко преодолеваются. Заметим, что в США финансируется похожий проект Precision Urban Hopper - прыгающий робот-разведчик. Он перемещается в основном на колесах и выполняет одиночные прыжки для преодоления забора. То есть он вынужден восстанавливать стабилизацию после приземления. Зачем реализовывать два механизма перемещения, если достаточно одного?

История проекта Z-Hopper

Запуниди Сергей

Меня зовут Запуниди Сергей и я руковожу проектом Z-Hopper.

Всё началось с моего интереса к электронике и программированию в школе. Студентом и аспирантом МГУ я продолжал набирать опыт и к концу аспирантуры перешёл к преподаванию программирования в МГУ. С 2008 года я стал преподавателем курса “программирование 32х разрядных микроконтроллеров”, на котором развивались интересные научные или технические идеи, поступающие, в том числе, и от студентов.

2010 год

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

2011 год

 
 
 
 
Алексей Сизов
 
Артур Маннанов
 

В начале 2011 года я предложил 2 студентам, уже изучивших программирование микроконтроллеров, развивать этот проект. Это были Алексей Сизов и Артур Маннанов.

Вместе с ними мы разработали и изготовили электронную схему с микроконтроллером, датчиками, беспроводной связью и кучей разных других полезных мелочей. Мы успели провести тестирование основных узлов схемы, написали скелет прошивки, поискали пружины (нужные пружины не так просто купить), но по сути сделано еще ничего не было. В работе также поучаствовал Арсений Гаджикурбанов, который написал часть кода по опросу датчиков, а также объяснил почему часть датчиков выбрана неверно. В целом интенсивность работы была низкая.

Мы также пытались участвовать в конкурсе на сайте kulibin.org, но в таких конкурсах требуется четкая коммерциализация, а наша разработка ближе к военным или космическим технологиям. В России мы не нашли организации, финасирующей разработки военных роботов типа американской DARPA.

2012 год

 
 
 
 
Сергей Лончаков
 
Игорь Балан
 

В 2012 году к проекту подключились студенты, только проходящие обучение микроконтроллерам. Это были Сергей Лончаков и Игорь Балан.

У нас уже была готовая плата, которая требовала доработок, но у нас совсем не было механической основы. За февраль-май Игорь Балан собрал первую версию механической основы с подвижным соленоидом, моторами, сменной пружинной ногой, аккумуляторами. Эта система формально имела всё, что нужно, но не могла прыгать. Во-первых, моторам были нужны диски на ось, увеличивающие момент инерции роторов. Во-вторых, нога из пружины не может обеспечить большой ход без бокового выгибания. Тем не менее, у нас в руках было что-то цельное и автономное.

Первая версия прототипа робота

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

Осенью Сергей Лончаков продолжил работу над роботом, но с низким темпом и было мало что сделано. Стало понятно, что нам нужна другая пружинная нога, а для стабилизации нужны диски на оси моторов. Пришло время освоить изготовление деталей.

2013 год

Мне было понятно, что на чистом энтузиазме мы не успеем сделать высоко прыгающую систему первыми в мире, что было моей целью. Люди приходили и уходили, все интересовались проектом, но требовалось глубокое погружение. Ситуация значительно улучшилась, когда открылась программа по набору студентов в лабораторию инженерной физики для прохождения дипломной практики. С 2013 года на такую практику распределился один из самых активных разработчиков проекта Z-hopper - Сергей Лончаков, а я стал его научным руководителем. Сам по себе робот не может быть целью научной работы, но механизмы распрыгивания или стабилизации публикуются в сообществе IEEE и даже в Phys. Rev. Lett. Последняя публикация как раз от группы в США, которая сделала Precision Urban Hopper. Поэтому теперь мы зашли с научной стороны: анализ, вычисления и симуляции до реального изготовления. Работа пошла быстрее.

В первую очередь мы открыли для себя моделирование в среде Simulink. Почти пол года ушло на его изучение без каких-либо достижений. К концу мая группа студентов (Иван Максимов и Сергей Широбоков), проходивших тогда обучение программированию микроконтроллеров сделала симуляцию одномерной стабилизации ориентации за счёт вращения диском. Также были заказаны и изготовлены диски для моторов, которые студенты присоединили к моторам и пытались запустить стабилизацию в реальной системе. Мы с Сергеем Лончаковым побороли наводки от вращения моторов на имеющейся плате без переразводки. Можно сказать в пямом смысле доработали плату напильником. К июлю были изготовлены новые диски, которые обошлись сильно дешевле первого.

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

В результате получился вот такой робот:

В системе не хватало самих пружин для накопления кинетической энергии прыжка. Пружины были добавлены в сентябре и робот начал отпрыгивать.

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

Дальнейший рассказ об истории развития проекта пойдет от лица Лончакова Сергея.

Осенью прыгающий робот был показан на фестивале науки, где вызвал не малый интерес у посетителей выставки. Там же он привлек внимание съемочной группы с конкурса InnoStar. Нам предложили снять видеоролик и поучаствовать. Страница о нашем проекте на InnoStar

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

 
 
     

2014 год

В начале 2014 года началась работа с самой сложной частью робота. Для разработки и отладки алгоритмов управления была построена модель в виртуальном мире Simulink. Параметры модели (масса, моменты инерции, крутящий момент двигателей и размеры деталей) сделали как у собранного прототипа.

 
 
 
Принцип изменения наклона робота при падении (Simulink)
 
     

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

За весну была написана курсовая работа на тему «Разработка автономного робота с одной опорой и прыжковым принципом перемещения». К сожалению, к моменту защиты робот не был доведен до рабочего состояния.

Осень 2014 года началась с того, что мы решили проводить дальнейшие работы по разработке прыгающего робота в виртуальном мире Simulink. Во-первых, этот подход позволит моментально получить и протестировать любые по характеристикам моторы без ожидания доставки.  А во-вторых, можно заниматься алгоритмами управления наклона без сборки какого-либо железа, что неплохо ускоряет разработку. Параллельно я начал изучать основы теории управления, т.к. при чтении практически любой статьи ощущалась нехватка знаний. Процесс разработки прыгающего робота шел медленно, но в правильном направлении. 

Примерно в середине осени мы изменили количество двигателей. Теперь моторов 3 штуки и они образуют базис:

2015 год

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

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

Для определения ориентации в пространстве также используются кватернионы.

Для симуляции я создал 3d модель робота в SolidWorks. Для системы управления наклоном я взял BLDC моторы EC 45 flat 70W от Maxon Motor. У них в каталоге был большой выбор, поэтому подобрать что-нибудь более менее подходящее не составило труда:

Изготовление всех деталей можно было заказать на любом заводе, где делают лазерную резку и гибку. Также Solidworks дал мне массу, тензор инерции и другие необходимые данные для проведения правильной симуляции. Фото сборки из SolidWorks:

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

 

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

Лето 2015

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

Пересмотрев большое количество доступных моторов, было решено заказать для тестирования GM7008H:

 

После получения мотора, я измерил его крутящий момент и остальные не менее важные параметры. 

Данный мотор был выбран не случайно. К нему можно крепить маховик сразу винтами, без каких-то переходников ось – маховик, как это было в прошлой сборке робота. Меньше узлов, выше надежность. Данный мотор не имеет встроенных датчиков холла или энкодера, поэтому были выбраны дополнительно оптические энкодеры AEDR-8300K от Avago (двухканальные).

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

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

Устройство и система управления нашего робота не имела практически ничего общего с тем, что было описано в той работе, поэтому взять все готовое не получилось. Но по картинке можно легко сделать систему коррекции под нашего робота:

Осенью были заказаны детали на заводе. 

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

Эти контроллеры в основном служат для управления шаговыми моторами, но умеют крутить dc моторы и потенциально могут вращать bldc. За несколько вечеров я дописал прошивку для управления bldc моторами по энкодеру.

Плата управления роботом была сделана мною в Altium Designer и заказана:

Для управления роботом используется микроконтроллер stm32f415GT6. Для определения ориентации в пространстве - две mpu6050 (можно как устанавливать на плату, так и выводить в любое удобное место с помощью проводов).

 

 

После получения платы управления был собран робот:

После сборки робота возникла проблема – оптические энкодеры не хотят работать со штрихами, напечатанными на бумаге лазерным принтером. Данную проблему попытались решить за счет изготовления «платы» с дорожками, покрытыми иммерсионным золотом, но фирма изготовитель подвела. Они не выдержали требуемую толщину дорожек 0,17 мм, а сделали в 1.4 раза толще, хотя обещали сделать вплоть до 0,15мм. Из-за этого энкодеры не работают как надо. Слева вверху как должно быть, справа как получилось:

Не думаю, что мы успеем перезаказать диски для энкодеров, т.к. до защиты диплома практически не осталось времени. 

 


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

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

 
Колёсный(гусеничный)
 
Шагающий
 
 
 
 
 
Низкая проходимость. Требует ровных поверхностей
 
Преодоление ям и препятствий достаточно малой высоты
 
         
 
Летательный
 
Прыжковый
 
 
 
 
 

Высокий расход энергии. Ограничения на вес полезной нагрузки. Шум и создаваемый ветер при полёте

 
Преодоление препятствий многократно превосходящих высоту робота. Движение по неровным поверхностям
 
         

Динамическую модель прыгающего робота можно посмотреть тут.

Реализация проекта стала возможной благодаря недавнему прогрессу в области микромеханических датчиков ускорения и угловой скорости и их выходу на потребительский рынок. Электронной основой робот-платформы являются коммерчески доступные датчики и 32х разрядный микроконтроллер семейства ARM. Система ориентации робота и подкачки энергии прыжка выполнены на современных силовых драйверах, а беспроводное управление реализовано на стандартных цифровых интерфейсах: Bluetooth, ZigBee. Использования современных и коммерчески доступных элементов позволяет снизить стоимость разработки.

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

Основным достоинством проекта является использования впервые применяемого принципа перемещения, который займёт свою нишу в развивающимся рынке автономных роботов.

 

Конструкция прототипа состоит из блока распрыгивания, основной платы (микроконтроллера), блока стабилизации, сменного блока "Нога"

Презентацию по этому проекту можно скачать здесь