вторник, 22 декабря 2015 г.

Status update

I want to share my preliminary results in implementing custom 3D physics-based simulator in Java with JMonkeyEngine framework. The simulator now can:
- read STL files into a mesh
- parse SDF (Gazebosim) robot description and display it
- added collision primitives

Todo : add joints, remote control protocol etc
Sources are at Github:  https://github.com/kantengri/gazebo-java-control



 

четверг, 22 октября 2015 г.

Онлайн курсы по робототехнике

Хочу порекомендовать курсы по робототехнике, которые собираюсь прослушать :

  1. Управление мобильными роботами  - начальный курс по теории управления, навигации
  2. Underactuated Robotics 
  3. Applied Artificial Intelligence
Ещё было бы хорошо найти вот эту  диссертацию.

среда, 16 сентября 2015 г.

Первые успехи


На этой неделе мне почти удалось правильно обработать поток данных о положении от симулятора.
Я решил полностью отказаться от ROS по нескольким причинам:
  • ROS работает только на Linux.
  • ROS требует запуска мастер-ноды, а с учетом времени на запуск симулятора всё вместе запускается довольно долго.
  • ROS не поддерживает Java.
  • ROS добавляет задержку на обработку сообщения, требует дополнительных вычислительных мощностей.
  • В рамках текущей задачи (разработка контроллера для бипеда) ROS - лишняя зависимость.

Также было решено уйти от С++ и разрабатывать ПО на Java :
В C++ нет :
  • встроенного управления памятью, что усложняет архитектуру ПО
  • нет системы импорта модулей, что приводит к сложностям в сборке
  • длительная компиляция
  • для Windows только одна нормальная IDE - Visual Studio
  • отсутвие поддержки рефакторинга для C++ в Visual Studio
  • зависимость от платформы, зависимость библиотек от платформы
  • и так далее

Для связи с симулятором Gazebo нашел небольшую библиотеку JavaGazebo из состава allwpilib.

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

Признаю, разрабатываьть всё с нуля, создавать велосипеды не лучшее решение, но так интересней.
В ближайших планах :
  1. реализовать обратное обновление состояния от модели в симулятор (моменты сил в сочленениях)
  2. затем наконец приступить к разработке собственно контроллера управления движением


Исходники тут

четверг, 3 сентября 2015 г.

Предлагаю перевод части статьи про SIMBICON:



SIMBICON : Простой алгоритм управления двуногим роботом

KangKang Yin
Kevin Loken
Michiel van de Panne
Университет Британской Колумбии

Рисунок 1. Физически достоверная симуляция персонажа в реальном времени с использованием нашего ПО. (а) Один контроллер для плоскостного двуногого реагирует на непредвиденные изменения местности. (b) Контроллер походки, воссозданный на основе данных захвата движений, реагирует одиночный диагональный толчок в туловище с силой 350 Н в течении 0,2с.

Резюме

Физически достоверная симуляция и управление движением двуногого персонажа сложна потому что бипеды являются неустойчивыми, не доопределёнными (underactuated) динамическими системами больших размерностей. Мы разрабатываем простую стратегию управления, которая может быть использована для генерации большого разнообразия походок и стилей в реальном времени, включая хождение в любом направлении (вперед, назад, вбок, разворот), бег, движение перескоком, прыжки.  Наши контроллеры могут быть сконфигурированы малым числом параметров, или воссозданы на основе данных захвата движения. Эти контроллеры затем могут быть применены к физически достоверной симуляции 2х и 3х-мерных моделей персонажей. Их робастность подтверждается устойчивостью к толчкам в любых направлениях, непредвиденным ступеням и уклонам, непредвиденным изменениям кинематических и динамических параметров. Продемонстрированы непосредственные переключения между контроллерами, а также параметрическое управление направлением движения и скоростью. Применено обучение с обратным распространением ошибки для построения моделей с упреждающим управлением тягой, что позволило использовать управление с низким уровнем усиления, что в свою очередь приближает нас к множеству натуральных движений, и делает анимацию более плавной.

1. Вступление

Передвижение является неотъемлемой частью многих движений, как в реальном мире, так и анимированных. Анимированное движение чаще всего создается напрямую аниматорами по ключевым кадрам, или посредством захвата и последующей обработки данных движения человека. Однако эти методы не могут быть масштабированы на очень большое разнообразие возможных движений, которые могут осуществляться в реалистичном окружении. Для примера, существует бесконечное число способов, которыми два персонажа могут столкнуться между собой, или способов, которыми персонаж может передвигаться по ограниченной непредсказуемой местности. Алгоритмические подходы имеют потенциал быть более общим решением, способными генерировать семейства движений, а не отдельные движения.
                Подмножество всех алгоритмических подходов учитывает физику процессов. Оно включает в себя методы оптимизации траектории, или наоборот, разработку контроллеров для управления симуляции с прямой кинематикой. Подход с использованием контроллеров имеет преимущество в том, что они могут синтезировать движение с управляемой скоростью, а также использовать стратегии обратной связи, которые могут постоянно адаптироваться к изменяющемуся миру по мере необходимости.
                Управление походкой, и другими движениями бипеда всегда были долгим предметом исследований для сообществ в робототехнике и компьютерной графике. Это сложная проблема по многим причинам. Ходячие бипеды неустойчивы и не доопределены, и их управление требует много-размерных состояний и много-размерных действий. Передвижение включает в себя ограничения соединений, прикладываемых сил, ограничения точек контакта и силы реакции контакта. Задача передвижения может иметь ряд противоречащих целей, включая робастность и потребление энергии. В заключение, не смотря на то что подходы, основанные на использовании данных захвата движений очень успешно применялись для генерации кинематических моделей движения, остается неясным, могут ли данные подходы быть успешно применены для создания стратегий управления в динамических симуляциях.
                По теме двуногого хождения имеется огромное множество литературы, большинство из которой можно найти в сообществах робототехники, управления и биомеханики. Устоявшиеся подходы к управлению движением включают:
а) использование пассивных моделей хождения для создания активно управляемых моделей;
б) использование алгоритма управления ZMP (Точка нулевого момента);
в) использование модели с фиксированной архитектурой системы управления и применение методов поиска параметров для нахождения набора параметров, которые обеспечивают нужные стили походки;
г) разработка систем обратной связи на основе знаний о балансе и движении.
Наша архитектура основана на последнем из этих подходов.

1.1. Обзор архитектуры

Мы предоставляем простую библиотеку для управления бипедами. Во первых здесь используется простая конечная машина состояний (FSM) или Граф Управления Позами. Каждое состояние состоит из позы персонажа, передставляющей список всех углов между частями тела относительно родительских частей для всех сочленений. Все индивидуальные сочленения пытаются подогнать текущий угол к целевому , используя пропорционально-дифференцирующие (ПД-)регуляторы. Переходы между состояниями происходят по истечении фиксированного промежутка времени, или, для других состояний, после того, как новый контакт ноги с поверхностью был обнаружен. Походка может быть смоделирована с использованием всего лишь 4 состояний, а бег - 2 состояний.
                Только что описанный Граф Управления Позами не использует понятия баланса и, следовательно, не может генерировать робастное перемещение. Однако небольшой набор изменений к описанной схеме позволяет этого достичь. Во-первых, мы добавляем условие, что туловище, ноги и бедра должны иметь целевые углы, выраженные в мировых координатах, в отличие от других частей тела, имеющих целевые углы их сочленений, выраженные относительно их родительских частей. Чтобы сделать результирующие усилия физически реализуемыми без использования внешних сил, усилие "ноги-бедро" (stance-hip) определено как свободная переменная. Во-вторых, добавлена обратная связь для непрерывной корректировки целевого угла качающихся бедер (swing hip) как линейная функция от позиции центра масс и скорости. Это позволяет создать робастное управление балансом перемещением будущей точки поддержки.
                Мы можем подражать стилю на основе данных захвата движения, заменив индивидуальные управляющие состояния на трек желаемого поведения, используя тот же набор записанных треков в локальных и мировых координатах. В то время как такая технология требует использования обратных связей с большим уровнем усиления, приводящих к обрывочному и реактивному движениям, мы можем применить обучение с обратным распространением ошибки чтобы создать систему управления, которая будет в большей степени полагаться на предсказуемые моменты сил в прямой кинематике. В результате контроллер управления движением будет использовать низкий коэффициент усиления в петле обратной связи, и будет генерировать движение со значительно меньшими ненатуральными колебаниями из-за предупреждающего эффекта прогнозируемых моментов сил.
                Получившиеся контроллеры могут быть применены к 2х- и 3х-мерными моделям бипедов с человеческими пропорциями и распределением масс чтобы сгенерировать множество стилей передвижения используя физически достоверную симуляцию с использованием прямой кинематики. Для генерации движения используются только физически допустимые внутренние усилия, поэтому такой подход может быть распространен и на человекообразных роботов. Отдельные контроллеры робастны к сильным толчкам и значительным изменениям поверхности. Контроллеры могут быть интерполированы и параметризованны. Непосредственная замена контроллеров также возможна.

1.2. Новизна разработки

Новизна разработки заключается в следующем. Во-первых, мы собрали воедино и создали на основе предыдущих подходов новый простой подход к управлению балансом во время движения. Мы показали, что эта разработка может быть использована для создания контроллеров для большого разнообразия стилей походок 2D и 3D моделей бипедов.  По нашим сведениям, мы первые кто продемонстрировал большое разнообразие целостных, физически достоверных симуляций возможностей бипедов, включая множество стилей походки, восстановление после толчка с любого из направлений во время ходьбы, бега, стилизованного бега и перепрыгивания.  Во-вторых, мы разработали и продемонстрировали основанную на контроллерах имитацию походок, сгенерированных на основе данных захвата движения, которая обладает робастной балансировкой. В-третьих, мы продемонстрировали что обучение с обратным распространением может быть применено для создания предупреждающего управления движением с низкими коэффициентами обратной связи (low-gain). Данный простой Фреймворк открывает путь к разработке значительно более широкого разнообразия способностей физически достоверных анимированных персонажей и, возможно, двуногих роботов.

2. Обзор научных работ

Разнообразие литературы по управлению хождением предполагает обширный обзор. Наш обзор предназначен для ознакомления с главными категориями техник, а также с углубленным обзором работ, наиболее похожих на нашу.
Основополагающая работа Raibert, Hodgins, и соавторов [Raibert 1986; Raibert and Hodgins 1991; Hodgins 1991; Hodgins et al. 1995] содержит ключевые знания для создания робастных прыжковых и беговых походок. В центре данного исследования находится 3х-направленная декомпозиция управления высотой прыжка (hopping height), управления подачей туловища (torso pitch), контроль скорости прыжка (под прыжком здесь подразумевается движение в момент перехода с одной ноги на другую). Позиционирование свободной ноги реализует простой механизм управления балансом от шага к шагу. Эти алгоритмы были применены для управления бегом двуногих роботов [Raibert 1986; Raibert and Hodgins 1991; Hodgins 1991], хождением двуногих роботов [Hodgins 1991], и бегом человекоподобных персонажей [Hodgins et al. 1995; Hodgins and Pollard 1997]. Мы не знакомы с демонстрацией алгоритма, который был использован для управления хождением виртуальных людей. Также заметим, что управление позиционированием свободной ноги также было использовано в других алгоритмах управления походкой, таких как [Miura and Shimoyama 1984; Laszlo et al. 1996; Kuo 1999].
Наша система управления включает в себя некоторые идеи из предыдущих работ, но не похожа ни на одну из них. Наша работа отличается в нескольких концепциях от способа управления перескоками (hopping) как у Raibert. Механизм управления балансом, который мы предлагаем, обеспечивает постоянную адаптацию в течение цикла передвижения и использует как положение, так и скорость центра масс. Эта информация позволяет определить текущую фазу шага, и, следовательно, является боле информативной, чем просто скорость. [Hodgins 1991; Raibert and Hodgins 1991] используют только скорость для управления перескоками, измеряемую один раз за перескок, и использует фиксированную длину шага для хождения. Заметим, что работа [Miura and Shimoyama 1984] является примером применения стратегии управления перевернутого маятника, которая использует постоянную обратную связь от угла тела перевернутого маятника и угловой скорости. Наша система проще во многих отношениях, и как будет продемонстрировано, способна на генерацию значительно большего разнообразия походок.
Широко известный класс управляющих алгоритмов может быть получен путем вычисления траекторий, о которых заранее известно, что они физически возможны и, следовательно, удовлетворяют ограничениям Точки Нулевого Момента (ZMP) [Vukobratovic and Juricic 1969]. Небольшие помехи движению могут быть учтены динамической подстройкой ZMP во время движения. Этот подход, как было продемонстрировано, хорошо подходит для управления движением реальных роботов [Honda Motor Co.  2006;  Kimet al. 2006; Kaneko et al. 2002]. Конечные траектории могут быть воссозданы через процесс оптимизации, часто примененный совместно с данными захвата движения [Dasgupta and Nakamura 1999; Popovic and Witkin 1999]. Для использования ZMP также необходим контроль позиционированием свободной ноги, если предполагается работа в условиях сильных возмущений.
Управление также может быть реализовано               определением параметризованной политики управления и, затем, поиском значение параметров, которые порождают подходящее управляющее поведение. Прямой поиск в высоко-размерном пространстве параметров известен как поиск политики (policy search), и он был с некоторым успехом применен в работах [Taga et al. 1991; van de Panne and Fiume 1993; Auslander et al. 1995; van de Panne et al. 1994; Tedrake et al. 2004; Sharon and van de Panne 2005]. К настоящему моменту, эти техники не смогли продемонстрировать масштабируемость и робастность , необходимые чтобы сделать их успешными , широко применяемыми техниками для анимации и робототехники.
Обучение с подкреплением (RL) обещает в долгосрочной перспективе быть способным к заучиванию стратегий управления прямым способом (principled way). Оно было применено в нескольких случаях для управления хождением [Tedrake et al. 2004; Nakanishi et al. 2003;  Morimoto et al. 2004;  Smith 1998]. Высокая размерность пространств состояний, возникающих при правление передвижением, остается проблематичным, также, как и необходимость в разработке подходящей функции вознаграждения. Эти подходы не обладают той компактностью и прозрачностью, которая бы позволила настраивать параметры аниматорам для подгона результатов. Множество стратегий управления оценивают текущее состояние только один раз за шаг, когда вычисляют сигнал управления. Работы в этой области обычно демонстрируются на упрощенных моделях, а не на гуманоидах, за видным исключением [Smith 1998].
В некоторых стратегиях отказываются от физической достоверности для достижения желаемых правдоподобных движений. Один из вариантов - позволить добавить внешние силы [Wrotek et al. 2006]; другой - смешивать кинематические и динамические движения [Zordan et al. 2005]. Другие коммерческие системы используют недокументированные стратегии [NaturalMotion 2006]. SIMBICON генерирует балансированное движение, используя предсказание динамики (forward dynamics simulation) и таким образом избегает сложностей , которые присутствуют в стратегиях со смешанной кинематикой и динамикой.
Объединение ограниченного набора аккуратно воссозданных стратегий управления показано в работе [Wooten 1998; Faloutsos et al. 2001]. Интересна недавняя работа [Sok et al. 2007], во многом преследующая наши цели, и использует процессы оптимизации для создания контроллеров для плоских управляемых персонажей (planar articulated characters), которые способны имитировать данные захвата движений.

3. Стратегия управления балансом

Стратегия управления может быть в терминах трех элементов: конечный автомат (FSM), управление туловищем и поворотом бедер (swing-hip control), обратная связь по балансу. Каждый из этих элементов будет описан более детально ниже.

3.1. Конечный автомат

Наши контроллеры основаны на конечных автоматах, где каждое состояние имеет свою собственную конечную позу для внутренних углов сопряжений, как показано на рис. 2.
Рис. 2. Конечный автомат для хождения.
Для симметричных походок пары состояний ЛЕВО-ПРАВО будут симметричны, т.е. состояния 0 и 2, 1 и 3. Переходы между состояниями происходят по прошествии времени, например, переход 0->1, или после контакта стопы с поверхностью, 1 -> 2. Если контакт стопы с поверхностью произошел раньше, чем переход на состояние для ухода стопы, то контроллер просто пропускает это состояние. В любом из данных состояний, к сочленениям прикладываются усилия, вычисленные на основе пропорционально-дифференциального управления,
для приведения сочленения к установленному для него конечному углу. Эти позы представляют собой желаемый набор углов для сочленений, и в действительности не достигаются полностью. Для примера, находясь в состоянии 1 (рис. 2), поза бипеда на практике имеет свободную ногу, выставленную вперед. Однако, его конечное состояние подразумевает свободную ногу, выставленную назад, и, следовательно, суммарным эффектом будет движение свободной ноги назад и вниз, заставляя ее коснуться поверхности.

3.2. Управление туловищем и поворотом бедер

Неподвижное бедро и свободное бедро контролируются раздельно, как показано на рис. 3а.
Рисунок 3. Элементы стратегии управления балансом. а) Взаимодействие между туловищем, неподвижным бедром и свободным бедром. б) Положение и скорость центра масс.

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

3.3. Обратная связь по балансу

Последний компонент стратегии управления - применение обратной связи по балансу для вычисления положения установки свободной ноги. Мы применяем следующее правило обратной связи :
к свободному бедру, где - желаемый угол, используемый для ПД-управления в любой момент времени, - фиксированный желаемый угол по умолчанию, записанный в FSM, d - горизонтальное расстояние от неподвижной колени к центру масс, (рис. 3б) и v - скорость центра масс. Средняя точка бедер может быть использована как простой и эффективный заменитель для вычисления позиции и скорости центра масс. Мы используем это упрощение как для 2D, так и в 3D. Параметр усиления в петле обратной связи  важен для обеспечения баланса в моменты низкоскоростных походок или шагания на месте. Рассмотрим ситуацию для шагания на месте (желаемая скорость - нулевая) с текущей скоростью v = 0, и двумя возможными позициями центра масс =+10 см, = -10 см. В первом случае есть необходимость как можно быстрее сделать шаг вперед, а во втором случае - назад, чтобы восстановить баланс. Пара (d, v) содержит полную информацию о текущей позиции в цикле походки, т.е. текущую фазу, в то время как одна только v содержит эту информацию с без учета текущей ошибки скорости.
Чтобы применить данную схему к 3D, стратегия управления применяется на сагиттальной и коронарной плоскостях. Обратная связь по балансу в корональной плоскости использует аналогичные измерения (d,v) чтобы вносить изменения в латеральное позиционирование свободной ноги, используя свободное бедро.
Данная форма обратной связи по балансу может быть расширена на общий случай многих сочленений используя формулу
        (1)
где F - матрица размерности n*2 с коэффициентами обратной связи для желаемых сочленений. Мы используем эту более обобщенную формулу , чтобы добавить обратную связь по углу неподвижной колени, для неподвижных поз, к примеру.

вторник, 1 сентября 2015 г.

Симулятор роботов Gazebosim теперь можно запустить под Windows ! Версия 6 позволяет собрать Win32 версию из исходных кодов. А к 7 версии, которая выйдет в январе 2016, обещают сделать установщик. Пока же предлагается собрать самостоятельно. Здесь есть инструкция как это сделать.
Загрузить можно здесь.