Инженеры создали фреймворк для обучения роботов парным танцам

Достаточно одного видео с танцорами

Американские инженеры разработали фреймворк CoDance, который позволяет научить человекоподобного робота танцевать в паре с человеком, используя для этого одно видео с двумя танцорами. После обучения в симуляторе андроид Unitree G1 станцевал, шагая вперед и назад вслед за партнером и держась с ним за обе руки. Подробности доступны на сайте проекта.

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

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

Инженеры под руководством Чэня Боюаня (Boyuan Chen) из Университета Дьюка разработали фреймворк CoDance, с помощью которого по одному короткому видео парных танцев можно обучить робота двигаться, держась за руки с человеком. Разработчики взяли видеоролик парного танца двух человек длительностью чуть менее десяти секунд, воссоздали по нему трехмерные позы обоих танцоров и перенесли движения на кинематику человекоподобного робота Unitree G1. При этом движения одного танцора стали эталоном, который должен воспроизводить робот, а движения второго использовались в качестве виртуального партнера. Для того, чтобы робот научился двигаться вперед и назад вслед за человеком, инженеры дополнительно прокрутили исходное видео задом наперед.

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

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

Для того, чтобы ноги андроида не были слишком жестко привязаны к движениям из записи и могли подстраиваться под реального партнера, но при этом походка все же оставалась похожей на движения танцора, использовалась вторая нейросеть. Она оценивала, похожи ли движения ног робота на исходную запись, и он получал награду, если они казались слабо отличимыми. Кроме того, во время обучения записи склеивались друг с другом, и робот учился переходить от движения вперед к движению назад. В симуляции с учетом воздействия внешних сил руки робота смещались примерно на 80 процентов от расчетного значения, тогда как у робота, которого учили просто повторять движения из видео без учета сил, — лишь примерно на 20 процентов.

Обученную нейросетевую систему управления затем перенесли на настоящего робота Unitree G1. Информацию о положении партнера роботу сообщала внешняя система захвата движения, камеры которой отслеживали маркеры на тазу и коленях второго танцора. В испытаниях робот выполнил с человеком три успешных танца, держась за обе руки, и ни разу не упал. В одном из них пара двигалась только в одну сторону около 13 секунд, а в двух других — почти по 40 секунд, несколько раз меняя направление движения. При этом робот либо шел вперед за человеком, либо отступал назад, синхронизируя свои шаги с партнером. Большую часть времени робот держался на расстоянии около полуметра от партнера с отклонением не более 10 сантиметров. Как отмечают авторы, пока робот умеет исполнять только один танец, привязан к движениям из исходной записи и не может, например, кружиться или менять положение относительно партнера. В дальнейшем они планируют научить его поворотам и другим танцевальным движениям.

Человекоподобных роботов обучают работать в паре с другими такими же роботами. Например, недавно робототехнический стартап Figure показал, как два андроида F.03 наводят порядок в спальне.