Обзор будет полезен для тех, кто занимается физическими роботами и кому стало недостаточно arduino, а также для людей, кто хотел бы реализовать какие-либо из функций восприятия окружающего мира в своих роботах или устройствах.
Робот Misty от компании Misty Robotics представленный на CES
Робот Misty от компании Misty Robotics представленный на CES

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

Зрение и понимание


Видеть и понимать увиденное — это первая функция, которая может прийти на ум.

Детектирование объектов


Позволяет находить в области видения объекты заданных типов.

Пример алгоритма

Пример работы

Видео


Трекинг объектов


Позволяет отслеживать перемещение объекта или объектов в области видения.

Пример алгоритма

Пример работы

Видео


Сегментация


Позволяет попиксельно определять содержимое области видения.

Пример алгоритма

Пример работы

Видео


Оценка глубины


Позволяет определять препятствия на пути и расстояния до них с использованием компьютерного зрения.

Пример работы алгоритма

Пример работы

Пример алгоритма для обычной камеры
Пример алгоритма для стерео камеры

Если же условия работы вашего робота позволяют использовать Depth камеры с активной IR подсветкой, например такие как Intel Realsense, то вы можете применять проприетарное SDK.

Анимация


Перемещение и принятие решений


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

Ориентация в пространстве


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

Пример алгоритма

Пример работы

Видео


Принятие решений при перемещениях


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

Пример алгоритма

Анимация


Захват и манипуляции объектами


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

Пример алгоритма

Пример работы

Видео


Особенности реализации для роботов


Производительность


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

Возможные варианты:

  • вычисления на выделенном персональном ПК
  • вычисления в облаке
  • вычисления на борту

Сделанный выбор продиктует свои требования как к оборудованию, так и к оптимизации алгоритмов.

Взаимодействие


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

Вместо вывода


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

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

P.S.: На сладкое — красивое видео из “поднебесной” с колесным роботом и системой принятия решений на борту

Видео

Комментарии (7)


  1. DeadDevelopmentInc
    21.01.2019 16:01

    YOLO (первый пример) может и в видео потоке локализировать объекты. Хорошая подборка сам пробовал большую часть из этого. Вопрос еще в том на каком железе это все вертится.


    1. max8m Автор
      22.01.2019 16:17

      Да, верно. Оптимизация алгоритмов под выбранное железо — шаг, который тоже будет необходимо пройти. Это может быть Cloud, Desktop или Mobile. Mobile может быть на базе Jetson, Snapdragon, FPGA и тп.


    1. vvsotnikov
      22.01.2019 18:44

      В случае с обнаружением объектов на видео также может быть полезно использовать специально заточенные на это модели.


      1. max8m Автор
        22.01.2019 19:20

        Да, спасибо большое! Реализован интересный подход для извлечения объектов из видео. Демо-ролик


        1. vvsotnikov
          22.01.2019 19:56

          Пожалуйста :) корреляция между изменениями кадров и feature maps используется и в трекинге, если что.


  1. max8m Автор
    22.01.2019 16:16

    del


  1. Shred
    23.01.2019 13:05

    YOLO бесплатный софт?