tutaj
Transkrypt
tutaj
Robot mobilny kategorii minisumo - CyKozak1 Michał Cycon, Piotr Kozak Wydział Elektroniki Politechniki Wrocławskiej 15 grudnia 2009 1 Powodem rozbieżności w nazwie robota, która wystąpiła przy zgłoszeniu do uczestnictwa w zawodach RoboticArena2009 był niedostatek snu spowodowany intensywną pracą nad projektowaniem do wczesnych godzin dnia następnego. Zdjęcie 1: Ważenie robota 1 Założenia projektowe Celem projektu było zbudowanie robota mobilnego spełniającego wymagania kategorii minisumo a następnie udział w zawodach Robotic Arena 2009 we Wrocławiu. Robot miał być autonomiczną jednostką mobilną poruszającą się na podstawię informacji z czujników oraz wgranego do procesora programu. Robot miał tak się poruszać by na czarnym podłożu samoczynnie nie wyjechać poza okrąg białej linii. Robot miał reagować przy najechaniu na białą linię tyłem lub przodem. Prędkość poruszania się miała zależeć od obecności przeciwnika w pobliżu. Czujnikami informującymi o obecności przeciwnika mają być: refleksyjny czujnik podczerwieni oraz czujniki bezpośredniego kontaktu. Rozmiary geometryczne miały nie przekraczać długości i szerokości równych 10 centymetrów. Masa natomiast miała być mniejsza od 500 gram. Nazwa CyKozak jest kompozycją nazwisk autorów robota. W wolnym tłumaczeniu nazwę można tłumaczyć tak: Cy - Cyber oraz Kozak - bojownik. Prace nad projektem przebiegały w trzech etapach: • projektowanie układu sterującego • budowanie konstrukcji mechanicznej • programowanie z testowaniem 2 2.1 Realizacja projektu Projektowanie układu sterującego Układ elektroniczny został zaprojektowany specjalnie na potrzeby tego projektu. Problemy z jakimi trzeba było się zmierzyć wynikały z koniecznej minimalizacji rozmiarów końcowej płytki PCB. Wymagane rozmiary oraz odpowiednie upakowanie zostało uzyskane dzięki zastosowaniu elementów SMD w obudowie 0805, dwu-warstwowym płytkom PCB oraz modułowej, dwu-częściowej budowie. Na górnej płytce umieszczono procesor w podstawce wraz z odpowiednio wyprowadzonymi pinami, sygnalizacyjne diody led, kabelek doprowadzający zasilanie z baterii oraz wejście do programatora ISP (wyprowadzenia zgodne z USBasp). Na płytce dolnej znalazły się pozostałe elementy układu sterującego m.in.: stabilizator napięcia LDO 5V, układ sterowania silnikami DC L298, generator 2 Zdjęcie 2: Modułowa budowa układu elektronicznego. 3 Zdjęcie 3: Zainstalowane czujniki linii białej. astabilny NE555, klucze tranzystorowe, wyprowadzenia do podłączenia czujników zewnętrznych itd. Sercem układu jest mikrokontroler Atmega16 w obudowie DIP firmy Atmel. Jako czujniki białej linii zastosowano TCRT7000 (2x przód, 1x tył). W konstrukcji refleksyjnego czujnika przeciwnika wykorzystano dwie diody świecące w podczerwieni zasilane generatorem astabilnym o częstotliwości 36kHz oraz odbiornik podczerwieni TSOP1736. Czujnikami uderzeniowymi są zwykłe mikro-switche. 2.2 Konstrukcja mechaniczna Konstrukcja została zbudowana z tworzywa sztucznego PCV co wpływa na tak małą masę robota (ok. 285g) Wielką wagę przywiązywaliśmy do tego by każdy element był rozbieralny, co w razie usterki czy wadliwego działania miało nam znacznie ułatwić wprowadzanie zmian. Zadanie najważniejsze, czyli napęd realizują dwa serwomechanizmy Tower Pro SG-5010. Przed zakupem serw nie zastanawialiśmy się nad trafnością tego wyboru. Przeważający wpływ na decyzję odegrała cena (ok. 30zł za sztukę). Serwomechanizmy te zawierają własną przekładnie, co zwolniło nas z pracy nad własną przekładnią. Koła o przyczepnym ogumieniu pochodzącą ze starej drukarki hp930. Zasilanie pochodzi z dwóch bateryjek litowo-jonowych z telefonu Nokia, połączonych szeregowo dających napięcie o wartości 7,8 V. Co istotne, zasilanie układu sterującego silnikami DC zostało poprowadzone bezpośrednio z baterii natomiast zasilanie układu logicznego (procesor,czujniki) poprowadzono równolegle z przejściem przez stabilizator. Czujniki linii białej zostały zamontowane z lewej i prawej strony z przodu i po środku z tyłu. By zapewnić poprawne działanie, czujniki musiały znaleźć się w czarnym otoczeniu. Odbiciowy czujnik przeciwnika został zamontowany w przedniej części. Uzyskany zasięg działania tego czujnika nie jest satysfakcjonujący (ok. 15-20cm) i wymaga jeszcze dopracowania. Czujniki uderzeniowe zostały zamontowane w taki sposób by przy natknięciu się przednim pługiem na przeciwnika zostały zadziałane. Pług został przymocowany w taki sposób by poddawał się przy napotkaniu na przeszkodę. Tylni pług to wizja wywracania przeciwnika przez podjechanie i szybki obrót wokół własnej osi. Oba pługi opadają przy starcie robota przez programowe drgnięcie tył-przód. 4 Zdjęcie 4: Czujniki zamontowane na przodzie robota. 5 Zdjęcie 5: CyKozak Zdjęcie 6: Pługi 6 2.3 Programowanie Program został napisany w języku C, przy wykorzystaniu pakietu WinAVR. Zaimplementowany program realizuje prosty algorytm działania, uwzględniający następujące zachowania: • start - 5 sekund i zacznij się kręcić w lewo • czujnik białej linii przód - do tyłu, obrót o 180 stopni, do przodu • czujnik białej linii tył - do przodu • czujnik przeciwnika - do przodu z maksymalną prędkością • lewy czujnik uderzeniowy - szybki skręt w lewo o 20 stopni • prawy czujnik uderzeniowy - szybki skręt w prawo o 20 stopni 3 Wnioski po zrealizowaniu projektu Podczas realizacji projektu mieliśmy okazję poczuć się jak prawdziwi konstruktorzy, obmyślając każdy jeden szczegół powstającej konstrukcji. Mieliśmy wielki zapał do zrealizowania założonego celu. Wymagało to poświęcenia sporej ilości czasu na każdym ”w naszym mniemaniu” detalu robota. Były momenty słabości, gdy po zainwestowaniu pewnych środków nie było widać postępów i efektów pracy. Przykładem może być moment znalezienia ”Fatal Error” w projekcie płytek PCB, po ich wytrawieniu, na kilka dni przed zawodami. Po jakimś czasie nastał dzień chwały. Ta chwila, po tym wszystkim, po przebrnięciu przez multum problemów i błędów, to coś dla czego warto było próbować. To chwila, w której robot zaczyna działać. Efektem udziału w zawodach Robotic Arena 2009 jest wniosek, że decydujące znaczenie w walce robota ma napęd. Napęd w postaci samego silnika jak również przełożenia. Mocniejszy silnik automatycznie wprowadza zaostrzenia wymagań związanych z zasilaniem, akumulatorami. Reasumując, każdy element musi zostać dobrany z szczegółową wiedzą i precyzją. Za rzecz równie istotną w skuteczności walki robota, natomiast o wiele ciekawszą uważam inteligencję robota, dzięki której można wygrać nawet z cięższym i silniejszym przeciwnikiem. Inteligencja robota w mym rozumowaniu polega na programie synchronizującym działanie czujników oraz dużej liczbie skutecznie działających czujników, wykrywających przeciwnika oraz mierzących odległość od niego (np.czujniki ultradźwiękowe). Niestety w naszym projekcie nie zastosowaliśmy tego typu czujników, co wynikało przede wszystkim z kosztów jak również ze stopnia zaawansowania sonaru. Na to miejsce zbudowaliśmy refleksyjny czujnik odbiciowy działający na podczerwieni z częstotliwością 36kHz. Uzyskany zasięg (ok. 15-20 cm) nie był zadowalający, co wynikało z pewnych niedociągnięć zaprojektowanego układu. Działanie pługów przedniego oraz tylniego można uznać za pozytywne. Przedni, który został zrobiony z blachy aluminiowej po puszce oraz cienkiego laminatu bardzo dobrze się spisywał, skutecznie utrudniał podjechanie przeciwnika pod pług. Tylni natomiast, hmm... pomysł dobry lecz za słaba moc napędu by był skuteczny. 7