Popularny post wn2001 Napisano Maj 21, 2016 Popularny post Udostępnij Napisano Maj 21, 2016 InfraRed jest robotem klasy Micromouse, który wykorzystuje zasadę prawej dłoni (wall-follower). Konstrukcja powstawała około 2 miesiące i licząc wszystkie koszty pochłonęła około 300 PLN. Robot był budowany na zawody CYBERBOT 2016, w których zajął 5 miejsce. Należy jednak podkreślić iż był chyba najbardziej budżetową myszą, tym bardziej, że inne micromouse'y były malutkie, z silniczkami Pololu lub Faulhauber, a tu taki "opancerzony". Niemniej jednak, robot przejechał labirynt w 49 sekund i nie musiałem go ani razu popchnąć 🙂 Mechanika: Korpus robota składa się z dwóch kół z odpowiednimi otworami i wnękami o średnicy 130mm, które zostały zaprojektowane w Google SketchUp i wykonane w technologii druku 3D. Połączone są one 4 prętami gwintowanymi M3. Wysokość robota wynosi, licząc z pętelką kabli u góry (służącą do wyciągania z labiryntu) około 150mm. Bez pętelki ponad 100mm. Jako punkt podparcia wykorzystałem 2 duże diody LED, które zresztą się świecą (ot, taki bajer 🙂 ). Napęd i zasilanie: Napęd stanowią dwa silniki Dagu, kątowe, na napięcie 3V, kupione w Botlandzie. Są one ogromne, jednak udało mi się je jakoś upchnąć 😋 . Jeżeli chodzi o zasilanie - zastosowałem po raz pierwszy pakiet LiPol (Kokam / 2S 7,4V 910mAh). Napięcie dla logiki daje moduł stabilizatora 5V LM1117. Do silników z kolei napięcie idzie bezpośrednio z akumulatora, przez mostek L293D. Czujniki: Znów wykorzystałem najtańsze elementy z Botlandu, dokładnie diody IR TSAL6400 i fototranzystory LIRT5B. Obydwa działają na paśmie 940nm. Do diody dołączony jest rezystor 33om, a do fototranzystora - 3300om. Daje to zadowalające odczyty, diody są sterowane impulsowo przez ULN2003 (najpierw zapalane są obydwie przednie, a potem boczne). W celu poprawienia jakości odczytów robot mierzy napięcie na fototranzystorze przy włączonej i wyłączonej diodzie, oblicza różnicę, a następnie powtarza tą operacje 2-krotnie - końcowym wynikiem jest średnia arytmetyczna z 3 takich pomiarów. Cała pętla wykonuje się w bodajże 15ms - jest to złoty środek, gdyż że program jest stabilny i jednocześnie robot szybko reaguje na zmiany wartości na czujnkach. Elektronika: Jako mikrokontroler wykorzystałem Arduino Pro Micro z Atmegą 32U4. W robocie są dwie płytki uniwersalne - jedna z rezystorami i ULN2003 do czujników (schowana) i druga właściwa, z mostkiem H, mikroprocesorem, stabilizatorem, a także kilkoma dodatkami - tact-switchem, buzzerem i diodą LED. Nie wykorzystywałem ich jednak, gdyż wygodniej mi jest debugować przez Serial Monitor. Właściwy program składa się z regulatora PD (jazda prosto i skręt w prawo) i kilku IFów (skręt w lewo, zablokowanie się robota). Robot wprawdzie czasami wjeżdża w ścianki, ale dzięki temu, że PLA jest śliskie, rzadko kiedy przyblokuje się 😃 Jednym z wad tych czujników jest to, że ich odpowiedź nie jest proporcjonalna do odległości, a co za tym idzie - żeby człon P reagował poprawnie, trzeba było wprowadzić pewne uproszczenie: if (wzadane-obp<=-130) skret=(wzadane-obp)*0.03+(obp-pre)*0.01; else if (wzadane-obp>-130) skret=(wzadane-obp)*0.3+(obp-pre)*0.06; Po prostu jeżeli robot zbytnio zbliży się do ścianki, to błąd gwałtownie narasta, więc musi być pomnożony przez mniejsze wzmocnienie (wzadane - wartość zadana, obp - odległość po prawej, pre - poprzednia wartość obp, skret - poprawka dla PMW silników 🙂 ). Zdjęcia: Film z zawodów: Podsumowanie: Jestem bardzo zadowolony z tej konstrukcji, dużo się przy niej nauczyłem i przede wszystkim spełniła podstawowe założenie - przejechała labirynt i to bez popychania 😉 Z chęcią odpowiem na wszystkie pytania 🙂 3 Cytuj Link do komentarza Share on other sites More sharing options...
Bobby Maj 26, 2016 Udostępnij Maj 26, 2016 Na początek gratulacje za wystartowanie i przejechanie labiryntu. Niestety nie wygląda to za dobrze - podejrzewam, że bez enkoderów na kołach ciężko coś takiego wysterować, ale mocno się obija. Za mocno 🙂 Do prawilnego micromouse jeszcze daleka droga. Jednym z wad tych czujników jest to, że ich odpowiedź nie jest proporcjonalna do odległości, a co za tym idzie - żeby człon P reagował poprawnie, trzeba było wprowadzić pewne uproszczenie: A nie myślałeś o zlinearyzowaniu tego odczytu, choćby za pomocą jakiegoś lookup table'a, zamiast takiego półśrodka? Trochę szkoda mieć zapiety dobry regulator i go tak marnować 😉 Cytuj Link do komentarza Share on other sites More sharing options...
wn2001 Maj 26, 2016 Autor tematu Udostępnij Maj 26, 2016 Dziękuję 😉 Właśnie, nawet do wall-followera przydały by się nawet bardzo proste enkodery, z rozdzielczością nawet kilka milimetrów, żeby mniej więcej wykonywać prawidłowe skręty i dobrze trzymać się prostej. Druga opcja to jakiś żyroskop, ale nie próbowałem. Natomiast chciałem wykorzystać kompas, ale z taką częstotliwością by się nie wyrobił i sprawdzałem - magnesy z tak dużych silników mocno zakłócały odczyt. Przypuszczam też, że obijanie wynikało również z faktu, że w domu mam mały labirynt 3x5 ze styropianu, związku z czym odczyty mogły się różnić (różne materiały). Pozycję środkową (wartość zadaną) ustawiłem "na sztywno", więc mogła być dla drewna trochę inna. Właśnie, chętnie bym taką tablicę zrobił, ale bałem się właśnie tego, że współczynniki odbicia będą inne. Czytałem też o wykorzystaniu logarytmów, ale za bardzo nie wiem, na czym to polega 🙂 . Na koniec, to było moje pierwsze zetknięcie się z tego typu regulatorami i cieszyłem się, że w ogóle działa. Cytuj Link do komentarza Share on other sites More sharing options...
joda17 Maj 28, 2016 Udostępnij Maj 28, 2016 Twojego robota udało mi się nakręcić z bliższej perspektywy, specjalnie wrzuciłem 😉 I przyznam, że obija się jak obija, ale orginalnie i ciekawie wygląda 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
wn2001 Maj 30, 2016 Autor tematu Udostępnij Maj 30, 2016 joda17, bardzo dziękuję 🙂 Rzeczywiście, okrojony budżet konstrukcji spowodował, że wyróżnia się wyglądem na tle innych MM 😃 Tak, koniecznie muszę popracować nad obijaniem się, bo IV miejsca brakowało mu chyba "tylko" 11 sekund. W tym celu muszę: a) zastosować lepsze czujniki; b) zmniejszyć wymiary myszy; c) dopracować program i wprowadzić liniowość między napięciem na fototranzystorze a odległością. No, ale to w następnej myszy 🙂 PS Czy ktoś zna jakiś prosty i jednocześnie skuteczny sposób na poprawianie pozycji myszy w labiryncie, tak aby zawsze pozycja fizyczna zgadzała się z pozycją, o której "myśli" robot? Pytam, bo może istnieje lepszy sposób od regulatora PD. Cytuj Link do komentarza Share on other sites More sharing options...
joda17 Maj 30, 2016 Udostępnij Maj 30, 2016 Powiedz, bo zastanawiają mnie te czujniki, robiłeś charakterystyki jakieś? tzn napięcia od odległości? Cytuj Link do komentarza Share on other sites More sharing options...
wn2001 Maj 31, 2016 Autor tematu Udostępnij Maj 31, 2016 joda17, te czujniki działają w ten sposób, że mierzą ilość odbitego światła, które zmienia się wraz z odległością od danej (najlepiej białej) przeszkody. Na skalę ADC 1024, kiedy przeszkoda jest bardzo blisko to nawet 990, kiedy nie ma przeszkody około 50. Cały problem w tych czujnikach polega na tym, że odczyt może się różnić nawet dla styropianu a białej farby, oraz, że wygląda to mniej więcej tak (zmyślam): 30 cm - 50 10 cm - 200 5 cm - 250 4 cm - 350 3 cm - 600 2 cm - 900 Doświadczalnie ustaliłem, że optymalna wartość dla czujnika po prawej to 300 (styropianowa ściana), na zawodach chciałem tą wartość zmienić w programie, ale okazało się, że ustawiano "na sztywno" nie powoduje jakiegoś pogorszenia jakości jazdy 😃 Cytuj Link do komentarza Share on other sites More sharing options...
joda17 Czerwiec 1, 2016 Udostępnij Czerwiec 1, 2016 Zasady działania nie musisz tłumaczyć, pytam o charakterystyki dlatego, że to właśnie na ich podstawie moża ustalić optymalny zakres w którym czujnik pracuje liniowo. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!