Робот собирает кубик рубика как: Робот невероятно быстро собирает кубик Рубика

Содержание

Этот робот собирает кубик Рубика за секунду

Истории

25 января 2016

Истории

25 января 2016

Екатерина Бочкарева

Редактор «Истории» RB.RU.

Екатерина Бочкарева

Программные разработчики Джей Флэтланд и Пол Роуз создали машину, которая собирает кубик Рубика фантастически быстро. Их робот справляется с задачей всего за одну секунду.

Екатерина Бочкарева

Сейчас напарники подают заявку на мировой рекорд. Вряд ли он кого-то удивит, ведь последний машинный рекорд составлял 3,253 секунды (человеческий рекорд побил Лукас Эттер, собрав кубик всего за 4,904 секунды). Но всё же, если их заявку подтвердят, то они побьют прежние показатели.

Видео говорит само за себя:

В этом видео робот решает небезызвестную головоломку за 1,196 секунды, за 1,152 секунды, за 1,047 и в самом конце за 1,019 секунды.

Оказывается, что робот может похвастаться не только быстротой, но и постоянством. По крайней мере, в вышеуказанном ролике он четыре раза подряд решает головоломку за 1-1,2 секунды.

Робот сделан из шаговых двигателей, распечатанной на 3D-принтере конструкции и четырёх USB-камер, подключенных к ПК. Сначала он сканирует кубик, чтобы определить его конфигурацию, затем информация поступает в алгоритм решения кубика Рубика Kociemba, и робот предпринимает соответствующие действия.

Правда, решённый кубик Рубика слегка изменяется: машине приходится проделывать в середине каждой из шести сторон отверстие, чтобы его собрать.

Робот работает только тогда, когда включены все четыре камеры. Поэтому во время подготовки к решению головоломки камеру закрывают кусочком бумаги, кубик вручную крутят, а затем дают роботу новое задание.

Головоломку кубик Рубика, который изначально назывался Магическим кубиком, придумал в 1974 году венгерский скульптор и профессор архитектуры Эрнё Рубик. Прошло четыре десятилетия, а он по-прежнему забавляет миллионы людей во всем мире.

Источник.


Материалы по теме:

14 гифок удивительных технологий

4 фантастических тренда с CES 2016

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

8 роботов, которые уже работают среди людей

Самые громкие изобретения 2015 года в области 3D-печати

Эта роборука решает за вас, кого лайкнуть в Тиндере

Видео по теме:

  • Фан
  • Роботы
  • Видео

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1

    Facebook* научила ИИ генерировать видео по текстовому описанию

  2. 2

    5 неочевидных замен Youtube для бизнеса

  3. 3

    Альтернативные инвестиции: что это и как они работают

  4. 4

    Автомобильный бизнес: как продавать эффективно?

  5. 5

    На каких tech-креаторов подписаться в российском TikTok?

ВОЗМОЖНОСТИ

09 октября 2022

«Будущее авиации 2022»

09 октября 2022

«Программирование на Python»

09 октября 2022

«Программирование на C++»

Все ВОЗМОЖНОСТИ

Новости

Павел Дуров в очередной раз посоветовал пользователям «держаться подальше от WhatsApp»

Новости

ФАС проверит маркетплейсы и ритейлеров после жалоб о завышенных ценах на армейское снаряжение

Новости

Менеджеры пунктов выдачи пожаловались на новые штрафы Wildberries за бракованный товар

Колонки

Должен ли работодатель содействовать военкоматам при вручении повестки работнику?

Колонки

Не только Binance.

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

MindCub3r по-русски — делаем робота, который может собрать кубик Рубика (статья обновлена) / Хабр

Не так давно обзавелся набором LEGO MINDSTORMS EV3 (31313) и с удивлением обнаружил, что в русскоязычном сегменте интернета довольно мало интересных материалов и инструкций по сборке и настройке роботов из этого набора. Решил, что нужно это дело исправлять.

Эта инструкция представляет собой вольный перевод материалов с официального сайта проекта MindCub3r и дополнена опытом самостоятельной сборки этого робота, способного собрать кубик Рубика меньше чем за 2 минуты.


Подробнее о LEGO MINDSTORMS EV3 можно почитать на этом сайте.

Вот, что у нас должно получится в итоге:

MindCub3r можно построить из одного комплекта Lego Mindstorms EV3 (31313, Home Edition).

Также вам понадобится инструкция по сборке и программное обеспечение, разработанное авторами проекта.

ВАЖНОЕ СООБЩЕНИЕ!!!

Буквально позавчера автор проекта объявил в своем ФБ, что подправил программное обеспечение для своего робота, и теперь оно работает со «штатной» прошивкой «кирпича» 1.06Н. На главной странице проекта эта информация также уже появилась, архив MindCub3r-v1p1a.zip, содержащий, среди прочего, и обновленную версию программы, уже доступен для загрузки. Загрузка и установка блока для датчика цвета по-прежнему необходима.

Дальнейший текст статьи исправлен с учетом последних изменений на сайте проекта!

Инструкцию по сборке MindCub3r смотрим или скачиваем здесь.

Прошивку (на момент написания статьи EV3-Firmware-V1.06H.bin) для кирпича скачиваем с официального сайта LEGO MINDSTORMS здесь.

Архив MindCub3r-v1p1a.zip с файлами проекта (MindCuber-v1p1.ev3, autorun.rtf и mc3solver-v1p1.rtf) качаем тут.

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

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

Если вы еще не обновили прошивку «кирпича» первым делом устанавливаем новую версию ПО для главного блока Mindstorms EV3:

1. Запускаем программное обеспечение LEGO MINDSTORMS EV3;

2. Выбираем ИнструментыОбновление встроенного ПО;

3. В появившемся диалоговом окне нажимаем «Просмотреть», находим предварительно закаченный файл EV3-Firmware-V1.06H.bin и жмем «Открыть»;

4. В диалоговом окне в таблице «Доступные файлы встроенного ПО» выбираем EV3-Firmware-V1.06H и жмем «Загрузить». Ждем окончания загрузки;

5. Перезагружаем главный блок (выключаем и снова включаем).

Далее устанавливаем прошивку для датчика цвета:

1. В ПО LEGO MINDSTORMS EV3 открываем новый пустой проект;

2. Выбираем ИнструментыМастер импорта блоков;

3. В появившемся диалоговом окне нажимаем «Просмотреть», находим предварительно загруженный файл ColorSensorRGB-v1.00.ev3b и жмем «Открыть»;

4. В диалоговом окне в таблице «Выбрать блоки для импорта» выбираем ColorSensorRGB-v1.00.ev3b и жмем «Импорт».

5. Для завершения установки закройте диалоговое окно и выйдите из программного обеспечения LEGO MINDSTORMS EV3.

Теперь самый ответственный момент — загрузка программы робота в кирпич:

1. Распаковываем предварительно загруженный архив MindCub3r-v1p1a.zip;

2. Запускаем ПО LEGO MINDSTORMS EV3;

3. Выбираем ФайлОткрыть проект, ищем файл MindCub3r-v1p1.ev3, распакованный из архива MindCub3r-v1p1.zip и жмем «Открыть»;

4. После открытия проекта загружаем его в «кирпич». Загружаем, но НЕ ЗАПУСКАЕМ!!!

5. Идем в ИнструментыОбозреватель памяти (Ctrl+I);

6. Выбираем (выделяем) во вкладке «Модуль» или «SD-карта» папку проекта «MindCub3r-v1p1»;

7. Нажимаем «Загрузить»;

8. Находим файл mc3solver-v1p1.rtf, распакованный из архива MindCub3r-v1p1a.zip и нажимаем «Открыть»;

9. Еще раз нажимаем «Загрузить», предварительно убедившись, что папка проекта «MindCub3r-v1p1» все еще выделена;

10. Находим файл InstallMC3-v1p1.rbf, распакованный из архива MindCub3r-v1p1a.zip и нажимаем «Открыть»;

Примечание: файл mc3solver-v1p1.rtf имеет текстовое расширение .rtf. Пожалуйста, не пытайтесь открыть этот файл с помощью текстового редактора.

11. Закройте диалоговое окно, выйдите из программы и перезагрузите модуль.

Последний этап — устанавливаем приложение MC3 Solver на главном модуле:

1. Включаем блок:

2. Находим во второй вкладке папку проекта MindCub3r-v1p1 (в памяти блока или на SD-карте):

3. Выбираем файл InstallMC3-v1p1 и нажимаем на центральную кнопку модуля для установки:

4. В третьей вкладке проверяем наличие установленного приложения MC3 Solver v1p1:


5. Перезагружаем блок.

6. В третьей вкладке блока запускаем приложение «MC3 Solver v1p1» для начала работы программы mc3solver-v1p1.rtf:

Всё! MindCub3r готов к использованию!

7. Запускаем программу в первой или во второй вкладке блока:

После запуска программы робот попросит вложить кубик («Insert cube») и начнет его сканировать датчиком цвета.

После сканирования робот ненадолго задумается и начнет сборку.

Удачное решение задачи ознаменуется радостным вращением кубика.

Вот, собственно, процесс работы робота:

Выше описан идеальный сценарий, на практике же все немного хуже — датчик может не правильно определить цвета — всего робот может провести 3 (три) цикла сканирования до того, как выдаст ошибку (Scan error). После этого нужно изъять кубик и снова вложить в робота. Причиной этому может быть или низкий заряд батареи модуля или «неправильный» кубик.

У меня иногда проходило по 3-5 повторов (3 цикла сканирования и одно изъятие) прежде чем робот принимался за сборку, но результат того однозначно стоит.

Если у вас остались вопросы, задавайте их в комментариях к статье, с удовольствием на них отвечу.

Робот, основанный на Raspberry Pi 4, собирает кубик Рубика менее чем за минуту

Блоги

pixelmanЗа пост начислено вознаграждение

Робот использует компьютерное зрение и умную инженерию, чтобы решить головоломку 1980-х годов

рекомендации

Известная на весь мир головоломка кубик Рубика была создана ещё в 1981 году, но многие люди так и не научились собирать его. На помощь в этом деле энтузиаст Андреа Фаверо создал робота для решения кубика Рубика. Робот работает на Raspberry Pi 4, использует камеру, некоторый код Python, два серводвигателя и шаговый двигатель и способен решить головоломку менее чем за одну минуту.

Андреа Фаверо поделился всем своим методом на Instructables, он использовал только готовые компоненты и 3D-печать (плюс немного фанеры), а не изготовленные на заказ печатные платы.

В роботе используется стандартная камера Raspberry Pi Camera v1.3 (модуль 5MP), которая подключается к порту CSI (камеры) платы с помощью ленточного. Детали, напечатанные на 3D-принтере, удерживают камеру и двигатели поверх фанерного корпуса, в котором находится плата Pi. Также есть кнопка включения / выключения и два ЖК-дисплея, которые показывают затраченное время и полезные сообщения, такие как «куб готов». Питание обрабатывается парой понижающих трансформаторов постоянного тока, превращая питание 20 В в более подходящее для Pi и двигателей.

Компьютерное зрение для Pi появились благодаря библиотекам Python CV2 (OpenCV) и Numpy. Анализ изображения с камеры определяет цвета и их расположение в развернутой модели куба.  Автоматический баланс белого камеры и усиление экспозиции, фиксируются, чтобы гарантировать согласованность возвращаемых цветов, а информация о цветных блоках передается алгоритму сборки кубика. Моторы заботятся о вращении куба по различным осям, удерживая нижний сегмент, чтобы можно было вносить изменения.

рекомендации

Для желающих собрать самим такого робота, Фаверо выложил подробное руководство по сборке. Самое сложное в данном руководстве, по заявлению автора, это сложный поиск самой платы Raspberry Pi 4, из-за текущего дефицита компонентов в мире.

Этот материал написан посетителем сайта, и за него начислено вознаграждение.

#робот

#raspberry pi

#raspberry

#кубик рубика

Материалы по теме

Эффективная реклама для вашего бизнеса

76 старых флагманов и других смартфонов Xiaomi 2017-2021 годов получили новую ОС Android 13

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

Есть ли смысл владельцам Ryzen 5 5600X переходить на новый Ryzen 5 7600X – обзор и игровые тесты

Старт продаж Ryzen 7000 обрушил цены на мощные геймерские процессоры в магазинах РФ

Танкисты из РФ активно используют кустарные способы защиты для повышения выживаемости техники

Zotac опубликовала цены на GeForce RTX 4090

Европа запретила гражданам РФ владеть криптовалютами – что ответит Binance и есть ли выход

Видеокарты NVIDIA сильно подорожают – выбираем 6 выгодных геймерских GPU пока не началось

Геймеры неприятно удивлены стоимостью ремейка Dead Space

Не все видеокарты одинаково хороши – как бренды заставляют нас переплачивать за воздух до 40% цены

NVIDIA GeForce RTX 4090 показывает более 500 кадров в секунду в Overwatch 2

Ведьмак 4, Ведьмак 5, Ведьмак 6 и продолжение Cyberpunk 2077 – большой анонс от CD Projekt Red

Защитная рамка Noctua предотвратит попадание термопасты в вырезы крышки процессоров AMD Ryzen 7000

Газпром выплатит огромные дивиденды держателям акций, но будущее компании печально

Межпланетная станция Юнона сделала самый подробный снимок луны Юпитера Европы

Первые тесты GeForce RTX 4080@16 Гб показали огромный отрыв от GeForce RTX 3090 Ti в 3DMark

В рекомендованных системных требованиях ремейка Dead Space прописались GeForce RTX 2070 и Core i5-11600K

Предполагаемая NVIDIA GeForce RTX 4080 16 ГБ оказалась примерно до 30% быстрее RTX 3090 Ti в 3DMark

Легендарные УАЗ «Буханка» оказались недостаточно российскими

NVIDIA и AMD ощутимо повысят цены на видеокарты и процессоры из-за требований TSMC

Ждуны тоже плачут – как перестать надеяться на скидки и купить правильную видеокарту уже сегодня

Евросоюз принял восьмой пакет санкций против Российской Федерации

Несколько крутых, но забытых стратегий, в которые стоит поиграть в 2022 году. Часть 24

Главные игры первой половины октября 2022 года

ERGO — народная криптовалюта и хороший вариант для майнинга.

Почему видеокарты AMD дешевле и быстрее, чем NVIDIA – 10 видеокарт в погоне за деньгами геймеров

10 малоизвестных, полезных, бесплатных и компактных утилит для Windows 10 и 11. Часть 6

Игры для фанатов «Дома Дракона»

Сбор кубика Рубика рукой робота

Мы обучили пару нейронных сетей собирать кубик Рубика рукой робота, похожей на человека. Нейронные сети полностью обучаются в моделировании с использованием того же кода обучения с подкреплением, что и в OpenAI Five, в сочетании с новой техникой, называемой автоматической рандомизацией доменов (ADR). Система может справляться с ситуациями, которых она никогда не видела во время обучения, например, когда ее толкает плюшевый жираф. Это показывает, что обучение с подкреплением — это не просто инструмент для виртуальных задач, но может решать проблемы физического мира, требующие беспрецедентной ловкости.

Читать бумагу
Смотреть все видео

Человеческие руки позволяют решать самые разные задачи. За последние 60 лет робототехники сложные задачи, которые люди выполняют с помощью фиксированной пары рук, требовали разработки специального робота для каждой задачи. В качестве альтернативы люди потратили много десятилетий, пытаясь использовать роботизированное оборудование общего назначения, но с ограниченным успехом из-за их высокой степени свободы. В частности, аппаратное обеспечение, которое мы здесь используем, не ново — рука-робот, которую мы используем, существует уже последние 15 лет, — но программный подход нов.

С мая 2017 года мы пытаемся обучить роботизированную руку, похожую на человека, собирать кубик Рубика. Мы поставили эту цель, потому что считаем, что успешное обучение такой роботизированной руки выполнению сложных манипуляционных задач закладывает основу для роботов общего назначения. Мы собрали кубик Рубика в симуляции в июле 2017 года. Но по состоянию на июль 2018 года мы могли манипулировать только блоком робота. Итак, мы достигли нашей первоначальной цели.


Полная сборка кубика Рубика. Это видео воспроизводится в реальном времени и никак не редактировалось.

Сборка кубика Рубика одной рукой — сложная задача даже для людей, и детям требуется несколько лет, чтобы развить ловкость, необходимую для ее овладения. Однако наш робот до сих пор не отточил свою технику, так как он собирает кубик Рубика в 60% случаев (и только в 20% случаев при максимально сложной сборке).

Наш подход

Мы обучаем нейронные сети собирать кубик Рубика в моделировании, используя обучение с подкреплением и алгоритм Коциембы для выбора шагов решения. [1] Рандомизация домена позволяет сетям, обученным исключительно моделированию, переходить к реальному роботу.

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

Самая большая проблема, с которой мы столкнулись, заключалась в том, чтобы создать среду в симуляции, достаточно разнообразную, чтобы отразить физику реального мира. Такие факторы, как трение, эластичность и динамика, невероятно трудно измерить и смоделировать для таких сложных объектов, как кубики Рубика или роботизированные руки, и мы обнаружили, что одной рандомизации предметной области недостаточно.

Чтобы преодолеть это, мы разработали новый метод под названием Автоматическая рандомизация доменов (ADR), который бесконечно создает все более сложные среды в моделировании. [2] Это освобождает нас от необходимости иметь точную модель реального мира и позволяет перенести нейронные сети, изученные в ходе моделирования, в реальный мир.

ADR начинается с единой нерандомизированной среды, в которой нейронная сеть учится собирать кубик Рубика. Когда нейронная сеть лучше справляется с задачей и достигает порога производительности, степень рандомизации домена автоматически увеличивается. Это усложняет задачу, поскольку теперь нейронная сеть должна научиться обобщать более рандомизированные среды. Сеть продолжает обучение до тех пор, пока снова не превысит порог производительности, после чего вступает в действие дополнительная рандомизация, и процесс повторяется.

ADR применяется к размеру кубика Рубика

Одним из рандомизируемых параметров является размер кубика Рубика (см. выше). ADR начинается с кубика Рубика фиксированного размера и постепенно увеличивает диапазон рандомизации по мере обучения. Мы применяем ту же технику ко всем другим параметрам, таким как масса куба, трение пальцев робота и материалы визуальной поверхности руки. Таким образом, нейронная сеть должна научиться собирать кубик Рубика во всех этих все более сложных условиях.

Автоматическая и ручная рандомизация доменов

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

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

Анализ

Тестирование на надежность

Используя ADR, мы можем обучать нейронные сети в моделировании, которое может собирать кубик Рубика на реальной руке робота. Это связано с тем, что ADR подвергает сеть бесконечному разнообразию рандомизированных симуляций. Именно это воздействие сложности во время обучения подготавливает сеть к переходу от моделирования к реальному миру, поскольку она должна научиться быстро идентифицировать и приспосабливаться к любому физическому миру, с которым она сталкивается.

Невозмутимый (для справки)

Резиновая перчатка

Связанные пальцы

Бланкетная окклюзия и возмущение

Возмущение плюшевого жирафа

Pen perturbation

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

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

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

Возникающее метаобучение

Мы считаем, что метаобучение, или обучение обучению, является важной предпосылкой для создания систем общего назначения, поскольку оно позволяет им быстро адаптироваться к меняющимся условиям среды. Гипотеза ADR заключается в том, что сети с расширенной памятью в сочетании с достаточно рандомизированной средой приводят к эмерджентное метаобучение , когда сеть реализует алгоритм обучения, который позволяет себе быстро адаптировать свое поведение к среде, в которой она развернута. [3]

флип (поворот куба таким образом, чтобы другой цвет был обращен вверх) для нашей нейронной сети при различных возмущениях, таких как сброс памяти сети, сброс динамики или разрыв соединения. Мы проводим эти эксперименты в моделировании, что позволяет нам усреднить результаты более 10 000 испытаний в контролируемых условиях.

Время успеха при очистке памяти сети
Время достижения успеха при изменении трения, массы или гравитации
Время до успеха, когда робот поврежден из-за поломки случайного соединения

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

Мы также измерили вероятность отказа и провели те же эксперименты для поворотов лица (поворот верхней грани на 90 градусов по часовой стрелке или против часовой стрелки) и обнаружили ту же схему адаптации. [4]

Понимание наших нейронных сетей

Визуализация наших сетей позволяет нам понять, что они хранят в памяти. Это становится все более важным по мере роста сложности сетей.

0:00

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

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

Задачи

Собрать кубик Рубика рукой робота по-прежнему непросто. В настоящее время наш метод позволяет собрать кубик Рубика в 20% случаев при использовании максимально сложной игры, требующей 26 поворотов лица. Для более простых скремблов, для отмены которых требуется 15 вращений, вероятность успеха составляет 60%. При падении кубика Рубика или достижении тайм-аута попытка считается неудачной. Однако наша сеть способна собрать кубик Рубика из любых начальных условий. Таким образом, если кубик выпал, его можно вернуть в руку и продолжить решение.

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

За кулисами: прототипы кубика Рубика

Чтобы оценить наш прогресс и сделать проблему решаемой, мы построили и спроектировали специальные версии кубиков в качестве трамплина на пути к окончательному решению обычного кубика Рубика. [5]

Прототипы кубика Рубика, слева направо: закрытый кубик, лицевой куб, полный куб, кубик Гикера, обычный кубик Рубика.

Прототип Положение + Ориентация Внутренние степени свободы (датчик)
Закрытый куб Видение 0 (без датчика)
Лицевой куб Фэйзспейс 2 (фазовое пространство)
Полный куб Фэйзспейс 6 (фазовое пространство)
Куб Гийкера Видение 6 (Встроенные датчики)
Обычный кубик Рубика Видение 6 (видение)

Следующие шаги

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

Если вы хотите помочь в создании все более универсальных систем искусственного интеллекта, будь то роботизированные или виртуальные, мы нанимаем вас!

Как собрать робота для сборки кубика Рубика на Raspberry Pi

BricKuber — это робот для сборки кубика Рубика с открытым исходным кодом, который вы можете собрать самостоятельно.

ПРИМЕЧАНИЕ. Этот проект зависит от внешних библиотек, которым требуются обновления.

Мы хотели построить робота, собирающего кубик Рубика, с помощью Raspberry Pi. Вместо скорости мы пошли по пути простоты: если у вас есть Raspberry Pi, комплект BrickPi и стандартный комплект LEGO Mindstorms EV3 или NXT, вы сможете легко пойти по нашим стопам.

Программное обеспечение написано на языке программирования Python. Вы можете увидеть весь исходный код на Github здесь.

Предыстория

Кубик Рубика недавно начал возвращаться. Изобретенная в 1974 году, это самая продаваемая игрушка в мире. Но их решение требует размышлений, усилий и умения. . . так почему бы не позволить это сделать роботу? В этом проекте мы берем Raspberry Pi, BrickPi и набор LEGO Mindstorms и строим робота, собирающего кубик Рубика. Просто поместите несобранный кубик Рубика в решатель, запустите программу python, и ваш кубик Рубика собран!

В проекте используется Pi для непосредственного сборки кубика Рубика. BrickPi3 берет несобранный кубик Рубика, а Raspberry Pi делает снимок каждой стороны кубика Рубика с помощью камеры Raspberry Pi. Pi создает текстовую карту цветных квадратов, которая показывает, где они расположены на кубе. После полного отображения куба Pi использует библиотеку python «kociemba», чтобы наметить ходы, необходимые для сборки кубика Рубика. Эта информация используется Pi и BrickPi3 для сборки кубика Рубика с помощью двигателей LEGO. Результат: собранный кубик Рубика.

BricKuber может собрать кубик Рубика менее чем за 2 минуты.

Инструменты и материалы

  • BrickPi3 — мы будем использовать BrickPi для управления моторами LEGO, которые собирают кубик Рубика.
  • Raspberry Pi — Pi будет выполнять обработку, фотографирование и управление BrickPi.
  • Raspberry Pi Camera — камера Pi сделает снимок несобранного кубика Рубика.
  • Ethernet-кабель — вам потребуется, чтобы ваша машина была подключена к Интернету. Если вы хотите сделать это через Wi-Fi, это тоже нормально!
  • SD-карта Raspbian for Robots — программное обеспечение, на котором работает Raspberry Pi. Он поставляется с большей частью программного обеспечения, необходимого для этого руководства. Вы также можете скачать программное обеспечение бесплатно.
  • Комплект LEGO Mindstorms EV3 (31313). Вам понадобится куча деталей LEGO, два больших двигателя, один серводвигатель и ультразвуковой датчик.
  • Кубик Рубика. Мы нашли здесь один, который довольно свободно вращается. Вы можете использовать практически любой кубик Рубика 9x9x9.

Собери

Сборка Солвера

Этот дизайн был вдохновлен дизайном MindCub3r для LEGO EV3. Чтобы собрать BricKuber, начните с сборки MindCub3r. Полные инструкции по сборке LEGO можно найти здесь.

Решатель кубика Рубика состоит из трех основных движущихся частей. Первая — это подставка для кубика Рубика. Второй — тасовщик, рука, которая используется для переворачивания кубика Рубика.

Наконец, мы добавляем руку с камерой. В оригинальном дизайне MindCubr он удерживал датчик цвета EV3 над кубиком Рубика. В нашем модифицированном дизайне он держит камеру Raspberry Pi над кубиком Рубика. Мы используем два двигателя LEGO Mindstorms, чтобы манипулировать кубом: первый находится под держателем, чтобы вращать куб, а второй перемещает рычаг тасования, чтобы вращать куб вокруг противоположной оси.

Сборка BrickPi3

Инструкции по сборке BrickPi3 можно найти здесь. Нам нужно будет собрать корпус, прикрепить BrickPi3, Raspberry Pi, камеру Raspberry Pi, добавить SD-карту и добавить батареи. Чтобы упростить настройку программного обеспечения, Raspbian для роботов поставляется с большей частью программного обеспечения, которое вам нужно уже установить. Вам понадобится SD-карта объемом не менее 8 ГБ, и вы захотите расширить диск, чтобы он соответствовал полному размеру SD-карты.

Прикрепите модуль BrickPi3

Добавляем BrickPi3 в сборку LEGO. Мы использовали «крылья» LEGO EV3, чтобы поддержать BrickPi3 и выровнять его с корпусом BricKuber. Это хороший шаг, чтобы добавить батареи 8XAA в блок питания и прикрепить блок питания BrickPi3 к сборке LEGO. Для программирования вы можете подключить BrickPi3 через USB к Raspberry Pi, однако для перемещения двигателей вам потребуется питание с помощью блока питания.

 

Подключение двигателей к BrickPi3

Подсоедините двигатель перемешивателя к порту двигателя «MD». Подсоедините двигатель базовой станции к порту «MA» на BrickPi3. Присоедините двигатель датчика камеры к порту «MC» (это меньший серводвигатель). Несмотря на то, что мы не будем перемещать камеру, вы можете отрегулировать положение камеры с помощью моторов.

Прикрепите камеру Raspberry Pi

Используя опору для камеры LEGO, прикрепите камеру. Маленькая черная линза камеры должна поместиться между двумя опорами балки LEGO. Закрепите камеру на опорах LEGO с помощью изоленты. Это хорошее время, чтобы убедиться, что камера находится в таком положении, чтобы иметь возможность захватить весь кубик Рубика. Вы можете сделать тестовый снимок с помощью команды raspistill

raspistill -o cam.jpg

Убедитесь, что куб правильно расположен по центру изображения.

Подготовка программного обеспечения

Вы можете использовать любую версию Raspbian или Raspbian для роботов, нашего пользовательского образа, который поставляется с уже установленным BrickPi3. Если вы используете стандартную версию Raspbian, вы можете установить библиотеки BrickPi3 с помощью команды

 sudo curl -kL dexterindustries. com/update_brickpi3 | bash 

На этом шаге будут установлены все библиотеки, необходимые для запуска BrickPi3 на образе Raspbian. Пропустите этот шаг, если вы используете Raspbian для роботов: BrickPi3 уже установлен.

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

sudo curl https://raw.githubusercontent.com/DexterInd/BrickPi3/master/Projects/BricKuber/install_brickuber.sh | bash

Для этого шага ваш BrickPi3 должен быть подключен к Интернету. Существует ряд библиотек, от которых зависит проект, в том числе некоторые важные библиотеки Дэниела Уолтона (@dwalton76) на Github, которые используются для сборки кубика Рубика.

Соберите кубик Рубика

Поместите несобранный кубик Рубика в подставку. Запустите команду

sudo python ~/Dexter/BrickPi3/Projects/BricKuber/BricKuber.py

Робот повернет куб каждой гранью, и камера сделает 6 снимков, по одному с каждой стороны куба. Raspberry Pi определит конфигурацию куба по шести картинкам. Конфигурация куба будет передана в библиотеку kociemba Python для поиска эффективного решения. Наконец, робот будет выполнять движения, чтобы собрать кубик Рубика!

 

 

 

Исходный код

Весь исходный код BricKuber можно найти в нашем репозитории github с открытым исходным кодом здесь.

В этом проекте используются следующие программные пакеты, установленные скриптом install_brickuber.sh :

  • rubiks-cube-tracker для преобразования изображения грани кубика Рубика в набор из девяти значений RGB.
  • rubiks-color-resolver для преобразования 54 наборов значений RGB в девять каждого из шести уникальных цветов.
  • kociemba за вычисление эффективного решения для сборки кубика Рубика.

 

Собери робота для сборки кубика Рубика на Raspberry Pi!

Если вы создадите BricKuber, мы будем рады поделиться им с нашим сообществом! Если у вас есть вопросы о BricKuber или любом другом нашем проекте, загляните сюда на форумы.

Робот OpenAI с искусственным интеллектом научился собирать кубик Рубика одной рукой

  • Технологии/
  • Искусственный интеллект/
  • Робот

/

Дактиль становится более ловким

Автор: Nick Statt / @nickstatt

Поделиться этой историей

Фото: OpenAI

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

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

Но для OpenAI достижение Dactyl приближает его на один шаг к столь желанной цели для более широкой индустрии искусственного интеллекта и робототехники: робот, который может научиться выполнять множество реальных задач без необходимости месяцами тренироваться, чтобы лет реального времени и без необходимости специального программирования.

Изображение: OpenAI

«Многие роботы могут очень быстро собирать кубики Рубика. Важное различие между тем, что они делали там, и тем, что делаем мы здесь, заключается в том, что эти роботы созданы специально для этой цели», — говорит Питер Велиндер, ученый-исследователь и руководитель отдела робототехники в OpenAI. «Очевидно, что вы не можете использовать того же робота или тот же подход для выполнения другой задачи. У команды робототехники OpenAI совсем другие амбиции. Мы пытаемся построить робота общего назначения. Подобно тому, как люди и наши человеческие руки могут делать множество вещей, а не только конкретную задачу, мы пытаемся создать что-то гораздо более общее по своим масштабам».

Велиндер ссылается на серию роботов, созданных за последние несколько лет, которые позволили собирать кубик Рубика далеко за пределы возможностей человеческих рук и разума. В 2016 году производитель полупроводников Infineon разработал робота специально для сборки кубика Рубика со сверхчеловеческой скоростью, и роботу удалось сделать это менее чем за одну секунду. Это побило тогдашний мировой рекорд менее чем за пять секунд. Два года спустя машина, разработанная Массачусетским технологическим институтом, решила куб менее чем за 0,4 секунды. В конце 2018 года японский канал на YouTube под названием Human Controller даже разработал собственный самособирающийся кубик Рубика с использованием напечатанного на 3D-принтере ядра, прикрепленного к программируемым серводвигателям.

Машины годами собирали кубик Рубика со сверхчеловеческой скоростью

Другими словами, робот, созданный для одной конкретной задачи и запрограммированный на максимально эффективное выполнение этой задачи, как правило, лучше человека, а сборка кубика Рубика что-то программное обеспечение давно освоил. Таким образом, разработка робота для решения куба, даже гуманоидного, не так уж примечательна сама по себе, и тем более с вялой скоростью, с которой работает Dactyl.

Но робот OpenAI Dactyl и программное обеспечение, на котором он работает, сильно отличаются по конструкции и назначению от специальной машины для решения кубов. Как говорит Велиндер, текущая робототехническая работа OpenAI не направлена ​​на достижение превосходных результатов в узких задачах, поскольку для этого требуется только разработать лучшего робота и соответствующим образом запрограммировать его. Это можно сделать без современного искусственного интеллекта.

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

Чтобы научиться собирать кубик Рубика одной рукой, OpenAI не запрограммировал Dactyl явно для сборки игрушки; бесплатное программное обеспечение в Интернете может сделать это за вас. Он также решил не программировать отдельные движения руки, поскольку хотел, чтобы она сама различала эти движения. Вместо этого команда робототехники поставила перед базовым программным обеспечением руки конечную цель решения перемешанного куба и использовала современный ИИ — в частности, разновидность глубокого обучения, основанного на стимулах, называемого обучением с подкреплением, — чтобы помочь ему на пути к самостоятельному решению. Такой же подход к обучению агентов ИИ лежит в основе того, как OpenAI разработала свой первоклассный Дота 2 бот.

Но до недавнего времени было гораздо проще обучить агента ИИ делать что-то виртуально — например, играть в компьютерную игру, — чем научить его выполнять задачу в реальном мире. Это связано с тем, что обучение программного обеспечения выполнению каких-либо действий в виртуальном мире может быть ускорено, так что ИИ может потратить на обучение десятки тысяч лет всего за месяцы реального времени благодаря тысячам высокопроизводительных процессоров и сверхвысоких технологий. -мощные графические процессоры, работающие параллельно.

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

Роботизированная рука OpenAI Dactyl оснащена программным обеспечением ИИ

Из-за ограничений на обучение и очевидных соображений безопасности используемые сегодня в коммерческих целях роботы не используют ИИ, а вместо этого запрограммированы с очень конкретными инструкциями. «Раньше к этому подходили, используя очень специализированные алгоритмы для решения задач, когда у вас есть точная модель как робота, так и среды, в которой вы работаете», — говорит Велиндер. «Для заводского робота у вас есть очень точные модели, и вы точно знаете среду, в которой работаете. Вы точно знаете, как он будет подбирать конкретную часть ».

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

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

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

Изображение: OpenAI

«Если вы тренируете что-то на реальном роботе, очевидно, что все, что вы изучаете, работает над тем, на чем вы действительно хотите развернуть свой алгоритм. Таким образом, это намного проще. Но алгоритмам сегодня нужно много данных. Чтобы обучить реального робота делать что-то сложное, нужен многолетний опыт», — говорит Велиндер. «Даже для человека требуется пара лет, а у людей есть миллионы лет эволюции, чтобы научиться управлять рукой».

Однако Велиндер говорит, что в симуляции обучение можно ускорить, как и в играх и других задачах, популярных в качестве эталонных тестов ИИ. «На обучение алгоритма уходит порядка тысячи лет. Но это займет всего несколько дней, потому что мы можем распараллелить обучение. Вам также не нужно беспокоиться о том, что роботы сломают или навредят кому-то, пока вы обучаете эти алгоритмы», — добавляет он. Тем не менее, исследователи в прошлом сталкивались со значительными проблемами, пытаясь заставить виртуальное обучение работать с физическими роботами. OpenAI заявляет, что является одной из первых организаций, которые действительно добились прогресса в этом отношении.

Когда ему дали настоящий куб, Дактиль применил свою подготовку и решил его самостоятельно, и он сделал это в различных условиях, для которых он никогда не был специально обучен. Это включает в себя сборку куба одной рукой в ​​перчатке, с двумя пальцами, связанными вместе, и в то время как участники OpenAI постоянно вмешивались в него, тыкая в него другими предметами и осыпая его пузырьками и кусочками бумаги, похожей на конфетти.

OpenAI обучал Dactyl в течение тысяч лет с помощью моделирования, прежде чем проверить его навыки в реальном мире

«Мы обнаружили, что при всех этих возмущениях робот по-прежнему мог успешно складывать кубик Рубика. Но на тренировках этого не произошло», — говорит Матиас Плапперт, коллега Велиндера, руководитель группы роботов OpenAI. «Надежность, которую мы обнаружили, когда попробовали это на физическом роботе, была для нас неожиданной».

Вот почему OpenAI считает недавно приобретенный навык Дактил одинаково важным как для совершенствования роботизированного оборудования, так и для обучения ИИ. Даже самые продвинутые роботы в мире, такие как человекоподобные и собачьи боты, разработанные лидером отрасли Boston Dynamics, не могут работать автономно, и им требуется обширное программирование для конкретных задач и частое вмешательство человека для выполнения даже основных действий.

OpenAI говорит, что Dactyl — это небольшой, но жизненно важный шаг на пути к созданию роботов, которые однажды смогут выполнять ручную работу или домашние дела и даже работать вместе с людьми, а не в замкнутых средах, без какого-либо явного программирования, регулирующего их действия.

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