Мазмұны:

Raspberry Pi мен OpenCV көмегімен нақты уақыттағы Рубик кубының көзін байлаған шешуші: 4 қадам
Raspberry Pi мен OpenCV көмегімен нақты уақыттағы Рубик кубының көзін байлаған шешуші: 4 қадам

Бейне: Raspberry Pi мен OpenCV көмегімен нақты уақыттағы Рубик кубының көзін байлаған шешуші: 4 қадам

Бейне: Raspberry Pi мен OpenCV көмегімен нақты уақыттағы Рубик кубының көзін байлаған шешуші: 4 қадам
Бейне: Урок №10. Распознавание и отслеживание объектов по форме. Beyond Robotics 2024, Қараша
Anonim

Бұл көзді байлап шешуге арналған кубик Рубик құралының 2 -ші нұсқасы. Бірінші нұсқа javascript арқылы жасалған, сіз RubiksCubeBlindfolded1 жобасын көре аласыз

Бұрынғысынан айырмашылығы, бұл нұсқа түстерді анықтау және кірістерді енгізу үшін OpenCV кітапханасын пайдаланады және визуалды жақсарту техникасын ұсынады.

Бұл жаңа нұсқадағы ең үлкен мәселе - бұл шығуды визуализациялау, реттілік элементтері сызылған текшеде бір уақытта көрсетіледі. Текше 3D пішінді болғандықтан, барлық жағын бір уақытта көрсету қиын. Нәтижелерді YouTube -тегі YouTube каналымдағы бейнені қараңыз

Мен жапсырмасыз текшені қолданамын, бұл арнайы тануды қажет етеді және көптеген ашық бастапқы кодтарға қолдау көрсетілмейді. Мен Kim Koomen әзірлеген ашық көзді қолдандым, ол qbr жобасының текшесінің дұрыс түстерін анықтау үшін камера жақтауында бекітілген аймақтарды көрсетеді.

1 -қадам: Қажетті компоненттер

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

немесе ноутбукты пайдалануға болады

2 -қадам: тәуелділіктер

  • Python 3
  • numpy кітапханасы
  • OpenCV кітапханасы

$ sudo apt-get install python3-opencv

RubiksBlindfolded пакеті

$ pip3 RubiksBlindfolded орнатыңыз

3 -қадам: дайындық

Түсті анықтауды бастапқы қадам ретінде калибрлеу қажет. HSV түс кодтары жарықтандыруға, камераның сапасы мен ажыратымдылығына және текше түстеріне байланысты өзгереді. Менің жағдайда дұрыс нәтиже алу үшін ақ және сары шамдарды біріктіремін.

Colordetection.py сайтындағы get_color_name (hsv) функциясын жаңартыңыз

Бастапқы бастапқы код текшені шешу үшін kociemba пакетін қолданады, ол кез келген скрамлдың кері қадамдарын табу арқылы шешіледі. Бұл нұсқада мен PyPI -де жарияланған RubiksBlindfolded деп аталатын жеке шешім пакетін қолдандым. Оны қалай пайдалану керектігін білу үшін сипаттаманы қараңыз

4 -қадам: Қолдану

Қолданылуы
Қолданылуы
Қолданылуы
Қолданылуы

Барлық тәуелділіктерді орнатып, камераны орнатқаннан кейін, бұл blindfolded.py сценарийін іске қосатын уақыт

Алдымен текшені дұрыс бағытта сканерлеу қажет. Бұл текше құрылымы, беттерді сканерлеу тәртібі маңызды емес. Бұл текше беттерінің әдепкі түстері екеніне назар аударыңыз, оларды blindfolded.py сценарийіндегі белгілер сөздігін жаңарту арқылы өзгертуге болады.

Сканерлеу үшін бос орын пернесін басып, көріністі сақтаңыз және аяқтағаннан кейін ESC пернесін басыңыз

Екіншіден, сіз консольдегі шешімдер тізбегін көре аласыз және паритет алгоритмін қолдану қажет пе, жоқ па, соны тексереді.

Үшіншіден, жиектілік пен бұрыштық реттілік үшін 2 сызылған текшені көрсететін жаңа кадр жасалады. Кезек элементтері арасында ауысу үшін сол және оң жақ көрсеткі пернелерін, ал жиек пен бұрыш арасында ауысу үшін жоғары және төмен көрсеткі пернелерін пайдалануға болады. ақшыл сұр түс ағымдағы ретті білдіреді.

Көрсеткі пернелер көмегімен динамикалық түрде өзгеретін ағымдағы буфердің түстерін көруге болады. Сұр түстер мақсатты текшені, ал қызғылт түс - ауыстырылатын бетті білдіреді

Бастапқы код

github.com/mn-banjar/blindfolded2

Ұсынылған: