Во время демонстрации движений роботов часто можно наблюдать, как они надолго замирают в нерешительности, прежде чем что-либо сделать. В это время роботы просчитывают алгоритм движения, выбирая наилучший вариант. Это один из самых важных навыков, а также самый ресурсоемкий и долгий.
Ученые Университета Дьюка создали так называемую вероятностную карту, схему, соединяющую две точки в двух- или трехмерном пространстве, посредством промежуточных узлов и векторов. Затем компьютер выбирает оптимальный маршрут.
Главная задача алгоритма состоит в том, чтобы рассчитать, не столкнется ли сам робот с препятствием. При этом расчет вероятности столкновения занимает 99% времени расчетов простого движения, потому что требуется создать геометрическую модель всех движений робота и проверить ее, поместив в сцену с другими препятствиями.
Компания Илона Маска разработает домашнего робота-слугу
Идеи
Для этого исследователи Дьюка использовали комбинацию «агрессивных предвычислений и обширного параллелизма», которые выполнялись на собственном процессоре. Во время первой настройки робота создается массивная вероятностная карта с 150 000 векторами, которая представляет возможные маршруты движения робота без столкновений с самим собой и постоянными величинами (столом, шкафом, всем тем, что может оказаться в лаборатории).
К сожалению, 150 000 линий — это слишком много для одновременной обработки. Более приемлемое число — 1000, поэтому исследователи использовали распределение векторов по задачам в зависимости от их вероятности, пишет Spectrum IEEE.
Для выполнения расчетов по маршруту ученые создали процессор FPGA, полевую программируемую вентильную матрицу со специальной микросхемой, конфигурацию которой можно менять самостоятельно. Его преимущество в том, что все контуры работают одновременно, и ему требуется всего 50 наносекунд на пиксел, чтобы рассчитать все возможные столкновения. Задачу, которая показана на видео, процессор решает за 600 мксек, тогда как четырехядерный Intel Xeon с 3,5 ГГц и 16 Гб RAM справляется за 800 000 мксек. Это и дает разницу между почти мгновенным движением робота и паузами в 3 секунды между действиями.