image

Если вы когда-нибудь наблюдали за тем, как работают демо-версии роботов, то наверняка замечали, что робот может надолго «зависать», прежде чем продолжить движение. Можно подумать, что таким образом робот размышляет над тем, в какой момент и по какой траектории двигаться. Это предположение недалеко от истины: в этот момент процессор обрабатывает операции планирования движения, что зачастую отнимает много времени.

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

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

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

В теории звучит достаточно просто, но на практике нужно учитывать тот факт, что вы работаете с роботизированной рукой. И когда кисть движется из одной точки в другую, предплечье может столкнуться с препятствием. Область, в которой перемещается рука робота, называется «рабочим объемом».

image
Рабочий объем — пространство, в котором робот меняет свое положение из одной позиции в другую.

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

150 тысяч ребер – это слишком много для прототипа системы команды университета Дьюка. Более разумное число приближено к 1000, поэтому исследователи должны были найти способ, чтобы сократить их число.

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

Ограничить количество ребер на карте до какого-то приемлемого значения очень важно, поскольку ограничены возможности процессора, который обрабатывает операции планирования. В данном случае процессор – программируемая логическая интегральная схема (ПЛИС) – запрограммирован с массивом схем обнаружения столкновений, каждая из которых соответствует одном ребру на карте. Таким образом размер карты ограничен количеством таких схем, которые могут поместиться на ПЛИС – максимум несколько тысяч.

Технология ученых из университета Дьюка работает путем разбивки рабочего пространства на тысячи вокселей. Затем алгоритм определяет, заложена ли в одном из вокселей заранее запрограммированная траектория движения объекта. Благодаря ПЛИС технология проверяет тысячи маршрутов одновременно, а затем сшивает кратчайший путь, используя оставшиеся безопасные варианты. Роботу остается только исполнить его.


На выходе ученые получили значительное ускорение: независимо от того, сколько ребер на карте, скорость обработки всей карты у ПЛИС составила 50 наносекунд на один пиксель. В одном особенно сложном примере обработка заняла чуть больше 0,6 мс. Планировщик, который работал на основе четырехъядерного процессора Intel Xeon с тактовой частотой 3,5 гигагерц справился с этой задачей за 2,738 мс. Обычные процессоры потребляют около 200-300 Вт электроэнергии во время планировки движения, а разработка ученых из университета Дьюка – менее 10 Вт.

Сейчас промышленные роботы не используют планировщиков движения. Когда речь идет, например, о конвейерной сборке автомобилей с помощью роботов, окружающая среда планируется таким образом, что роботы могут слепо повторять одни и те же движения снова и снова. У них попросту нет возможности ошибиться: части автомобиля каждый раз оказываются в одном и том же месте, и роботов держат в специальных боксах, отгораживающих их от людей. Но если робот будет использовать алгоритмы планирования движения в реальном времени, ему не смогут помешать ни блуждающие мимо люди, ни сбой в работе конвейера – роботы с привычной точностью будут выполнять свою работу.

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

Динеш Маноча, профессор университета Северной Каролины в Чапел-Хилл, который работает над планировщиком движения в режиме реального времени на графических процессорах согласен с тем, что ПЛИС обладает серьезным потенциалом увеличить эффективность планирования движения. Он уверен, что разработка ученых найдет свое практическое применение в ближайшем будущем: роботы все чаще используются в новых, неопределенных условиях, роль планирования движения со временем будет только увеличиваться.

Стартап Realtime Robotics будет коммерциализировать технологию ученых. В рамках этого проекта ПЛИС заменят на специализированные интегральные схемы (ASIC), которые могут объединить более 100 тысяч ребер. Такой апгрейд позволит роботам работать в самых разнообразных средах.
Поделиться с друзьями
-->

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


  1. Melorian
    21.12.2016 14:39

    Главное теперь, чтобы робот, освобожденный из железной клетки на сборочном конвейере по причине шибко умного процессора, в случае, если ему не по нраву текущие условия труда, «случайно» не отодвинул мешающего ему человека сверлом прямо под другой робот с очень быстро вращающейся болгаркой :)


    1. sankir
      21.12.2016 14:48

      Да что вы так боитесь этих «злых робатов». Поздно уже бояться. Все, они уже тут. Пора учить матчасть и изыскивать способы борьбы. Уязвимые места, способы заглючивания мозгов, слепые зоны их робо-зрения.
      А бояться не надо. «Ален ноби, ностра алис! Что означает — ежели один человек построил, другой завсегда разобрать может.»


      1. Robotex
        22.12.2016 19:48

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


  1. loki-fire
    21.12.2016 15:07

    Не очень соотносится «что робот может надолго «зависать»» из первого абзаца и 2,738 мс расчета траектории на CPU общего назначения. Несомненно, FPGA будет быстрее, вопрос для коммерческого применения в соотношении цена/качество. Не возникнет ли необходимость разрабатывать специализированную схему под каждый вариант манипулятора.


    1. SandroSmith
      21.12.2016 17:19

      Так о том то и статья, что они своим алгоритмом кардинальна уменьшили это время.


  1. old_bear
    21.12.2016 15:22

    По описанию, похоже что эта задача на GPU может неплохо лечь. Причём в универсальном варианте, бо памяти и ядер у GPU более чем достаточно.


    1. IgorKh
      21.12.2016 15:49

      но GPU больно прожорлив, специализированные процы тут в любом случае будут вне конкуренции


    1. potan
      21.12.2016 17:51

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


  1. potan
    21.12.2016 17:54

    А есть ссылка на саму работу?


  1. Andy_Big
    21.12.2016 20:26

    Всегда считал, что роботы на конвейере — это обычные станки с ЧПУ, просто в форм-факторе манипулятора. Для них траектория задается один раз для каждой операции и потом робот тупо исполняет команды типа «повернуть на 16 градусов, подвинуть влево на 210 мм и вверх на 48 мм, описать дугу 67 градусов с таким-то центром такого-то радиуса» и т.д. Планировщик в самом роботе только переводит эти команды в управляющие сигналы для моторов с учетом макс. скорости, ускорения и т.д.
    То есть предположение "если робот будет использовать алгоритмы планирования движения в реальном времени, ему не смогут помешать ни блуждающие мимо люди, ни сбой в работе конвейера – роботы с привычной точностью будут выполнять свою работу" мягко говоря неверно. Для этого роботам нужны еще камеры с обзором 360 градусов, какой-то софт, обрабатывающий данные с этих камер, софт для пересчета всего задания в случае сбоя конвейера… И еще много чего, я подозреваю :) Это уже будут не нынешние роботы с чипом планирования движения, а совершенно другие роботы, которые и стоить будут совершенно других денег :)
    А описанная в статье возможность пригодится роботам, работающим не по жесткой программе. Например, роботу-уборщику :)


    1. Kardy
      21.12.2016 22:26

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


      1. Andy_Big
        21.12.2016 23:11

        судя по видео на ютюбе по крайней мере некоторые промышленные роботы — больше роботы чем просто станки. Например, бывает — детальки на конвеере разбросан как попало

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

        Ну, например, кто-то открыл калитку в ограждении рабочего пространства робота — сработала кнопка, или датчик движения уловил что-то там где ничего двигаться не должно. Действия робота простые — остановиться. Для того, чтобы робот действительно обсчитывал в 3D окружающую обстановку, определял динамично меняющиеся препятствия и планировал движения в соответствии с ними — этого нет и вряд ли будет в ближайшие годы :) По крайней мере в массовых роботах, которые стоят на одном месте и выполняют одну последовательность операций.


    1. rPman
      21.12.2016 22:57

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


      1. Andy_Big
        21.12.2016 23:17

        Управление с точки зрения оператора у них и так несложное, упрощенно: три кнопки — «старт», «стоп» и «вызвать сервис» :) А вот настройка и обслуживание требуют высокой квалификации, и это так и останется еще долгое время :)


  1. usblexus
    21.12.2016 23:41

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


    Вот это было вообще неожиданно сейчас, т.е. быстродействие алгоритма никак не зависит от количества вариантов?


    1. Robotex
      22.12.2016 21:17

      Твое положение в коридоре или на дороге в поле, как-то влияет на твое планирование движений? Количество возможных вариантов ведь разное.


      1. usblexus
        22.12.2016 21:50

        Очевидно что влияет.


  1. VaalKIA
    22.12.2016 06:51

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


    1. Googlist
      23.12.2016 14:56

      Как раз наоборот, нагрузка-то статическая на робота (промьішленного автомата), а плечо — чугуниевое и кругом подшипники. Если он его еще и туда-сюда сгибать-разгибать начнет — то будет тратить дополнительную єнергию, а если нагрузку просто переложит на чугуний — то нет.
      К тому же в статье речь об єкономии єнергии на вьічислениях, а не на движениях.


      1. VaalKIA
        23.12.2016 20:50

        Всё же меня терзают смутные сомненья, поскольку рычаг разный и соотвественно усилия отличаются. А об экономии энергии… конечно, любое движение потребляет гораздо больше энергии, чем вычисление. потолок которого озвучили в 300 Вт, именно об этом я и говорю.


  1. AleXP3
    22.12.2016 11:11

    Не исключено, что первое коммерческое применение будет «робот-карманник».


  1. Robotex
    22.12.2016 19:31

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