2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Jest to druga wersja narzędzia kostki Rubika stworzona do rozwiązywania z zawiązanymi oczami. Pierwsza wersja została opracowana przez javascript, możesz zobaczyć projekt RubiksCubeBlindfolded1
W przeciwieństwie do poprzedniej, ta wersja wykorzystuje bibliotekę OpenCV do wykrywania kolorów i wprowadzania danych wejściowych oraz zapewnia lepszą technikę wizualizacji.
Największym problemem w tej najnowszej wersji jest wizualizacja wyjść, pozycje sekwencji są wyświetlane na rysowanym sześcianie po 1 na raz. Ponieważ sześcian ma kształt 3D, trudno jest wyświetlić jednocześnie wszystkie boki. Zobacz wyniki na moim kanale YouTube wideo YouTube
Używam kostki bez naklejek, wymaga to niestandardowego rozpoznawania, a większość kodów open source nie jest obsługiwana. Użyłem tego open source opracowanego przez Kim Koomen, który określa stałe obszary na ramie kamery, aby wykryć prawidłowe kolory projektu qbr sześcianów
Krok 1: Potrzebne komponenty
- Malina Pi
- kamerka internetowa
lub możesz użyć laptopa
Krok 2: Zależności
- Pyton 3
- pusta biblioteka
- Biblioteka OpenCV
$ sudo apt-get install python3-opencv
RubiksPakiet z zasłoniętymi oczami
$ pip3 zainstaluj Rubiks z zasłoniętymi oczami
Krok 3: Przygotowania
Najpierw musisz skalibrować wykrywanie kolorów. Kody kolorów HSV różnią się ze względu na oświetlenie, jakość i rozdzielczość kamery oraz same kolory kostki. W moim przypadku łączę światło białe i żółte, aby uzyskać prawidłowe wyniki.
Zaktualizuj funkcję get_color_name(hsv) na colordetection.py
Oryginalny kod źródłowy używa pakietu kociemba do rozwiązania kostki, rozwiązuje go, znajdując odwrotne kroki dowolnego zaszyfrowania. W tej wersji użyłem własnego pakietu do rozwiązywania problemów o nazwie RubiksBlindfolded, który został opublikowany na PyPI. Zobacz opis, aby wiedzieć, jak z niego korzystać RubiksBlindfolded
Krok 4: Użycie
Po zainstalowaniu wszystkich zależności i ustawieniu aparatu nadszedł czas na uruchomienie skryptu blindfolded.py
Najpierw musisz zeskanować kostkę we właściwych orientacjach. To jest struktura sześcianu, kolejność skanowania ścian nie jest istotna. Zauważ, że są to domyślne kolory ścian sześcianu, możesz je zmienić, aktualizując słownik notacji w skrypcie blindfolded.py
Aby wykonać skanowanie, naciśnij klawisz spacji, aby zapisać widok i klawisz ESC po zakończeniu
Po drugie, możesz zobaczyć sekwencje rozwiązań na konsoli i kontrolę parzystości, aby powiedzieć, czy musisz zastosować algorytm parzystości, czy nie
Po trzecie, zostanie wygenerowana nowa ramka, która wyświetli 2 narysowane sześciany dla sekwencji krawędzi i sekwencji narożników. Możesz użyć klawiszy strzałek w lewo i w prawo, aby przełączać się między elementami sekwencji, oraz klawiszy strzałek w górę iw dół, aby przełączać się między krawędzią a rogiem. jasnoszary kolor reprezentuje bieżącą sekwencję.
Możesz zobaczyć kolory bieżącego bufora, które zmieniają się dynamicznie za pomocą klawiszy strzałek. Kolory szare reprezentują kostkę docelową, a kolor różowy reprezentuje zamieniającą się twarz
Kod źródłowy
github.com/mn-banjar/blindfolded2