Spisu treści:

Rozwiązujący w czasie rzeczywistym kostkę Rubika z zasłoniętymi oczami za pomocą Raspberry Pi i OpenCV: 4 kroki
Rozwiązujący w czasie rzeczywistym kostkę Rubika z zasłoniętymi oczami za pomocą Raspberry Pi i OpenCV: 4 kroki

Wideo: Rozwiązujący w czasie rzeczywistym kostkę Rubika z zasłoniętymi oczami za pomocą Raspberry Pi i OpenCV: 4 kroki

Wideo: Rozwiązujący w czasie rzeczywistym kostkę Rubika z zasłoniętymi oczami za pomocą Raspberry Pi i OpenCV: 4 kroki
Wideo: Rozwiązanie ogromnej kostki Rubika 15X15 w rekordowym czasie 2024, Lipiec
Anonim

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

Stosowanie
Stosowanie
Stosowanie
Stosowanie

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

Zalecana: