[MOC] Rubik Cube Solver

Mindstorms, WeDo, Lego Digital Desinger, Stud.io

Moderatorzy: Mod Team, Mod Team

Autor
Wiadomość
Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

[MOC] Rubik Cube Solver

#1 Post autor: Firan »

Miesiąc temu zacząłem budować robota, który stosunkowo szybko (do innych tego typu robotów) ułoży Kostkę Rubika. Nie uda mi się zrobić tego tak szybko jak Cubestormer v3, czyli 3-4 sekundy, ale poniżej 30 sekund powinno się udać. Na początku planowałem użyć do sterowania 4 ramionami 2 jednostek EV3 i jednej NXT do obsługi dodatkowych opcji tj. windy, która podniesie kostkę do odpowiedniego poziomu (takiego, na jakim ramiona mogą ładnie zamknąć się na kostce).

Do tej pory natrafiłem od początku na kilka problemów:

1) Przeskakujące zębatki mimo tego, że dałem przełożenie na maksymalną moc, a nie prędkość. Zawiesiłem początkowo ramiona na obrotnicach nowego typu, takie jak w 42082, ale tam strasznie łatwo przeskakiwały zębatki. Mimo tego, że dałem najmniejszą zębatkę na największą, nadal były trzaski. Później zmieniłem obrotnicę na taką starego typu jak np. w 8043 i już było dużo lepiej, ale nadal zdarzały się niepożądane przeskoki. Dodałem jeszcze pod obrotnicą dodatkowe zębatki żeby trzymały poziom i dociskały obrotnicę do zębatki napędowej, ale to też było mało. Rozwiązanie w tym przypadku nie dotyczyło samego Lego. Okazało się, że mimo iż mam licencjonowaną kostkę, to stawia ona tak ogromny opór, że nie jest polecana do tak zwanego speedcubingu. Po zmianie kostki na Moyu Weilong problem odpadł.

2) Jakich klocków użyć do zakończeń ramion, które trzymają kostkę? Według mnie fajnym rozwiązaniem było użycie tych gumek żeby odpowiednio docisnąć ramiona. Szczerze mówiąc działało to dobrze, ale niestety precyzja obrotu była zbyt mała. Rozbieżność +-2-3 stopnie powodowała problemy w kolejnych ruchach. Rozwiązaniem był twardy chwyt. Mimo tego, że nie ma gumek, trzyma się w miarę stabilnie. Czasami zdarzały się przesunięcia względem środka systemu, ale dałem slopy 1x2, które wyrównują pozycję kostki.

3) Jak zrobić precyzyjny obrót ścianki o 90, 180 i -90 stopni? Okazało się, że nie można liczyć na miernik obrotu w stopniach w motorze EV3. Czasami zatrzymywał się w dobrym miejscu, a czasami nie - zależało to od niejednolitego oporu, jaki mogła postawić kostka. Pomyślałem, że umieszczę na wierzchołkach 0, 90, 180 i 270 stopni tile w kolorach białym i czerwonym i zatrzymam motor, gdy sensor koloru znajdzie zadany kolor. Okazało się, że też nie działa to idealnie. Na 10 prób, jedna albo dwie kończyły się niepowodzeniem. W każdym razie nie można było też użyć 100% prędkości obrotu, bo wtedy sensor nie nadążał rozpoznawać koloru, gdy płytka była centralnie pod nim. Ostatecznym prawidłowym rozwiązaniem okazało się użycie tego samego sensora, ale w trybie odczytu odbitego światła. Obrót może być teraz wykonywany z prędkością 100% i we wszystkich próbach obrót kończy się w tym samym miejscu.

4) Mimo tego, że pierwsze 3-4 ruchy były w miarę dobre, okazywało się, że kolejne gubią już kilka milimetrów, bo chwyt nie wypadał w tym samym miejscu, co prowadziło do gubienia synchronizacji. Problemem było skoszenie całości konstrukcji mimo dosyć sztywnego pospinania. Dodanie płytki konstrukcyjnej 48x48 rozwiązało problem.

5) Podczas obrotu wokół własnej osi (dwa ramiona otwarte, dwa obracają się w tym samym kierunku) kostka wypadała z ramion. Nie było tego problemu z gumowymi zakończeniami, ale jak już ustaliłem, przeszkadzało to w precyzyjnym przekręcaniu ścianek. Jako, że chwyt jest dwupunktowy i czasami niezbyt silny, kostka wyślizgiwała się. Pomyślałem, że spróbuję dodać jakieś dodatkowe łapki, które przytrzymają kostkę. Problem w tym, że już nie za bardzo było miejsce na wysuwające się siłowniki śrubowe (te małe), a dodatkowe chwytaki musiały być wysuwane, żeby nie przeszkadzać podczas obrotów prostopadle położonych do nich ramion. Wpadłem na "szalony" pomysł dorzucenia do systemu siłowników pneumatycznych, które nie muszą być podłączone do żadnych przekładni, tylko wężyków pneumatycznych. Dorzuciłem więc dwa air tanki i kompresor z 4 małymi pompkami. Jako, że nie za bardzo podobało mi się rozwiązanie windy na siłownikach śrubowych, zamieniłem je na pneumatyczne. Teraz kostka nie wypada podczas obrotu wokół własnej osi, ale zastanawiam się czy wężyki od pneumatyki nie będą się plątały blokując system.

6) Co z wężykami? Dzielnie muszę teraz rozwiązać problem, który sam sobie stworzyłem. Chciałem pierwotnie puścić je przez środek obrotnicy, ale nie ma tam już tyle miejsca na 4 wężyki 4mm, bo przechodzi przez nią też duży siłownik, który ściska ramiona na kostce. Puściłem je więc po bokach każdego z ramion, ale już widzę, że spaghetti jest imponujące w środku układu. Ten problem aktualnie jest do rozwiązania.

Mimo tego, że na razie mogę pokazać tylko działające fragmenty, chciałem zaprezentować wam mój projekt w fazie WIP.

Do tej pory władowałem tutaj 3 komputery EV3, 1 NXT, 13 motorów, 4 sensory kolorów, masę kabli i wężyków, 12 siłowników pneumatycznych, 4 śrubowe.

Obrazek

Ostatnio zmieniony 2020-05-29, 04:49 przez Firan, łącznie zmieniany 3 razy.

Jellyeater
VIP
Posty: 2363
Rejestracja: 2014-03-16, 16:34
Lokalizacja: Warszawa
brickshelf: Proszę uzupełnić
Kontakt:

 

#2 Post autor: Jellyeater »

Zapowiada się ciekawie. Czekam, aż zacznie układać.
Ile by nie było to i tak jest za mało.
Szacunek do klocków, nienawiść do COBI, tak zostałem wychowany.
foto

Awatar użytkownika
Atros
VIP
Posty: 801
Rejestracja: 2009-04-08, 19:03
Lokalizacja: Warszawa
brickshelf: Atrx
Kontakt:

 

#3 Post autor: Atros »

Cel 30 sekund brzmi świetnie - kibicuję projektowi. Maszyna wygląda zacnie.
Sam kilka late temu też podszedłem do tematu. Za punkt honoru wyznaczyłem sobie samodzielne napisanie algorytmu ale niestety nie starczyło mi zapału.
Hardware i fragment aplikacji do skanowania kostki za pomocą sensorów koloru oraz ramię do manipulacji kostką miałem gotowe. Wszystko działało powtarzalnie ale układanie kostki trwałoby z kilka minut.

A ty jak planujesz podejść do algorytmu, weźmiesz jakiś gotowy czy sam napiszesz? Obliczanie będzie na EV3 czy na PC? W jakim języku piszesz?

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#4 Post autor: Firan »

Atros pisze:Cel 30 sekund brzmi świetnie - kibicuję projektowi. Maszyna wygląda zacnie.
Sam kilka late temu też podszedłem do tematu. Za punkt honoru wyznaczyłem sobie samodzielne napisanie algorytmu ale niestety nie starczyło mi zapału.
Hardware i fragment aplikacji do skanowania kostki za pomocą sensorów koloru oraz ramię do manipulacji kostką miałem gotowe. Wszystko działało powtarzalnie ale układanie kostki trwałoby z kilka minut.

A ty jak planujesz podejść do algorytmu, weźmiesz jakiś gotowy czy sam napiszesz? Obliczanie będzie na EV3 czy na PC? W jakim języku piszesz?
Użyję algorytmu Herberta Kociemby, bo dzięki temu kostkę rozwiązuje się w maksymalnie 17 ruchach. Już sprawdziłem, że cały ruch nie będzie trwał dłużej niż 2 sekundy. Obliczanie będzie na smartfonie. Apka Androidowa pisana w Kotlinie. Ruchy będą zrobione jako mini skrypty w Scratchu i będą odpalane przez bluetooth.

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#5 Post autor: Firan »



Update: Obracanie kostki wokół własnej osi - pierwsze udane próby.
Ostatnio zmieniony 2020-05-29, 04:50 przez Firan, łącznie zmieniany 1 raz.

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#6 Post autor: Firan »



"No i wylądował". Pierwszy działający prototyp już gotowy. Jak widać jeszcze nie skanuje kostki automatycznie, ale za to układa dosyć szybko :)

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#7 Post autor: Firan »

Jeszcze wideo z ekranu telefonu podczas skanowania:

[youtube]https://youtube.com/watch?v=_qZxB027504[/youtube]
Ostatnio zmieniony 2020-05-29, 06:53 przez Firan, łącznie zmieniany 1 raz.

Awatar użytkownika
eric trax
Administrator
Posty: 2454
Rejestracja: 2011-02-28, 20:30
Lokalizacja: Wrocław
brickshelf: erictrax

 

#8 Post autor: eric trax »

Gruby projekt. Jak sobie pomyślę ile pracy wymaga przygotowanie i oprogramowanie takiej maszyny to mi się słabo robi. Należy się 100 punktów za samą determinację :D
Na warsztacie:
- Grimme Varitron 270 - 10%
.

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#9 Post autor: Firan »

eric trax pisze:Gruby projekt. Jak sobie pomyślę ile pracy wymaga przygotowanie i oprogramowanie takiej maszyny to mi się słabo robi. Należy się 100 punktów za samą determinację :D
Dzięki. Już mi się trochę nudziło budowanie klasyków z instrukcją, więc zrobiłem MOCa. Pod koniec projektu każda mała zmiana w konstrukcji zajmowała mi godziny, bo praktycznie za każdym razem musiałem robić kalibrację ramion, a jak już chciałem to przetestować to akurat okazywało się, że padły baterie w którymś z 4 kontrolerów (niby miałem 1 nadmiarowy komplet, ale nie przemyślałem wymiany ogniw i musiałem odłączać z kostki wszystkie kable - a było co odłączać, bo zastosowałem tutaj tzw. daisy chain, czyli jedna z kostek Mindstorms była masterem, a reszta slave'ami po usb). Oczywiście pod koniec wpadłem na pomysł jak można delikatnie zmienić zamykanie ramion, ale jak pomyślałem ile dni zajmie mi rozbieranie i składanie tego od nowa, to już sobie darowałem. Determinacji dodawał też fakt, że mój pracodawca postanowił pochwalić się moim projektem na wszystkich social mediach jak był jeszcze w 1/3 ukończenia no i z "chillowania przy piwku wieczorami" zamieniło się to w poważną rzecz :D

charakternik
Posty: 20
Rejestracja: 2016-03-06, 12:18
Lokalizacja: Olsztyn
brickshelf: Proszę uzupełnić

 

#10 Post autor: charakternik »

Zawsze jak widzę coś takiego, jestem pełen podziwu jak można być mądrym :-) pamiętam, jak przeglądałem kiedyś różne prace na forum i wypatrzyłem MOC z któregoś roku- Krosno tkackie- było niesamowite- to też jest!

Awatar użytkownika
Firan
Posty: 83
Rejestracja: 2013-12-01, 13:42
Lokalizacja: Warszawa
brickshelf: Firan

 

#11 Post autor: Firan »

Tutaj po prostu spędziłem dużo czasu na próby, odkrywanie ograniczeń i poprawę działania. I tak kilkadziesiąt iteracji aż zadziałało sensownie :)

wielkamucha
Posty: 798
Rejestracja: 2015-01-11, 20:14
Lokalizacja: Piękne Księstwo Warszawskie
brickshelf: Proszę uzupełnić

 

#12 Post autor: wielkamucha »

eric trax pisze:Gruby projekt. Jak sobie pomyślę ile pracy wymaga przygotowanie i oprogramowanie takiej maszyny to mi się słabo robi. Należy się 100 punktów za samą determinację :D
Podpisuję się wszystkimi czterema kończynami. Sam nie potrafię ułożyć kostki i w 1000 ruchach, a ten zbudował maszynę, która zrobi to w kilkunastu...

Opad kopary.

ODPOWIEDZ