Новый рекорд сборки кубика Рубика: 0,38 секунды


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

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

    В ноябре 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 миллисекунд быстрее.
    Поделиться публикацией
    Комментарии 44
      +3
      Дальнейшее усовершенствование наверняка будет идти по пути поиска новых конструкционных и смазочных материалов самого кубика. Иначе его начнёт разрывать от перегрузок.
        0

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

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

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

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

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


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

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

                  0
                  в скорости?)все ограничено лишь узлами кубика)роботы только рады ускориться, думаю)
                  0
                  Не все, но собирают из-за этого медленнее: youtu.be/X0pFZG7j5cE
                0
                Надо показать своему соседу, который за 2 минуты собирает. Он недавно перестал собирать, ибо сказал, что уперся во время и быстрее не может
                  0
                  Уперся в 2 минуты? Странно, я обычным методом из минуты выходил
                    0

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

                      0
                      1.5-2 минуты — время для обычных, не оптимальных алгоритмов.
                      Методом Фридрих (F2L и тд) сборка должна быть меньше минуты.
                        0
                        Классический послойный метод — из минуты спокойно можно выйти. А вот Фридрих если без большого фанатизма, но все же подучить формул побольше — из 30 секунд можно выйти.
                    +1
                    За 21 оборот собрал. Это значит, что не нашёл самого оптимального варианта сборки. т.к. из любого положения можно собрать кубик за 20 ходов.

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

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

                        0
                        20 — это 20 поворотов на 90 или 180 градусов

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

                      Никто не будет против если я на олимпийских играх по бегу на машине проеду?
                        +1
                        Если это будет соревнование среди машин — то пожалуйста. Эти роботы не с людьми соревнуются.
                          0
                          эээ… Формула-1?
                            0
                            пишут, что кубик используется самый обычный
                              0
                              Это не совсем правда, у него изменены цвета граней (фиг с ним), и модифицированы грани, что уже существеннее, но, как отметили выше, ± все рекорды роботов ставятся на таких кубиках.
                                0
                                Изменение цветов граней вроде никогда небыло критичным. Модификаций граней — тоже не наблюдаю. Сняли колпачки с центральных элементов, и в них вставляется уже «манипулятор».
                                Сейчас вроде даже разрешили на соревнованиях кубики из цветного пластика (чет такое слышал).
                            +8
                            А я так и не смог ни разу собрать.
                              –1
                              Помнится, давно (кажется, во времена первой эпидемии) прочитал, что есть комбинации, из которых невозможно собрать кубик. Это правда?
                                +2
                                ну его же надо как-то в эту комбинацию ввести…
                                  0
                                  Логично, а если собрать (из деталей) /приклеить наклейки сразу в этой комбинации?
                                    0
                                    нет. Такой комбинации не существует. Для вообще всех комбинаций требуется не более 20 шагов. На доказательство этого ушло 35 лет
                                      0
                                      *35 лет процессорного времени
                                        0
                                        Поправка: для вообще всех комбинаций правильного кубика требуется не более 20 шагов. Для кубика, в котором были переклеены грани определенном образом, такие комбинации есть, например:

                                        image
                                          0
                                          Вот об этом я и спрашивал. Значит всё-таки неразрешимые комбинации цветов существуют.
                                            0
                                            Поворот любого элемента кубика приводит к неразрешимости — итого существует 6 инвариантов.
                                              0
                                              Только такие комбинации невозможно получить при нормальных условиях. Только «сломав» кубик.
                                            0
                                            А если переклеить цвета на одной детали? Тут нет принципа чётности? В той статье «все» — это все нормальные комбинации, к которым можно прийти из собранного состояния без разбирания кубика.
                                      0

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

                                      0

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

                                        0
                                        меньше чем где?
                                        0
                                        В дорогих кубиках Рубиках можно прокручивать перпендикулярную грань не дожидаясь докрутки предыдущей, называется «резать угол». Также они лучше смазаны, и имеют настройки упругости. Как и писалось в статье, с рекорда можно срезать еще несколько мс.
                                          0
                                          а бывают ещё кубики на магнитах…
                                          0
                                          А можно ли найти такое решение, которое пусть и увеличит количество необходимых поворотов, но при этом повороты будут производиться парами — по две противолежащих грани?
                                          Ведь противолежащие грани можно поворачивать одновременно, и тогда «параллельное» решение из 30 поворотов займет меньше времени, чем обычное из 20.
                                          Со вчерашнего дня пытаюсь это сформулировать, но до сих пор, по-моему, не очень понятно.
                                            0
                                            А смысл? если обе в одну сторону это = повороту центрального слоя. Если в разные — то это поворот центр+грань и грань. Существенно тут не выйграешь. Да и просчитывается алгоритм наиболее эффективный, а не пошагово. На числе оборотов тут уже особо не выйграть.

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

                                          Самое читаемое