Робот-рекордсмен, разработанный в лаборатории биомиметической роботехники Массачусетского технологического института
Есть игры, в которые ИИ обыгрывает человека. А есть такие задачи, где человек вообще не рассматривается как конкурент. Здесь роботы соревнуются только друг с другом. Сборка кубика Рубика — типичная такая задача.
В ноябре 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 миллисекунд быстрее.
Источник