Оглавление:

Решающая программа для куба Рубика вслепую в реальном времени с использованием Raspberry Pi и OpenCV: 4 шага
Решающая программа для куба Рубика вслепую в реальном времени с использованием Raspberry Pi и OpenCV: 4 шага

Видео: Решающая программа для куба Рубика вслепую в реальном времени с использованием Raspberry Pi и OpenCV: 4 шага

Видео: Решающая программа для куба Рубика вслепую в реальном времени с использованием Raspberry Pi и OpenCV: 4 шага
Видео: Боковой хват: часть 12. Нижние пары. Скромный угол 2024, Ноябрь
Anonim

Это вторая версия кубика Рубика, предназначенная для решения задач с завязанными глазами. 1-я версия была разработана javascript, вы можете увидеть проект RubiksCubeBlindfolded1

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

Самая большая проблема в этой новейшей версии - визуализация выходных данных, элементы последовательности отображаются на нарисованном кубе по 1 разу. Поскольку куб представляет собой трехмерную фигуру, трудно отобразить все стороны одновременно. Смотрите результаты на моем канале YouTube Видео на YouTube

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

Шаг 1. Необходимые компоненты

  • Raspberry Pi
  • вебкамера

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

Шаг 2: зависимости

  • Python 3
  • библиотека numpy
  • Библиотека OpenCV

$ sudo apt-get install python3-opencv

РубиксПакет с завязанными глазами

$ pip3 установить RubiksBlindfolded

Шаг 3: Подготовка

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

Обновите функцию get_color_name (hsv) на colordetection.py

Исходный исходный код использует пакет kociemba для решения куба, он решает, находя обратные шаги любого скремблирования. В этой версии я использовал свой собственный пакет решения под названием RubiksBlindfolded, опубликованный на PyPI. Смотрите описание, чтобы узнать, как его использовать RubiksBlindfolded

Шаг 4: Использование

использование
использование
использование
использование

После установки всех зависимостей и настройки камеры самое время запустить скрипт blindfolded.py.

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

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

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

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

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

Исходный код

github.com/mn-banjar/blindfolded2

Рекомендуемые: