Робот-рекордсмен, разработанный в лаборатории биомиметической роботехники Массачусетского технологического института

Есть игры, в которые ИИ обыгрывает человека. А есть такие задачи, где человек вообще не рассматривается как конкурент. Здесь роботы соревнуются только друг с другом. Сборка кубика Рубика — типичная такая задача.

В ноябре 2016 года робот компании Infineon Technologies AG установил новый мировой рекорд по сборке кубика Рубика: собрал его за 0,637 секунды, побив предыдущий рекорд 0,89 с. Но европейских инженеров превзошли студенты лаборатории биомиметической роботехники (Biomimetic Robotics Lab) Массачусетского технологического института. Их робот справился с заданием за невероятные 0,38 секунды. Это «грязное» время, которое включает в себя нажатие клавиши «Старт», распознавание изображения и вычисление последовательности действий. Непосредственно механическая часть выполнения задачи заняла примерно 335 миллисекунд. Решение задачи в программе на базе min2phase и отправка инструкций — 45 миллисекунд.

Видео в реальном времени снято явно не для человеческих глаз. Чтобы несовершенные органы чувств человека смогли зафиксировать процесс сборки, а медленный человеческий мозг осознал происходящее, требуется замедлить воспроизведение видео хотя бы в несколько десятков раз. На скорости 0,03x от реальной становится что-то понятно.


Разработчики уверены, что машина вполне способна справиться быстрее, но для этого требуется тщательная оптимизация тайминга механических движений, отснятых на высокоскоростную камеру. На видео в 0,03х скорости (замедление в 33 раза) заметно, что после каждого перемещения грани кубика по инерции двигаются туда и обратно, прежде чем окончательно остановиться. Так, поворот на 90° в реальности завершается за примерно 10 миллисекунд, но робот делает следующее движение через 15 миллисекунд. Именно в этой части можно значительно оптимизировать процесс. Но робот и так почти в два раза перекрыл предыдущий мировой рекорд, а из-за ошибок оптимизации ломался кубик или взрывались полевые транзисторы. Так что решили оставить всё как есть. Но если нужно, студенты могут «срезать» с рекорда ещё 100 миллисекунд.



В конструкции использованы следующие детали:

  • 6 двигателей Kollmorgen ServoDisc серии U9 (четыре N9M4T с неодимовыми магнитами и два UD9-E — у них одинаковые характеристики и производительность). Два из них взяты со старого проекта механизированной руки, остальные по дешёвке куплены на eBay. К каждому двигателю прикреплён оптический датчик US Digital 2000, тоже с eBay. Хотя эти датчики обеспечивают избыточное разрешение для данного эксперимента, но их удалось купить по $14 за штуку — новые, что просто отличная цена. Правда, для прикрепления датчиков на двигатели пришлось немного повозиться.

  • 6 специально разработанных драйверов двигателей с 12-вольтовым питанием. Здесь работают контроллеры STM32F303K8. Платы собраны на 100-вольтовых транзисторах. Но почему-то на 60 вольтах один из них дважды взорвался, когда кубик застревал. Прошивка для контроллеров.



    Синхронизацию/согласование движений между шестью контроллерами осуществляет простая логическая плата (AND Board), которая получает сигнал от каждого двигателя о начале/окончании движения и посылает сигнал о безопасном начале работы следующему двигателю в очереди.

  • 2 камеры PlayStation Eye снимают по три грани каждая. Видео обрабатывается на 187 FPS под Linux с очень низкой задержкой, по сравнению с обычными веб-камерами. Эти камеры удалось купить по 7 долларов. Правда, обнаружилась проблема с чётким различием красных и оранжевых квадратов, так что студенты немного смошенничали — и закрасили оранжевые квадраты чёрной краской.
  • 1 кубик Рубика. Один из самых дешёвых.

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

Для сборки хорошо «разобранного» кубика обычно требуется от 19 до 23 шагов. Некоторые решения складываются быстрее, чем другие (самое быстрое состоит из 21 шага). Так что если повезёт, то задача решится примерно на 30 миллисекунд быстрее.

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


  1. denis64
    11.03.2018 17:51
    +1

    Дальнейшее усовершенствование наверняка будет идти по пути поиска новых конструкционных и смазочных материалов самого кубика. Иначе его начнёт разрывать от перегрузок.


    1. redpax
      12.03.2018 04:26

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


      1. vesper-bot
        12.03.2018 10:53

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


  1. geisha
    11.03.2018 19:39

    Хах, ну если кубик собрали специально с пазами под шесть манипуляторов то да, новый рекорд. Только не совсем понятно, в какой дисциплине.


    1. Silvarum
      11.03.2018 20:02

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


      1. geisha
        12.03.2018 01:15

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


        ломался кубик или взрывались полевые транзисторы


        1. Silvarum
          12.03.2018 07:22

          У человека можно сказать, что 10 манипуляторов, поскольку почти все действия производятся пальцами. Просто их конструкция не оптимальная для данной задачи.
          На соревнованиях у людей кубики тоже ломаются — чем больше кубик позволяет срезать углы, тем, как правило, более он хлипкий. Вот пальцы люди себе вроде бы не ломали :)


        1. Farrneel
          12.03.2018 08:15

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


        1. ElenaPhp
          12.03.2018 09:48

          в скорости?)все ограничено лишь узлами кубика)роботы только рады ускориться, думаю)


      1. iDm1
        12.03.2018 10:22

        Не все, но собирают из-за этого медленнее: youtu.be/X0pFZG7j5cE


  1. LeqWiser
    11.03.2018 19:59

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


    1. danila_bulatski
      11.03.2018 20:50

      Уперся в 2 минуты? Странно, я обычным методом из минуты выходил


      1. dmitrytheman
        11.03.2018 21:19

        Согласен. Я по методу Фридрих в 1 минуту 20 — 30 секунд собирал. Хотя если сосед свои личные алгоритмы использовал, то молодец.


        1. T_Sun
          12.03.2018 08:36

          1.5-2 минуты — время для обычных, не оптимальных алгоритмов.
          Методом Фридрих (F2L и тд) сборка должна быть меньше минуты.


        1. zartarn
          12.03.2018 08:48

          Классический послойный метод — из минуты спокойно можно выйти. А вот Фридрих если без большого фанатизма, но все же подучить формул побольше — из 30 секунд можно выйти.


  1. Tyusha
    11.03.2018 20:31

    За 21 оборот собрал. Это значит, что не нашёл самого оптимального варианта сборки. т.к. из любого положения можно собрать кубик за 20 ходов.

    Но тут, понятное дело, уже соревнование не алгоритмов, а в механики.


    1. dmitrytheman
      11.03.2018 21:29
      +1

      Ну всё же 20 это не минимальное число оборотов вообще, а минимальное для абсолютно любой из всех изначальных конфигураций. Если у кубика повернута одна грань на 90°, то и для сборки нужен один поворот. Если я не ошибаюсь, то термин "поворот" при сборке кубика — это поворот на 90° любой грани.


  1. Dvlbug
    12.03.2018 00:22

    Как мне кажется, такие модификации кубика противоположны соревнованию.
    Это как если заменить грани на RGB светодиоды или на эмуляторе запустить.

    Никто не будет против если я на олимпийских играх по бегу на машине проеду?


    1. DracoL1ch
      12.03.2018 01:38

      Если это будет соревнование среди машин — то пожалуйста. Эти роботы не с людьми соревнуются.


    1. Stirliz85
      12.03.2018 06:45

      эээ… Формула-1?


    1. T_Sun
      12.03.2018 08:39

      пишут, что кубик используется самый обычный


      1. Norno
        12.03.2018 09:12

        Это не совсем правда, у него изменены цвета граней (фиг с ним), и модифицированы грани, что уже существеннее, но, как отметили выше, ± все рекорды роботов ставятся на таких кубиках.


        1. zartarn
          12.03.2018 10:07

          Изменение цветов граней вроде никогда небыло критичным. Модификаций граней — тоже не наблюдаю. Сняли колпачки с центральных элементов, и в них вставляется уже «манипулятор».
          Сейчас вроде даже разрешили на соревнованиях кубики из цветного пластика (чет такое слышал).


  1. Wolframium13
    12.03.2018 09:11

    А я так и не смог ни разу собрать.


  1. andersong
    12.03.2018 10:11

    Помнится, давно (кажется, во времена первой эпидемии) прочитал, что есть комбинации, из которых невозможно собрать кубик. Это правда?


    1. jetexe
      12.03.2018 10:13

      ну его же надо как-то в эту комбинацию ввести…


      1. andersong
        12.03.2018 10:18

        Логично, а если собрать (из деталей) /приклеить наклейки сразу в этой комбинации?


        1. jetexe
          12.03.2018 10:36

          нет. Такой комбинации не существует. Для вообще всех комбинаций требуется не более 20 шагов. На доказательство этого ушло 35 лет


          1. jetexe
            12.03.2018 10:50

            *35 лет процессорного времени


          1. mammuthus
            12.03.2018 10:50

            Поправка: для вообще всех комбинаций правильного кубика требуется не более 20 шагов. Для кубика, в котором были переклеены грани определенном образом, такие комбинации есть, например:

            image


            1. andersong
              12.03.2018 10:58

              Вот об этом я и спрашивал. Значит всё-таки неразрешимые комбинации цветов существуют.


              1. Welran
                12.03.2018 13:30

                Поворот любого элемента кубика приводит к неразрешимости — итого существует 6 инвариантов.


          1. mafia8
            12.03.2018 10:58

            А если переклеить цвета на одной детали? Тут нет принципа чётности? В той статье «все» — это все нормальные комбинации, к которым можно прийти из собранного состояния без разбирания кубика.


  1. andrey_aksamentov
    12.03.2018 10:53

    За сколько же тогда будет решена судьба человечества? Будет ли это хотя бы сотая секунды...


    1. hdfan2
      12.03.2018 11:18

      За три месяца, если верить классикам.


      1. alix_ginger
        12.03.2018 11:57

        Или за семь с половиной миллионов лет, если верить другим классикам


  1. madf
    12.03.2018 12:12

    Корявый писькометр, центр не подвижен с 6 сторон, комбинаций в разы меньше.


    1. T_Sun
      12.03.2018 14:40

      меньше чем где?


  1. ODY
    12.03.2018 13:30

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


    1. T_Sun
      12.03.2018 14:42

      а бывают ещё кубики на магнитах…


  1. alix_ginger
    12.03.2018 15:48

    А можно ли найти такое решение, которое пусть и увеличит количество необходимых поворотов, но при этом повороты будут производиться парами — по две противолежащих грани?
    Ведь противолежащие грани можно поворачивать одновременно, и тогда «параллельное» решение из 30 поворотов займет меньше времени, чем обычное из 20.
    Со вчерашнего дня пытаюсь это сформулировать, но до сих пор, по-моему, не очень понятно.


    1. zartarn
      12.03.2018 16:40

      А смысл? если обе в одну сторону это = повороту центрального слоя. Если в разные — то это поворот центр+грань и грань. Существенно тут не выйграешь. Да и просчитывается алгоритм наиболее эффективный, а не пошагово. На числе оборотов тут уже особо не выйграть.