Inhoudsopgave:

Realtime Rubik's Cube geblinddoekte oplosser met Raspberry Pi en OpenCV - Ajarnpa
Realtime Rubik's Cube geblinddoekte oplosser met Raspberry Pi en OpenCV - Ajarnpa

Video: Realtime Rubik's Cube geblinddoekte oplosser met Raspberry Pi en OpenCV - Ajarnpa

Video: Realtime Rubik's Cube geblinddoekte oplosser met Raspberry Pi en OpenCV - Ajarnpa
Video: Rubik’s Cube Last Step Solving [Very Difficult] 2024, November
Anonim

Dit is de 2e versie van Rubik's kubustool gemaakt om geblinddoekt op te lossen. De 1e versie is ontwikkeld door javascript, u kunt het project RubiksCubeBlindfolded zien1

In tegenstelling tot de vorige, gebruikt deze versie de OpenCV-bibliotheek om de kleuren te detecteren en de invoer in te voeren, en biedt een betere visualisatietechniek.

Het grootste probleem in deze nieuwste versie is de visualisatie van outputs, de sequentie-items worden op de getekende kubus 1 per keer weergegeven. Omdat de kubus een 3D-vorm is, is het moeilijk om alle zijden tegelijk weer te geven. Bekijk de resultaten op mijn YouTube-kanaal YouTube-video

Ik gebruik een stickerloze kubus, dit heeft een aangepaste herkenning nodig en de meeste open source-codes worden niet ondersteund. Ik gebruikte deze open source, ontwikkeld door Kim Koomen, die vaste gebieden op het cameraframe specificeert om de juiste kleuren van de kubusvlakken qbr-project te detecteren

Stap 1: Benodigde onderdelen

  • Raspberry Pi
  • webcam

of u kunt uw laptop gebruiken

Stap 2: Afhankelijkheden

  • Python 3
  • numpy bibliotheek
  • OpenCV-bibliotheek

$ sudo apt-get install python3-opencv

RubiksGeblinddoekt pakket

$ pip3 installeer RubiksBlindfolded

Stap 3: Voorbereidingen

U moet de kleurdetectie vooraf kalibreren. De HSV-kleurcodes variëren vanwege de belichting, de camerakwaliteit en resolutie en de kubuskleuren zelf. In mijn geval combineer ik witte en gele lichten om correcte resultaten te krijgen.

Update get_color_name(hsv) functie op colordetection.py

De originele broncode gebruikt het kociemba-pakket om de kubus op te lossen, het wordt opgelost door de omgekeerde stappen van elke scramble te vinden. In deze versie gebruikte ik mijn eigen oplossingspakket genaamd RubiksBlindfolded dat op PyPI werd gepubliceerd. Zie de beschrijving om te weten hoe je het moet gebruiken RubiksBlindfolded

Stap 4: Gebruik:

Gebruik
Gebruik
Gebruik
Gebruik

Nadat je alle afhankelijkheden hebt geïnstalleerd en je camera hebt ingesteld, is dit het moment om het blindfolded.py-script uit te voeren

Eerst moet je je kubus in de juiste richting scannen. Dit is de kubusstructuur, de volgorde van het scannen van de vlakken is niet belangrijk. Merk op dat dit de standaardkleuren zijn van de kubusvlakken, u kunt ze wijzigen door het notatiewoordenboek bij te werken in het blindfolded.py-script

Om de scan te maken, drukt u op de spatiebalk om de weergave en de ESC-toets op te slaan nadat u klaar bent

Ten tweede kunt u de oplossingsreeksen op de console zien en de pariteitscontrole om u te vertellen of u het pariteitsalgoritme moet toepassen of niet

Ten derde wordt een nieuw frame gegenereerd dat 2 getekende kubussen weergeeft voor de volgorde van de randen en de volgorde van de hoeken. U kunt de linker- en rechterpijltoetsen gebruiken om tussen de volgorde-items te schakelen, en de pijltoetsen omhoog en omlaag om te schakelen tussen de rand en de hoek. de lichtgrijze kleur vertegenwoordigt de huidige reeks.

U kunt de kleuren van de huidige buffer zien die dynamisch veranderen met de pijltjestoetsen. Grijze kleuren vertegenwoordigen het doelkubusje en roze kleur staat voor het wisselende gezicht

Broncode

github.com/mn-banjar/blindfolded2

Aanbevolen: