Skocz do zawartości

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Bardzo dobra mysz - mój robot miał okazję być oponentem dla Stuarta na zawodach Robotic Tournament 2012 i byłem pod wrażeniem jak ładnie i równo sobie jeździł nie dotykając ścian. To zresztą był jedny robot na zawodach, który nie dotykał ścian.

A to wycięcie pod baterią to czemuś ma służyć, oprócz redukcji masy? Bo tak ciekawie wygląda i mnie zastanawia, dlaczego akurat tak, ale nic mi nie przychodzi do głowyo oprócz redukcji masy.

Udostępnij ten post


Link to post
Share on other sites

Mysz świetna! Dlaczego zamieniłeś czujniki Sharpa samoróbki? No i dołączam się do pytania kolegi wyżej, czemu ma służyć to wycięcie pod baterią? Tylko redukcji masy?

Udostępnij ten post


Link to post
Share on other sites

nie widze za dobrze, bo ogladam na telefonie, ale czy to aby nie miejsce na koszyk z bateriami?🙂

Udostępnij ten post


Link to post
Share on other sites

W jakim sensie te czujniki są "analogowe"? Bazujesz na współczynniku odbicia i każdorazowo kalibrujesz odczyty do rodzaju ściany?

W Rybniku chyba nie było potrzebne mapowanie labiryntu, wystarczyła "reguła prawej dłoni", prawda? Czy próbowałeś wykorzystać jednak jakieś ciekawsze algorytmy znajdowania drogi?

Dlaczego mając tak szybki procesor zatrzymujesz się w każdej komórce, nawet na prostych?

Udostępnij ten post


Link to post
Share on other sites
A to wycięcie pod baterią to czemuś ma służyć, oprócz redukcji masy?

Tak, w założeniu miało to przesunąć środek ciężkości nieco bliżej osi kół.

Dlaczego zamieniłeś czujniki Sharpa samoróbki?

Przy cyfrowych sharpach mamy tylko informacje czy w danym promieniu znajduje się przeszkoda. Teraz mam dużo większe możliwości korekcji względem ścian, bo znam orientacyjnie odległość do nich.

W jakim sensie te czujniki są "analogowe"? Bazujesz na współczynniku odbicia i każdorazowo kalibrujesz odczyty do rodzaju ściany?

Mniej więcej tak to wygląda. Robię odczyt na fototranzystorze bez zapalonego leda, potem zaświecam leda i robię pomiar z zapalonym ledem. Różnica między pomiarami to orientacyjna odległość do ściany.

Na samym początku, przed startem wykonuje pomiary przy jakich odczytach mysz ma wiedzieć że znajduje się w środku komórki.

W Rybniku chyba nie było potrzebne mapowanie labiryntu, wystarczyła "reguła prawej dłoni", prawda? Czy próbowałeś wykorzystać jednak jakieś ciekawsze algorytmy znajdowania drogi?

Chyba każdy labirynt który był dotychczas w Polsce można było rozwiązać reguła prawoskrętnej. Mapowanie i przejazd tylko po wybranych polach zmniejsza czas który marnujemy na niepotrzebne wjeżdżanie do ślepych uliczek.

Dlaczego mając tak szybki procesor zatrzymujesz się w każdej komórce, nawet na prostych?

Procesor mógłbym taktować przypuszczalnie nawet 10MHz i nie brakowało by mocy obliczeniowej, a przy 20MHz już na pewno. Robienia skrętów po łuku jeszcze nie opanowałem.

Jeżeli chodzi o zatrzymywanie na prostej to pewnie masz na myśli korekcje względem ścian i zapewnia Cię że nie jest to zatrzymywanie, tylko drgania spowodowane niewystarczająco dobrym algorytmem zapobiegania uderzeniu w ścianę 🙂

Udostępnij ten post


Link to post
Share on other sites

Ja odpowiem częsciowo za kolegę - "samoróbki" są lepsze od tych małych sharpów, bo sharpy są cyfrowe, a w MM ważna jest dokładność, bo same czujniki nie są tylko do oceny czy po lewej/prawej/na wprost jest ściana czy nie, tylko różnica w (analogowym) odczycie odbitego światła pomiędzy lewym a prawym czujnikiem służy do pozycjonowania robota w korytarzu (co jest dodatkowo wspomagane enkoderami).

A co do zawodów, to zgadza się, w Rybniku labirynt można było przejść regułą lewej/prawej dłoni, co nie znaczy, że algorytmy znajdowania krótszej ścieżki nie mają sensu - przeciwnie, były 4 przejazdy, więc można było z tego skorzystać. W Stuarcie jest zaimplementowany algorytm floodfill, który akurat w Rybniku nie był konieczny, ale kolega po prostu pisał go już wcześniej na inne zawody, gdzie labirynt był bardziej skomplikowany do przejścia (zawierał pętle). Zamiast floodfill, można było użyć algorytmu wielokrotnej eliminacji ślepych zaułków. W skrócie chodzi o to, że robot jedzie regułą prawej/lewej ręki i zapamiętuje na jakich skrzyżowaniach jak skręcił. Jeśli jadąc regułą lewej dłoni, skręcił w uliczkę w lewo, po czym dojechał do jej końca, zawrócił i znów skręcił w lewo na tym samym skrzyżowaniu co poprzednio, to taki ciąg LZL (Z-to zawrót o 180st), można zamienić na S (jazda na wprost). Gdy w pierwszym przejeździe, robot objedzie cały labirynt metodą lewej dłoni, wykonywana jest taka eliminacja (skrócenie tego ciągu zakrętów). Cały proces skracania można powtarzać na danym ciągu, aż nic już nie będzie się dało skrócić. Wtedy uzyskana trasa będzie optymalna, tzn najkrótsza. No ale na zawodach żaden z robotów nie wykorzystał ani tego algorytmu, ani floodfill (Stuartowi nie udało się zmapować labiryntu, bo zahaczył o ściankę i po dotknięciu go przez właściciela, pogubił się w mapowaniu).

[ Dodano: 28-03-2012, 19:55 ]

Ach, 2 minuty się spóźniłem;)

Chyba każdy labirynt który był dotychczas w Polsce można było rozwiązać reguła prawoskrętnej.

Nieprawda - na innych zawodach są labirynty których nie da się tak przejechać - właściwie tylko w Rybniku chyba był taki. Musiałbym sprawdzić dokładnie, ale widziałem już w PL labirynt którego tak nie przejedziesz, bo zawiera pętle.

[ Dodano: 28-03-2012, 20:04 ]

Na RA2011 (na którym byłeś) w regulaminie jest info:

http://lirec.ict.pwr.wroc.pl/~arena/download/R_micromouse_pl.pdf

Artykuł 7 😉 Zresztą jak meta jest w środku a nie w jednym z rogów, to zwykle po to, by właśnie się nie dało przejechać prawo/lewoskrętem;)

Udostępnij ten post


Link to post
Share on other sites

Więc tak. W robocie jest zaimplementowanie liczenie ile razy był w danej komórce jak i zaznaczanie ślepych uliczek. Labirynt na RA 2011 był przejezdny zarówno dla robotów prawo jak i lewo skrętnych, tylko Devil korzystał z algorytmu rozwiązywania labiryntu.

Aby w pełni korzystać z takich możliwości należy nie zgubić się w labiryncie, a o to akurat jak widać nie trudno 🙂

Udostępnij ten post


Link to post
Share on other sites
Więc tak. W robocie jest zaimplementowanie liczenie ile razy był w danej komórce jak i zaznaczanie ślepych uliczek.
A, ok - to coś podobnego jak ja napisałem w poście wyżej, tylko że w mojej wersji, nie trzeba przechowywać labiryntu w pamięci (a jedynie ciąg skrętów), no ale efekt ten sam. Szkoda, że nie udało Ci się z tego skorzystać, bo mogłoby być nawet 1 miejsce.

Labirynt na RA 2011 był przejezdny zarówno dla robotów prawo jak i lewo skrętnych, tylko Devil korzystał z algorytmu rozwiązywania labiryntu.

A to ciekawe - spodziewałem się, że jak napisali w regulaminie, że nie musi być przejezdy lewoskretem to nie będzie, tym bardziej, że meta była na środku (jak jest w rogu, to przejezdny lewoskretem jest zawsze).

Aby w pełni korzystać z takich możliwości należy nie zgubić się w labiryncie, a o to akurat jak widać nie trudno 🙂

No tak, to wg mnie największy problem w MM - odpowiednie korygowanie pozycji, by nie uderzyć w ściankę.

Udostępnij ten post


Link to post
Share on other sites

Ale czy to oznacza, że robot klasy wall-follower może przechowywać mapę nawet po wyjęciu go z labityntu lub wyjechaniu z niego? Wtedy po ponownym włożeniu mógłby jechać jak po sznurku ale tego chyba nie wolno? Bo wtedy mógłby nauczyć się trasy w eliminacjach i w finale nie bawić się szukaniem. Chyba, że to właśnie jest specyfika tej konkurencji? "Normalne" myszy mapują labirynt, "zalewają go płynami", szukają najlepszej drogi w kilku być może próbach i powrotach na start aż wreszcie robią speed-run w jednym cyklu. Wyłączenie zasilania lub zgubienie się - kaplica, wszystko od nowa - czyż nie?

Pytałem też, czy i jak implementacja algorytmów "prawdziwego" rozwiązywania labiryntów (np. z wykorzystaniem floodfill a nie odcinania ślepych uliczek) pomaga w przypadku, gdy nie wiadomo gdzie jest wyjście jak było właśnie w Rybniku.

Udostępnij ten post


Link to post
Share on other sites
tylko Devil korzystał z algorytmu rozwiązywania labiryntu.

I tu się mylisz:D Inżynier również 😉

Ale czy to oznacza, że robot klasy wall-follower może przechowywać mapę nawet po wyjęciu go z labityntu lub wyjechaniu z niego?
Wyłączenie zasilania lub zgubienie się - kaplica

Nie do końca tak jest, to wszystko zależy od programisty:) W naszym Inżynierze tak właśnie jest, ale to kwestia niedoskonałości programu. Da się zrobić tak, żeby robot się nie gubił(żeby nie tracił tego co już przejechał w razie kraksy). W kolejnym naszym MM tak prawdopodobnie będzie:D I chyba u Graba już tak jest.

Można by też wykorzystać EEPROM (o ile by się takim dysponowało) - to jeśli ma pamiętać po wyłączeniu.

Udostępnij ten post


Link to post
Share on other sites
Ale czy to oznacza, że robot klasy wall-follower może przechowywać mapę nawet po wyjęciu go z labityntu lub wyjechaniu z niego? Wtedy po ponownym włożeniu mógłby jechać jak po sznurku ale tego chyba nie wolno? Bo wtedy mógłby nauczyć się trasy w eliminacjach i w finale nie bawić się szukaniem. Chyba, że to właśnie jest specyfika tej konkurencji? "Normalne" myszy mapują labirynt, "zalewają go płynami", szukają najlepszej drogi w kilku być może próbach i powrotach na start aż wreszcie robią speed-run w jednym cyklu. Wyłączenie zasilania lub zgubienie się - kaplica, wszystko od nowa - czyż nie?

Pytałem też, czy i jak implementacja algorytmów "prawdziwego" rozwiązywania labiryntów (np. z wykorzystaniem floodfill a nie odcinania ślepych uliczek) pomaga w przypadku, gdy nie wiadomo gdzie jest wyjście jak było właśnie w Rybniku.

To zależy od regulaminu, ale w Rybniku nie było nigdzie mowy, że nie można zrobić czegoś takiego, więc wg mnie jak najbardziej można, zresztą Harnaś mówił oficjalnie przy sędziach, że jego robot będzie mapować labirynt i w finałowym przejeździe będzie miał zamiar z tego skorzystać. Nie udało się co prawda, ale regulamin moim zdaniem na to zezwalał. Co prawda w finałowym przejeździe było zmienione miejsce startu, ale jako że między eliminacjami a finałem było parę godzin na modyfikację programu (co było dozwolone), to można było użyć mapy zapisanej w eppromie, ale zmienić start na laptopie i wgrać do robota. Podobnie jak w LF nie ma nigdzie napisane, że nie mogę mapować trasy, więc np jak mam dwie próby przejazdu, to z użyciem enkoderów, mogę w pierwszej jechać ze stałą prędkością ucząc się gdzie są zakręty i należy zwolnić a gdzie proste na których można przyspieszyć, a w drugiej próbie wykorzystać te dane, by osiągnąć lepszy czas. Ciężko zabronić czegoś takiego w regulaminie i/lub ciężko wykryć/udowodnić, że ktoś coś takiego zrobił w LF.

A co do przydatności floodfill w przypadku gdy nie wiadomo gdzie jest start i meta, to algorytm taki jest trudniejszy do napisania (tzn ogólnie jest trudniejszy i zajmuje więcej pamięci), więc nie wiem czy ma sens, tym bardziej, że w przypadku labiryntu który można przejść regułą lewej/prawej dłoni i tym samym istnieje tylko 1 optymalna trasa, to algorytm odcinania ślepych dróg jest równie dobry jak floodfill (bo zwróci optymalną, jedyną trasę start-meta, w której robot nie będzie wjeżdżał 2x na to samo pole). W floodfill trzeba znać rozmiar labiryntu, punkt startowy, metę (tzn gdy nie jest znany można go wyliczyć po zmapowaniu całego labiryntu oczywiście, ale to dodatkowe utrudnienie), trzeba przechowywać informację o strukturze labiryntu co zajmuje pamięć, no i trzeba wykonać algorytm rozlewania wody a później wybrania najlepszej trasy. W algorytmie odcinania ślepych dróg, wystarczy zapamiętywać pokonywane skrzyżowania, co zajmuje mniej pamięci i nie wymaga nawet użycia enkoderów, nie trzeba znać rozmiaru labiryntu, podobnie miejsce startu i mety jest bez znaczenia, a sam algorytm eliminacji jest prostrzy do wykonania, bo to zwykłe szukanie i usuwanie konkretnych podciągów w ciągu zakrętów.

Ale to takie moje tylko teoretykowanie, nie poparte żadnym doświadczeniem - od niedawna interesuję się MM i zacząłem wgryzać się w temat, więc to co napisałem wynika z wiedzy nabytej nie poprzez osobiste doświadczenia, tak więc zastrzegam, iż powyższe teorie mogą być błędne;) "Teoretykować" to se można;)

Udostępnij ten post


Link to post
Share on other sites

MatManiak, niby tak, ale schody zaczynają się przy jeżdżeniu po skosie:) I w momencie, kiedy do celu prowadzą (co najmniej) 2 drogi - jedna krótsza, a druga szybsza...

Co do nieznania Startu i Mety. Pomijając to, że generalnie w oficjalnych regulaminach na świecie jest to raczej wszędzie przestrzegane(mysz startuje jakby z lewego rogu i meta jest na środku), to można stworzyć takie menu, aby można było wprowadzić oprócz zmian korekcji również określanie pozycji startowej i końcowej. Do tego bardzo przydatny jest wyświetlacz i najlepiej kilka przycisków 😉 Ograniczeniem jest jedynie wyobraźnia twórcy 🙂

Edit

O, widzę, że jak pisałem odpowiedź to dopisałeś małe zastrzeżenie do swojej wypowiedzi:p

Udostępnij ten post


Link to post
Share on other sites

Stuart nareszcie pokazany na forum 🙂 Bardzo przemyślana konstrukcja z dużym potencjałem. Trochę szeroki, więc z płynnymi skrętami może być problem...

Co do kwestii zapamiętywania trasy: jest to esencja micromouse. Pierw zmapować, a potem wyznaczyć optymalną ścieżkę. Tak jak pisał marek1707, zgubienie się lub wyłączenie zasilania = kaplica. Przynajmniej u mnie, bo dsPIC nie ma pamięci EEPROM a zewnętrzną dołożyłem dopiero w nowej myszy. Jednak rozpoczynając rundę mysz musi mieć czystą mapę!

W przypadku gdy nie jest znany punkt startu ani punkt docelowy pozostają jedynie proste metody rozwiązywania labiryntów. Floodfill wymaga określenia punktu docelowego a analiza ścieżki odbywa się względem punktu o znanych współrzędnych.

Udostępnij ten post


Link to post
Share on other sites

W STM32 nie ma pamięci EEPROM, ale za to jest wydzielona część pamięci FLASH w której można dokonywać zapisu/odczytu na tej samej zasadzie. Grabo jesteś pewny, że w dsPIC też nie ma takiej funkcjonalności? Bo szczerze mówiąc zaskoczyło mnie, że Microchip czegoś takiego nie przewidział.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...