Быстрее секунды: роботы продолжают улучшать время сборки кубика Рубика

Первая попытка собрать кубик Рубика интуитивно, без использования уже разработанных и хорошо описанных методов, натыкается на бессильное поражение. После ознакомления с соответвующими инструкциями задача решается, хотя повторение алгоритмов требует минуты. Но какое минимальное время нужно, чтобы привести каждую из граней случайно перемешанного кубика к одному цвету? Люди достигли пяти секунд. А машины недавно стали быстрее секунды. Речь идёт о уже описанном роботе Джея Флэтлэнда и ещё более быстром новом претенденте на мировой рекорд Sub1.

Итак, задача состоит в том, чтобы получить случайно перемешанный кубик 3×3×3, ознакомиться с его конфигурацией и вращением привести каждую из граней к одному цвету. Делать это не нужно вслепую или в темноте, движения никак не ограничены. Нужна лишь скорость. Допустимые модели кубиков, порядок перемешивания и прочие детали регулируются регистрирующей результат организацией. Одно остаётся неизменным: максимальное оптимальное число ходов никогда не может быть больше 20. Это так называемое число Бога.
Сейчас рекорд среди людей принадлежит американскому подростку Лукасу Эттеру. Он поставил его осенью 2015 года, решив головоломку за 4,9 секунды. Рекорд зарегистрирован World Cube Association, организацией, которая регулирует соревнования по кубику Рубика. Результат является постепенным улучшением последних десятков лет. К примеру, в 1982 году рекордом было время в 19 секунд.


Текущий лучший результат среди людей.

Достижение подобных результатов требует тренировок и полного автоматизма движений. Почему бы решать задачу машинами, а не неуклюжими пальцами? Подобно людям, роботы плавно улучшают результаты, пусть и куда быстрее. К примеру, в 2011 году CubeStormer 2 был в состоянии управиться за немногим более 5 секунд. В 2014 году CubeStormer 3 приводил каждую грань кубика к одному цвету за 3,253 секунды. Какое-то время в «Книге рекордов Гиннеса» был записан роборезультат в 2,39 секунды. Но несколько дней назад его сменило время в 0,900 секунды.

Рекордсменом стал робот двух разработчиков программного обеспечения Джея Флэтлэнда и Пола Роуза из города Олейта в штате Канзас. В январе авторы выложили на YouTube видеоролик с устройством, которое было в состоянии решить головоломку за 1,1 секунды. Робот представляет из себя набор относительно общедоступных электронных компонентов и программного обеспечения. Это реализация двухфазного алгоритма Коцембы, 4 веб-камеры и 6 шаговых двигателей.

После снятия барьеров четыре USB-камеры регистрируют конфигурацию кубика. Данные приходят на обычный персональный компьютер под управлением операционной системы семейства Linux. Прикладная программа вычисляет состояние кубика, получает решение от реализации алгоритма Коцембы и управляет процессом движения. Роуз переписал Java-образец на С++ и сделал программу быстрее. Шаговые двигатели опираются на каркас, созданный с помощью 3D-принтера. Драйверы двигателей DRV8255 управляются микросхемой Arduino. На их концах расположены маленькие напечатанные ножки, с помощью которых производится контакт с головоломкой. Сам кубик незначительно модифицирован: в центральном сегменте каждой из граней просверлены 4 крошечных отверстия, куда и входят эти ножки на концах осей двигателей. Можно поспорить, что в конструкцию головоломки внесены изменения. Но результат регистрирует «Книга рекордов Гиннеса» по собственным критериям, в которые входят и требования WCA. Прошлые роботы-рекордсмены тоже использовали незначительно изменённые кубики, которые не нарушали подраздел 3h, определяющий допустимые модификации.

5 февраля робот Флэтлэнда и Роуза собрал перемешанный программой TNoodle кубик за 0,900 секунды и 18 ходов в присутствии представителей «Книги рекордов Гиннеса». Заметны изменения в алгоритмах решения — в более ранних демонстрациях результат находился в районе 1,1 секунды. Как пишет Флэтлэнд, ему удавалось достичь результата чуть больше 0,8 и даже 0,7 секунд, но из трёх отложенных судьёй попыток лучшим стал 0,9.


Ускоренная съёмка рекорда показывает быстроту движений. Оригинальная видеозапись с нормальной скоростью находится до ката.

Тем не менее, этот рекорд скоро может быть побит. В некотором роде он уже побит: создатель Sub1 Альберт Бир утверждает, что ему первому в мире удалось зайти под секунду. 23 января 2016 года в Мюнхене в магазине Cubikon был продемонстрирован результат в 0,887 секунды. Это время получилось с третьей попытки. Первая дала 1,043 секунды, вторая закончилась неверным решением из-за бликов на кубике. Типичное время находится в районе 0,9—1,0 секунды. Рекордный результат официально зарегистрирован не был.

О конструкции известно мало. Как видно, скоростной 57-мм кубик ZhanChi стандарта WCA удерживает стальная конструкция, а не пластиковая из 3D-принтера. Бир специально научился варить для своего проекта. В качестве контроллеров двигателей используются платы Toshiba TB6560.


Новый претендент на рекорд — Sub1.

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


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

Новый рекорд Sub1 ещё нужно зарегистрировать. Соревнование нельзя описать как битву. Текущие рекордсмены уже вдоволь наигрались со своим проектом и хотели бы сменить его на что-нибудь другое, к примеру, создание роликов для YouTube. Флэтлэнд даже дружески предложил Биру свои советы и помощь.

© Geektimes