Привет, Хабр!
Недавно SantrY опубликовал статью Как это устроено: робот Spot от Boston Dynamics. Автор замечает, что устройство весьма успешного алгоритма поддержания равновесия и передвижения по пересеченной местности компания хранит в секрете.
К счастью, инженеры Boston Dynamics не единственная команда, занимающаяся разработкой ходячих роботов такого типа. Успехов в создании четвероногих роботов добились и инженеры из Лаборатории систем робототехники (Robotic systems lab) Швейцарской высшей технической школы Цюриха (ETH Zurich).
![](https://habrastorage.org/r/w780q1/webt/4-/xf/ak/4-xfakdtern8cmfnq_w0qpx9tdy.jpeg)
Новейшая модель робота ANYmal C — результат работы инженеров из Швейцарии, которую можно заполучить у компании ANYbotics
Примечание. Эта статья написана на основе, но не является переводом, работы Péter Fankhauser.
Диссертация.
Основной «рабочей лошадкой» инженеров из Цюриха выступает четвероногий робот ANYmal С и его прямые предки. При первом же взгляде на него сразу видны сходства с роботом Spot. Это неудивительно, ведь они созданы для решения одних и тех же задач.
Эти роботы предназначены для работы в промышленности. Например, проверка соответствия построенного здания документации и построение цифровой копии здания в строительстве, или мониторинг работы оборудования в опасных и неблагоприятных условиях, в шахтах и электростанциях.
Для работы в таких условиях робот должен уметь преодолевать различные препятствия, ступеньки, бордюры, мусор, узкие проходы, стены, колонны, ямы, сохранять баланс с учетом ограничений в подвижных узлах и в конструкции самого робота. Также для выполнения таких работ желательна автономность, хотя бы возможность повторять ранее записанный маршрут.
Для того, чтобы четвероногий робот мог перемещаться по сложной местности, он должен быть способен:
Информацию об окружении можно получить различными способами. Как правило используются датчики измерения расстояния, установленные в передней части робота. Принципы работы таких датчиков различны: могут быть использованы лидары, стереокамеры, камеры, работающие по принципу Time-of-Flight, или камеры со структурированным освещением.
Датчикам предъявляются требования по угловым полям зрения в вертикальной и горизонтальной плоскостях, минимальное и максимальное измеримое расстояние, разрешающая способность, высокая скорость определения расстояния, а также возможность работы при фоновом, зачастую солнечном, освещении.
![](https://habrastorage.org/r/w1560/webt/if/1w/4k/if1w4kpo0i4fdchoihylalaqvnw.png)
Схема работы датчиков расстояния
Погрешность измерения расстояния. При определении расстояния неизбежно возникают ошибки. Выделяют два типа шумов, вызывающих погрешность при измерении расстояния. Осевой шум – шум вдоль оси измерения расстояния и латеральный шум – в плоскости перпендикулярной оси. И осевой и латеральный шум усиливаются при измерении расстояния до более удаленных объектов. Порядок шумов можно оценить по его средне-квадратичному отклонению.
Так для камеры Microsoft Kinect v2 (работает по принципу ToF) осевой шум на удалении 1 м составляет 2 см, латеральный шум – 5 мм. Из-за осевого шума возникают ошибки при определении положения объектов, из-за латерального — при определении границ объектов.
Разрешающая способность датчиков. Линейная разрешающая способность (чаще используется плотность – количество измеряемых точек в квадрате размера 1 см на 1 см) также падает с ростом расстояния до объекта. Создатели ANYmal выбрали подход с частым и быстрым измерением расстояния, но с возможной потерей разрешающей способности. Задав желаемый шаг дискретизации карты местности во всем поле зрения датчика, можно определить оптимальную разрешающую способность датчика. При оптимальной разрешающей способности датчика расстояние до каждой клетки будет измерено хотя бы один раз за заданный шаг времени. Это позволяет определять местность перед роботом с малой задержкой по времени, но достаточно точно для движения робота.
Например, используя стереокамеру Intel RealSense ZR300 с номинальным разрешением 480 на 360 пикселей, полем зрения 59˚ на 40˚, частотой регистрации карты расстояний 60 Гц (17 мс на один кадр), установленный на ANYmal высотой 83 см под углом 45˚ к поверхности земли, позволит получить карту высот местности с шагом 1 см на 1 см при разрешающей способности 312 на 234 пикселя. Оптимизация разрешающей способности датчика также благоприятно сказывается на времени обработки полученных данных.
Для перемещения робот должен создать для себя в режиме реального времени карту высот местности вокруг себя. В роботе ANYmal используется подход с построением относительной, а не глобальной карты.
При глобальном подходе карта строится относительно некой мировой системы координат. Текущее положение робота на этой карте вычисляется на основе проприоцепции. Величина линейного перемещения от начального определяется на основе количества пройденных шагов. Недостатком такого подхода является накопление ошибки с каждым перемещением робота. После достаточно долгой работы реальное положение робота будет сильно отличатся от того, где робот считает он находится. Робот не сможет нормально функционировать, т.к. он будет совершать действия, не соответствующие реальным препятствиям перед ним.
При относительном подходе каждый раз строится локальная карта местности вокруг робота. Недостатком такого подхода является потеря точности глобального расположения начальной и конечной точек.
![](https://habrastorage.org/r/w1560/webt/c2/ic/lq/c2iclqke-qltue7j3cyq90m8qzs.png)
Схемы глобального (вверху) и относительного (внизу) подходов к построению карт высот
Последовательность работы алгоритма построения карты высот:
![](https://habrastorage.org/r/w1560/webt/_p/yp/7o/_pyp7okemfn7b9qpcahvkfwbnx4.png)
Схема работы алгоритма построения карты высот
Результат этих шагов – карта высот местности относительно робота в реальном времени.
![](https://habrastorage.org/r/w1560/webt/ai/mo/7g/aimo7gygkuury3y45xia8sv_swk.png)
Пример карты высот для препятствия
При необходимости дальнейших трудозатратных вычислений, например, проверка столкновений, запускается процесс слияния карты. При этом определяется верхняя и нижняя границы значения высоты каждой клетки. Реальная высота клетки заведомо лежит в интервале, заданном этими границами.
Движение робота можно разбить на 3 уровня абстракции:
![](https://habrastorage.org/r/w1560/webt/qq/ai/m2/qqaim2baynuitbekrix8ia2z9ks.png)
Схема работы системы управления ногами
Средний уровень выступает посредником между высоким и низким уровнями абстракции. Для облегчения разработки роботов был разработан Free Gait API.
Команды высокого уровня могут быть созданы с помощью скрипта, сигнала с пульта управления или с планировщика движения.
На низком уровне команды на поворот передаются на двигатели в узлах ног. С помощью датчиков определяется текущее положение тела и подвижных частей робота, которые передаются обратно на средний уровень.
В Free Gait API поведение высокого уровня преобразуется в команды. Команда представляет собой набор последовательных шагов. В каждом шаге есть разделение на движение ноги и движение тела робота. В шаге задается конечная цель для положения одной из ног в декартовых координатах или в координатах углов поворота суставов, траектория движения ноги (последовательность промежуточных целей), а также цель и траектория движения тела робота (его центра масс) в декартовых координатах в пространстве.
При такой реализации робот всегда стоит на 3-х ногах и может автоматически поддерживать равновесие, сохраняя положение центра масс внутри опорного треугольника.
С помощью последовательности команд можно создавать шаблоны движений, например, шаблоны перешагивания через препятствие, подъема по ступеньке, нажатия на кнопку, прыжков и т.д. Шаблоны могут активироваться если местность перед роботом совпадает с каким-либо заданным типом препятствия или если в поле зрения попала метка AprilTag.
Важным в движении робота является определения наличия контакта ноги с поверхностью, чтобы в дальнейшем на неё можно было надежно опереться. Из-за погрешностей работы датчиков позы робота и определения карты высот местности контакт ноги в реальности может не произойти как ему положено, в момент окончания шага. В API присутствуют шаблоны действий для сохранения равновесия робота, которые активируются в зависимости от типа ошибки – раннего или позднего контакта.
В конечном итоге системы построения карты местности и управления ногами объединяются для реализации полноценного автономного перемещения робота по пересеченной местности.
Процесс можно разбить на несколько этапов.
![](https://habrastorage.org/r/w780q1/webt/xu/t1/wh/xut1whzsqim3pzkhdyzd49k-qbu.jpeg)
Схема планирования движения
Получение карты высот местности вокруг робота. При этом необходимо учитывать ошибки при измерении, указывая для высоты каждой клетки местности доверительный интервал. Карта высот имеет только геометрическую информацию, для планирования не учитывается упругость поверхности. Это частично компенсируется алгоритмом постановки ноги в случае промаха с контактом. Также на этом этапе создается карта расстояний до препятствий с целью проверки на столкновения.
Оценка пригодности участка местности для упора в него ногой. Для робота ANYmal участки проверяются только на опасность потери равновесия роботом. Остальные участки считаются пригодными. Численная оценка пригодности осуществляется на основе вычисления угла наклона, кривизны, шероховатости и неопределенности в высоте поверхности.
Планирование шагов. На этом этапе формируется последовательность позиций робота между начальной и конечной точками. На каждой позиции робот виртуально занимает заданную базовую позу. Один шаг ногой – это перемещение одной конечности на соответствующую виртуальную позицию. После каждого шага последовательность шагов перепланируется.
Оптимизация упора ногой. На этом этапе для каждого шага ведется поиск самой безопасной позиции для упора ногой в окрестности рассчитанной виртуальной точки упора. Участки окрестности проверяются как на пригодность с точки зрения равновесия и безопасности, так и на кинематическую достижимость. Проверка кинематики осуществляется при оптимизации позы робота. Критериями для оптимального положения и ориентации тела робота являются стабильность и достижимость заданного положения ноги. Задача этой оптимизации в ANYmal решается с помощью последовательного квадратичного программирования (Sequential Quadratic Programming, SQP), бортовой компьютер находит оптимальное положение ноги за 0,5-3 мс.
Проверка столкновения при движении ноги. На этом этапе находится такая траектория движения ноги от начальной к конечной точкам, при которой нога не столкнется с препятствием или самим роботом. Здесь решается задача минимизации длины сплайна траектории с учетом возможного столкновения от полученной ранее карты расстояний до препятствий. Также учитывается и доверительный интервал для высот участков местности.
Если все этапы успешно пройдены, робот делает шаг и начинается процесс вычисления следующего шага.
Лучше всего успех в разработке ходячих роботов продемонстрирует видео.
Недавно SantrY опубликовал статью Как это устроено: робот Spot от Boston Dynamics. Автор замечает, что устройство весьма успешного алгоритма поддержания равновесия и передвижения по пересеченной местности компания хранит в секрете.
К счастью, инженеры Boston Dynamics не единственная команда, занимающаяся разработкой ходячих роботов такого типа. Успехов в создании четвероногих роботов добились и инженеры из Лаборатории систем робототехники (Robotic systems lab) Швейцарской высшей технической школы Цюриха (ETH Zurich).
![](https://habrastorage.org/webt/4-/xf/ak/4-xfakdtern8cmfnq_w0qpx9tdy.jpeg)
Новейшая модель робота ANYmal C — результат работы инженеров из Швейцарии, которую можно заполучить у компании ANYbotics
Примечание. Эта статья написана на основе, но не является переводом, работы Péter Fankhauser.
Диссертация.
Видео с защитой диссертации
Робот ANYmal
Основной «рабочей лошадкой» инженеров из Цюриха выступает четвероногий робот ANYmal С и его прямые предки. При первом же взгляде на него сразу видны сходства с роботом Spot. Это неудивительно, ведь они созданы для решения одних и тех же задач.
Эти роботы предназначены для работы в промышленности. Например, проверка соответствия построенного здания документации и построение цифровой копии здания в строительстве, или мониторинг работы оборудования в опасных и неблагоприятных условиях, в шахтах и электростанциях.
Для работы в таких условиях робот должен уметь преодолевать различные препятствия, ступеньки, бордюры, мусор, узкие проходы, стены, колонны, ямы, сохранять баланс с учетом ограничений в подвижных узлах и в конструкции самого робота. Также для выполнения таких работ желательна автономность, хотя бы возможность повторять ранее записанный маршрут.
Для того, чтобы четвероногий робот мог перемещаться по сложной местности, он должен быть способен:
- получать информацию о местности перед собой с помощью датчиков,
- строить модель местности и карту высот,
- управлять двигателями ног для выполнения нужного действия,
- планировать свое перемещение по местности.
Датчики для получения информации о местности
Информацию об окружении можно получить различными способами. Как правило используются датчики измерения расстояния, установленные в передней части робота. Принципы работы таких датчиков различны: могут быть использованы лидары, стереокамеры, камеры, работающие по принципу Time-of-Flight, или камеры со структурированным освещением.
Датчикам предъявляются требования по угловым полям зрения в вертикальной и горизонтальной плоскостях, минимальное и максимальное измеримое расстояние, разрешающая способность, высокая скорость определения расстояния, а также возможность работы при фоновом, зачастую солнечном, освещении.
![](https://habrastorage.org/webt/if/1w/4k/if1w4kpo0i4fdchoihylalaqvnw.png)
Схема работы датчиков расстояния
Погрешность измерения расстояния. При определении расстояния неизбежно возникают ошибки. Выделяют два типа шумов, вызывающих погрешность при измерении расстояния. Осевой шум – шум вдоль оси измерения расстояния и латеральный шум – в плоскости перпендикулярной оси. И осевой и латеральный шум усиливаются при измерении расстояния до более удаленных объектов. Порядок шумов можно оценить по его средне-квадратичному отклонению.
Так для камеры Microsoft Kinect v2 (работает по принципу ToF) осевой шум на удалении 1 м составляет 2 см, латеральный шум – 5 мм. Из-за осевого шума возникают ошибки при определении положения объектов, из-за латерального — при определении границ объектов.
Разрешающая способность датчиков. Линейная разрешающая способность (чаще используется плотность – количество измеряемых точек в квадрате размера 1 см на 1 см) также падает с ростом расстояния до объекта. Создатели ANYmal выбрали подход с частым и быстрым измерением расстояния, но с возможной потерей разрешающей способности. Задав желаемый шаг дискретизации карты местности во всем поле зрения датчика, можно определить оптимальную разрешающую способность датчика. При оптимальной разрешающей способности датчика расстояние до каждой клетки будет измерено хотя бы один раз за заданный шаг времени. Это позволяет определять местность перед роботом с малой задержкой по времени, но достаточно точно для движения робота.
Например, используя стереокамеру Intel RealSense ZR300 с номинальным разрешением 480 на 360 пикселей, полем зрения 59˚ на 40˚, частотой регистрации карты расстояний 60 Гц (17 мс на один кадр), установленный на ANYmal высотой 83 см под углом 45˚ к поверхности земли, позволит получить карту высот местности с шагом 1 см на 1 см при разрешающей способности 312 на 234 пикселя. Оптимизация разрешающей способности датчика также благоприятно сказывается на времени обработки полученных данных.
Построение карт высот местности
Для перемещения робот должен создать для себя в режиме реального времени карту высот местности вокруг себя. В роботе ANYmal используется подход с построением относительной, а не глобальной карты.
При глобальном подходе карта строится относительно некой мировой системы координат. Текущее положение робота на этой карте вычисляется на основе проприоцепции. Величина линейного перемещения от начального определяется на основе количества пройденных шагов. Недостатком такого подхода является накопление ошибки с каждым перемещением робота. После достаточно долгой работы реальное положение робота будет сильно отличатся от того, где робот считает он находится. Робот не сможет нормально функционировать, т.к. он будет совершать действия, не соответствующие реальным препятствиям перед ним.
При относительном подходе каждый раз строится локальная карта местности вокруг робота. Недостатком такого подхода является потеря точности глобального расположения начальной и конечной точек.
![](https://habrastorage.org/webt/c2/ic/lq/c2iclqke-qltue7j3cyq90m8qzs.png)
Схемы глобального (вверху) и относительного (внизу) подходов к построению карт высот
Последовательность работы алгоритма построения карты высот:
- получение данных с датчиков расстояния,
- расчет и обновление значений высот клеток местности перед роботом с учетом шумов при измерении расстояния и текущего положения робота,
- движение робота,
- обновление карты высот с учетом движения робота.
![](https://habrastorage.org/webt/_p/yp/7o/_pyp7okemfn7b9qpcahvkfwbnx4.png)
Схема работы алгоритма построения карты высот
Результат этих шагов – карта высот местности относительно робота в реальном времени.
![](https://habrastorage.org/webt/ai/mo/7g/aimo7gygkuury3y45xia8sv_swk.png)
Пример карты высот для препятствия
При необходимости дальнейших трудозатратных вычислений, например, проверка столкновений, запускается процесс слияния карты. При этом определяется верхняя и нижняя границы значения высоты каждой клетки. Реальная высота клетки заведомо лежит в интервале, заданном этими границами.
Управление ногами
Движение робота можно разбить на 3 уровня абстракции:
- высокий уровень – заданные роботу цели по перемещению или по поведению,
- средний уровень – управление позой всего робота,
- низкий уровень – непосредственно команды, посылаемые на двигатели на подвижных частях.
![](https://habrastorage.org/webt/qq/ai/m2/qqaim2baynuitbekrix8ia2z9ks.png)
Схема работы системы управления ногами
Средний уровень выступает посредником между высоким и низким уровнями абстракции. Для облегчения разработки роботов был разработан Free Gait API.
Команды высокого уровня могут быть созданы с помощью скрипта, сигнала с пульта управления или с планировщика движения.
На низком уровне команды на поворот передаются на двигатели в узлах ног. С помощью датчиков определяется текущее положение тела и подвижных частей робота, которые передаются обратно на средний уровень.
В Free Gait API поведение высокого уровня преобразуется в команды. Команда представляет собой набор последовательных шагов. В каждом шаге есть разделение на движение ноги и движение тела робота. В шаге задается конечная цель для положения одной из ног в декартовых координатах или в координатах углов поворота суставов, траектория движения ноги (последовательность промежуточных целей), а также цель и траектория движения тела робота (его центра масс) в декартовых координатах в пространстве.
При такой реализации робот всегда стоит на 3-х ногах и может автоматически поддерживать равновесие, сохраняя положение центра масс внутри опорного треугольника.
С помощью последовательности команд можно создавать шаблоны движений, например, шаблоны перешагивания через препятствие, подъема по ступеньке, нажатия на кнопку, прыжков и т.д. Шаблоны могут активироваться если местность перед роботом совпадает с каким-либо заданным типом препятствия или если в поле зрения попала метка AprilTag.
Важным в движении робота является определения наличия контакта ноги с поверхностью, чтобы в дальнейшем на неё можно было надежно опереться. Из-за погрешностей работы датчиков позы робота и определения карты высот местности контакт ноги в реальности может не произойти как ему положено, в момент окончания шага. В API присутствуют шаблоны действий для сохранения равновесия робота, которые активируются в зависимости от типа ошибки – раннего или позднего контакта.
Планирование перемещения
В конечном итоге системы построения карты местности и управления ногами объединяются для реализации полноценного автономного перемещения робота по пересеченной местности.
Процесс можно разбить на несколько этапов.
![](https://habrastorage.org/webt/xu/t1/wh/xut1whzsqim3pzkhdyzd49k-qbu.jpeg)
Схема планирования движения
Получение карты высот местности вокруг робота. При этом необходимо учитывать ошибки при измерении, указывая для высоты каждой клетки местности доверительный интервал. Карта высот имеет только геометрическую информацию, для планирования не учитывается упругость поверхности. Это частично компенсируется алгоритмом постановки ноги в случае промаха с контактом. Также на этом этапе создается карта расстояний до препятствий с целью проверки на столкновения.
Оценка пригодности участка местности для упора в него ногой. Для робота ANYmal участки проверяются только на опасность потери равновесия роботом. Остальные участки считаются пригодными. Численная оценка пригодности осуществляется на основе вычисления угла наклона, кривизны, шероховатости и неопределенности в высоте поверхности.
Планирование шагов. На этом этапе формируется последовательность позиций робота между начальной и конечной точками. На каждой позиции робот виртуально занимает заданную базовую позу. Один шаг ногой – это перемещение одной конечности на соответствующую виртуальную позицию. После каждого шага последовательность шагов перепланируется.
Оптимизация упора ногой. На этом этапе для каждого шага ведется поиск самой безопасной позиции для упора ногой в окрестности рассчитанной виртуальной точки упора. Участки окрестности проверяются как на пригодность с точки зрения равновесия и безопасности, так и на кинематическую достижимость. Проверка кинематики осуществляется при оптимизации позы робота. Критериями для оптимального положения и ориентации тела робота являются стабильность и достижимость заданного положения ноги. Задача этой оптимизации в ANYmal решается с помощью последовательного квадратичного программирования (Sequential Quadratic Programming, SQP), бортовой компьютер находит оптимальное положение ноги за 0,5-3 мс.
Проверка столкновения при движении ноги. На этом этапе находится такая траектория движения ноги от начальной к конечной точкам, при которой нога не столкнется с препятствием или самим роботом. Здесь решается задача минимизации длины сплайна траектории с учетом возможного столкновения от полученной ранее карты расстояний до препятствий. Также учитывается и доверительный интервал для высот участков местности.
Если все этапы успешно пройдены, робот делает шаг и начинается процесс вычисления следующего шага.
Заключение
Лучше всего успех в разработке ходячих роботов продемонстрирует видео.
Видео