Обзор будет полезен для тех, кто занимается физическими роботами и кому стало недостаточно arduino, а также для людей, кто хотел бы реализовать какие-либо из функций восприятия окружающего мира в своих роботах или устройствах.
Робот Misty от компании Misty Robotics представленный на CES
В зависимости от назначения робота, ему необходимо решать различные задачи. Бывает, что для их решения достаточно контроллера и, например, простейших сенсоров. Однако, иногда необходимо, чтобы робот мог выполнять задачи не по жестко заложенным координатам, а в зависимости от состояния окружающего пространства или рабочей области. Тогда становится необходимым использовать более сложные сенсоры, как например, камеры или лидары и использовать специальные алгоритмы для обработки поступающей информации.
Видеть и понимать увиденное — это первая функция, которая может прийти на ум.
Позволяет находить в области видения объекты заданных типов.
Пример алгоритма
Позволяет отслеживать перемещение объекта или объектов в области видения.
Пример алгоритма
Позволяет попиксельно определять содержимое области видения.
Пример алгоритма
Позволяет определять препятствия на пути и расстояния до них с использованием компьютерного зрения.
Пример работы алгоритма
Пример алгоритма для обычной камеры
Пример алгоритма для стерео камеры
Если же условия работы вашего робота позволяют использовать Depth камеры с активной IR подсветкой, например такие как Intel Realsense, то вы можете применять проприетарное SDK.
Большинству физических роботов, будь то манипулятор, мобильный робот или что-либо еще, необходимо как-либо перемещаться в пространстве. И иногда в процессе этих перемещений, особенно если условия или среда функционирования могут существенно изменяться, роботу необходимо изменять траекторию и скорость движении.
Позволяет определять координаты собственного местоположения робота в пространстве, в том числе внутри зданий.
Пример алгоритма
Позволяет мобильному роботу принимать решения о необходимых маневрах для оптимизации траектории движения в динамическом окружении. Алгоритм использует обучение с подкреплением.
Пример алгоритма
Позволяет роботу-манипулятору принимать решения о необходимых действиях, необходимых для захвата объектов различной формы. Алгоритм также использует обучение с подкреплением.
Пример алгоритма
Алгоритмы, описанные в этой статье, достаточно прожорливые вычислительно и чаще всего требуют GPU. Поэтому, в зависимости от требований к условиям эксплуатации робота, разработчику необходимо выбрать вариант исполнения и оптимизировать код.
Возможные варианты:
Сделанный выбор продиктует свои требования как к оборудованию, так и к оптимизации алгоритмов.
Одного алгоритма для решения какой-либо задачи часто бывает недостаточно. Поэтому, при использовании алгоритмов в роботах, разработчикам придется столкнуться с интеграционной задачей, т.е. необходимо обеспечить взаимодействие с другими алгоритмами и ПО.
Работая в компании разрабатывающей ПО для роботов, часто приходится сталкиваться с различными роботами и алгоритмами, а также находить новые подходы к решению сложных задач. Обратил внимание, что в последнее время возрос интерес к функциям, связанным с безопасностью и возможностью автономной работы механизмов, особенно в непосредственной близости от людей.
Представленный обзор содержит далеко не исчерпывающий перечень задач и алгоритмов. В качестве примеров приведены по одному алгоритму по выбору автора. Также обратите внимание, что любая из представленных задач может быть решена множеством других способов и/или с использованием других алгоритмов. Если у вас есть под рукой еще какие-либо примеры задач с алгоритмами, то оставляйте в комментариях.
P.S.: На сладкое — красивое видео из “поднебесной” с колесным роботом и системой принятия решений на борту
Робот Misty от компании Misty Robotics представленный на CES
В зависимости от назначения робота, ему необходимо решать различные задачи. Бывает, что для их решения достаточно контроллера и, например, простейших сенсоров. Однако, иногда необходимо, чтобы робот мог выполнять задачи не по жестко заложенным координатам, а в зависимости от состояния окружающего пространства или рабочей области. Тогда становится необходимым использовать более сложные сенсоры, как например, камеры или лидары и использовать специальные алгоритмы для обработки поступающей информации.
Зрение и понимание
Видеть и понимать увиденное — это первая функция, которая может прийти на ум.
Детектирование объектов
Позволяет находить в области видения объекты заданных типов.
Пример алгоритма
Видео
Трекинг объектов
Позволяет отслеживать перемещение объекта или объектов в области видения.
Пример алгоритма
Видео
Сегментация
Позволяет попиксельно определять содержимое области видения.
Пример алгоритма
Видео
Оценка глубины
Позволяет определять препятствия на пути и расстояния до них с использованием компьютерного зрения.
Пример работы алгоритма
Пример алгоритма для обычной камеры
Пример алгоритма для стерео камеры
Если же условия работы вашего робота позволяют использовать Depth камеры с активной IR подсветкой, например такие как Intel Realsense, то вы можете применять проприетарное SDK.
Анимация
Перемещение и принятие решений
Большинству физических роботов, будь то манипулятор, мобильный робот или что-либо еще, необходимо как-либо перемещаться в пространстве. И иногда в процессе этих перемещений, особенно если условия или среда функционирования могут существенно изменяться, роботу необходимо изменять траекторию и скорость движении.
Ориентация в пространстве
Позволяет определять координаты собственного местоположения робота в пространстве, в том числе внутри зданий.
Пример алгоритма
Видео
Принятие решений при перемещениях
Позволяет мобильному роботу принимать решения о необходимых маневрах для оптимизации траектории движения в динамическом окружении. Алгоритм использует обучение с подкреплением.
Пример алгоритма
Анимация
Захват и манипуляции объектами
Позволяет роботу-манипулятору принимать решения о необходимых действиях, необходимых для захвата объектов различной формы. Алгоритм также использует обучение с подкреплением.
Пример алгоритма
Видео
Особенности реализации для роботов
Производительность
Алгоритмы, описанные в этой статье, достаточно прожорливые вычислительно и чаще всего требуют GPU. Поэтому, в зависимости от требований к условиям эксплуатации робота, разработчику необходимо выбрать вариант исполнения и оптимизировать код.
Возможные варианты:
- вычисления на выделенном персональном ПК
- вычисления в облаке
- вычисления на борту
Сделанный выбор продиктует свои требования как к оборудованию, так и к оптимизации алгоритмов.
Взаимодействие
Одного алгоритма для решения какой-либо задачи часто бывает недостаточно. Поэтому, при использовании алгоритмов в роботах, разработчикам придется столкнуться с интеграционной задачей, т.е. необходимо обеспечить взаимодействие с другими алгоритмами и ПО.
Вместо вывода
Работая в компании разрабатывающей ПО для роботов, часто приходится сталкиваться с различными роботами и алгоритмами, а также находить новые подходы к решению сложных задач. Обратил внимание, что в последнее время возрос интерес к функциям, связанным с безопасностью и возможностью автономной работы механизмов, особенно в непосредственной близости от людей.
Представленный обзор содержит далеко не исчерпывающий перечень задач и алгоритмов. В качестве примеров приведены по одному алгоритму по выбору автора. Также обратите внимание, что любая из представленных задач может быть решена множеством других способов и/или с использованием других алгоритмов. Если у вас есть под рукой еще какие-либо примеры задач с алгоритмами, то оставляйте в комментариях.
P.S.: На сладкое — красивое видео из “поднебесной” с колесным роботом и системой принятия решений на борту
Видео
DeadDevelopmentInc
YOLO (первый пример) может и в видео потоке локализировать объекты. Хорошая подборка сам пробовал большую часть из этого. Вопрос еще в том на каком железе это все вертится.
max8m Автор
Да, верно. Оптимизация алгоритмов под выбранное железо — шаг, который тоже будет необходимо пройти. Это может быть Cloud, Desktop или Mobile. Mobile может быть на базе Jetson, Snapdragon, FPGA и тп.
vvsotnikov
В случае с обнаружением объектов на видео также может быть полезно использовать специально заточенные на это модели.
max8m Автор
Да, спасибо большое! Реализован интересный подход для извлечения объектов из видео. Демо-ролик
vvsotnikov
Пожалуйста :) корреляция между изменениями кадров и feature maps используется и в трекинге, если что.