2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Это вторая версия кубика Рубика, предназначенная для решения задач с завязанными глазами. 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