Исследователи из Колумбийского университета (Нью-Йорк, США) разработали алгоритм, позволяющий роботу-манипулятору построить собственную кинематическую модель, которая затем может использоваться для управления его движениями.
Кинематическая модель робота показывает показывает как робот двигается при работе его двигателей. Современные роботы-манипуляторы работают исходя из кинематической модели, которая в них уже реализована и запрограммирована изготовителем. Но, мы знаем, что, например, люди таких моделей не имеют и дети учатся контролировать свои движения руками и ногами, обучаясь понимать как управлять своим телом и планировать собственные действия. Роботам тоже было бы полезно иметь собственную вычислительную модель, позволяющую контролировать свои действия и планировать возможные будущие действия, не проверяя их в физической реальности.
Новое исследование демонстрирует возможный подход к реализации данной проблемы. В качестве информации о движении робота-манипулятора WidowX 200 Robot Arm, исследователи использовали визуальную информацию, которая поступала от пяти 3D-камер RealSense D435i RGB-D. Камеры располагались следующим образом: 4 вокруг робота и одна сверху. Камеры были предварительно откалиброваны. Их изображения глубины проецировались в облака точек, которые затем объединялись в одно общее облако точек (используя внешние параметры камеры). Результирующее облако точек манипулятора создавалось путём отсечения всего выходящего за определенную границу сцены.
Чтобы «понять» как двигается манипулятор в ответ на различные моторные команды — управляющая программа заставляла манипулятор принимать различные позы и изучала его движения.
Таким образом, сбор данных выглядел следующим образом: рука-манипулятор перемещалась случайным образом, что давало пару совместных значений и соответствующее им облако точек. Получение каждой пары данных требовало менее 1 секунды (при моделировании) и целых 8 секунд при реальном действии. Всего исследователи собрали 10000 точек данных (при моделировании с помощью PyBullet) и 7888 точек реальных данных. Далее данные были разделены на обучающий (90%), проверочный (5%) и тестовый (5%) наборы.
Необходимо отметить, что данные, полученные благодаря моделированию — были почти идеальными, благодаря отсутствию шумов на виртуальных изображениях камеры глубины и их точной калибровке. В реальных экспериментах, слияние облаков точек было очень зашумленным (из-за неточной информации о глубине, вызванной шумами датчика и калибровки камеры).
Полученные данные о командах и их результатах использовались для обучения управляющей модели, которая состояла их трёх отдельных нейронных сетей: координатной сети, кинематической сети и сети для объединения координатных и кинематических данных для получения окончательного результата.
Координатная сеть — однослойный MLP (multilayer perceptron — многослойный перцептрон). Кинематическая сеть — 4-слойная MLP. Выходы этих двух сетей объединяются и подаются на третью 4-слойную MLP, для получения результирующего значения. В качестве нелинейности в сети использовались синусоидальные функции активации. Обучение шло 2000 эпох с использованием оптимизатора Adam. Для реализации сети использовался фреймворк PyTorch и PyTorch Lightning. Для обучения использовалась видеокарта NVIDIA RTX 2080 Ti.
Для подачи на вход нейронной сети, входные координаты и входные суставные углы предварительно были нормализованы так, чтобы их среднее значение было 0, а диапазон был [-1,1].
Подобный подход по визуальному самомоделированию может быть крайне полезен в реальных робототехнических приложениях. Робот сможет контролировать изменение своих действий в результате повреждений своих частей и механизмов, что повысит его автономность и самостоятельность.
Статьи
Ссылки
- Full-Body Visual Self-Modeling of Robot Morphologies
- код и данные — https://github.com/BoyuanChen/visual-selfmodeling
- PyBullet
По теме