Robot micromouse Rzuf nincza Hubert Grzegorczyk Koło Naukowe Robotyków KoNaR www.konar.pwr.edu.pl 3 stycznia 2016
SPIS TREŚCI SPIS TREŚCI Spis treści 1 Wstęp 2 2 Micromouse Rzuf Nincza 2 2.1 Mechanika............................. 3 2.1.1 Koła i napęd....................... 3 2.1.2 Enkodery......................... 3 2.1.3 Podsumowanie...................... 4 2.2 Elektronika............................ 4 2.2.1 Zasilanie.......................... 5 2.2.2 Mikrokontroler...................... 5 2.2.3 Czujniki.......................... 7 2.2.4 Sterowanie silnikami................... 8 2.2.5 Interfejs komunikacyjny................. 8 2.3 Program.............................. 9 2.3.1 Konfiguracja peryferii................... 9 2.3.2 Algorytm sterowania................... 9 3 Podsumowanie 10 4 Materiały źródłowe 11 1
2 MICROMOUSE RZUF NINCZA Rysunek 1: Rzuf nincza 1 Wstęp Dokument opisuje projekt robota typu micromouse, proces jego budowy i przygotowania do wystartowania w zawodach Robotic Arena 2015. Projekt był tworzony w ramach warsztatów robotycznych organizowanych przez KNR KoNaR i będzie dalej rozwijany. Opiekunem projektu był członek KNR KoNaR Witold Lipieta. Zdjęcie zbudowanego robota 1 Celem projektu było zapoznanie się z konstrukcją robota typu micromouse, problemami jakie z niej wynikają, jak i algorytmami pozwalającymi pokonać labirynt. Głównym założeniem było wystartowanie w konkurencji Micromouse 8X8 wykorzystując algorytm prawej ręki co po części udało się osiągnąć. Udało się także zmieścić w czasie z uruchomieniem robota przed zawodami. 2 Micromouse Rzuf Nincza W ramach projektu został zaprojektowany robot klasy (2,0). Taki typ robota został wybrany ponieważ najlepiej radzi sobie z jazdą w wąskich korytarzach i może rozwijać znaczne prędkości. Ponadto wszystkie topowe konstrukcje wykorzystują taki właśnie sposób poruszania. 2
2.1 Mechanika 2 MICROMOUSE RZUF NINCZA 2.1 Mechanika Konstrukcja opiera się na płytce laminatu PCB o wymiarach 7x9 cm ze ściętymi rogami. Dzięki temu robot jest lekki, solidny i zajmuję mało miejsca co jest ważne dla robotów typu micromouse. Całkowita szerokość wynosi 9 cm co pozwoli w przyszłości na pokonywanie zakrętów w labiryncie skosami. 2.1.1 Koła i napęd Jako napędu użyto dwóch silników z podwójną osią firmy Pololu z przekładnią 50:1. Obustronna oś pozwoliła na użycie enkoderów niezbędnych dla robotów micromouse, zostaną one opisane dalej. Silniki zamontowane są za pomocą plastikowych mocowań i śrub bezpośrednio do laminatu będącego podwoziem. Do poruszania się robot używa standardowych kół Pololu o średnicy 32 mm. Zapewniają one wystarczającą przyczepność przy małych przyspieszeniach i są łatwe w montażu na wał typu D. Jako trzeci punkt podparcia użyto kulki podporowej zamontowanej z tyłu robota pod akumulatorem aby robot nie wywracał się podczas przyspieszania i hamowania. Wszystkie elementy napędu okazały się dobrym wyborem. Silniki nie są nowe i działają już długi czas, a ich parametry są zgodne z notą katalogową. 2.1.2 Enkodery W konstrukcji zastosowano nowatorskie rozwiązanie dotyczące enkoderów. Na wały wystające bezpośrednio z silników za pomocą kleju na gorąco zostały zamontowane tekturowe tarcze z nadrukowanymi polami biało-czarnymi (5 pól białych i 5 pól czarnych). Przed nimi w odległości około 1 mm znajdują się małe moduły z dwoma czujnikami odbiciowymi KTIR0711S. Zamontowane są one do podwozia za pomocą listw kątowych goldpin. Taka budowa enkoderów jest solidna i pozwoliła na tanie pozycjonowanie robota. Dzięki zastosowanym enkoderom i dużej przekładni silników udało się uzyskać 1029 impulsów na obrót koła co daje około 0.1 mm pokonanej drogi na impuls. Zastosowane enkodery spełniają swoje zadanie, działają pewnie i nie gubią impulsów, jednak w przyszłości potrzebna będzie większa ilość impulsów na obrót koła. Łatwo można to osiągnąć zmieniając tarcze enkoderów na takie z większa ilością pól. 3
2.2 Elektronika 2 MICROMOUSE RZUF NINCZA Rysunek 2: Wytrawiona płytka PCB 2.1.3 Podsumowanie Konstrukcja mechaniczna robota została dobrze przemyślana i nie sprawia problemów. Mankamentem jest brak miejsca na baterie. W dalszych etapach konieczna będzie zmiana baterii na mniejszą. Można także dodać mały radiator na stabilizator napięcia, ale nie jest to konieczne,temperatura mieści się w normie. 2.2 Elektronika Schemat elektroniczny powstał w programie Eagle. Płytka PCB była projektowana tak, aby można ją było wytrawić w domu za pomocą termotransferu. Jest dwustronna, co zwiększa ilość przelotek ale dzięki temu robot jest solidniejszy i nie ma na nim plątaniny kabli. Możliwe dzięki temu było użycie szerszych ścieżek dla zasilania, które głównie przebiegają dolną warstwą. Zdjęcie wytrawionej płytki 2. Podczas termotransferu pojawiło się wiele problemów związanych z wytworzeniem w warunkach domowych płytki z dużą dokładnością. W wyniku zbyt dużego nacisku ścieżki delikatnie się rozmyły. Udało się to naprawić za pomocą igły i dalej płytka została poprawnie wytrawiona. W następnych projektach konieczne będzie zastosowanie druku o wyższej jakości. 4
2.2 Elektronika 2 MICROMOUSE RZUF NINCZA 2.2.1 Zasilanie Robot zasilany jest akumulatorem litowo polimerowym, który jest lekki, cechuje go wysoka gęstość energii i wydajność prądowa. Aby zapewnić maksymalną wydajność silników zastosowano akumulator z dwoma ogniwami połączonymi szeregowo co daję napięcie nominalne 7.4 V. Jest to napięcie idealne dla użytych silników. Zasilane są one bezpośrednio z baterii przez mostek H. Schemat zasilania został przedstawiony na rysunku 3. Zabezpieczenie przed odwrotną polaryzacją zostało zamontowane przed stabilizatorem napięcia 3.3 V, który zasila mikrokontroler i czujniki. Przed odwrotnym podłączeniem baterii zabezpiecza gniazdo baterii. Nie wykorzystano diody zabezpieczającej bezpośrednio za baterią ponieważ powodowałaby ona spadek napięcia zasilania silników. Przez dzielnik napięcia doprowadzone jest napięcie baterii do mikrokontrolera. Pozwala to za pomocą przetwornika ADC kontrolować zużycie baterii. Dioda informująca o poprawnym zasilaniu robota jest sterowana przez mikrokontroler. Pozwala to nie tylko na sprawdzenie czy jest poprawnie podpięte zasilanie, ale także czy udało się poprawnie zainicjować robota. Użyty przełącznik odcina zasilanie logiki robota i tym samym wyłącza go. Mostek H podpięty bezpośrednio do baterii po odłączeniu napięcia logiki zużywa minimalną ilość prądu rzędu mikro amperów. 2.2.2 Mikrokontroler W robocie użyty został mikrokontroler STM32F103RCT6. Ma on następujące cechy: Maksymalne taktowanie to 72MHz. Typowy pobór prądu przy włączonych peryferiach to 60 ma. Posiada trzy dwunastobitowe przetworniki ADC z 21 kanałami. Posiada 2 dwunastobitowe przetworniki DAC. Umożliwia korzystanie z DMA. 5
2.2 Elektronika 2 MICROMOUSE RZUF NINCZA Rysunek 3: Schemat zasilania Rysunek 4: Schemat podłączenia mikrokontrolera 6
2.2 Elektronika 2 MICROMOUSE RZUF NINCZA Rysunek 5: Schemat czujnika odbiciowego Posiada osiem szesnastobitowych timerów, z czego 2 mają interfejs dla enkoderów. Posiada wiele interfejsów komunikacyjnych USART, I 2 C, SPI. Ten mikrontroler został wybrany głównie ze względu na łatwą dostępność, przystępną cenę i fakt, że posiada sprzętowy interfejs dla enkoderów. Wybrany został mikrokontroler STM w celu poznania jego architektury i sposobów programowania. Ważną cechą jest także możliwość łatwego debugowania za pomocą interfejsu JTAG. Schemat podłączenia mikrokontrolera pokazany został na rysunku 4. 2.2.3 Czujniki Jedynymi czujnikami w robocie są enkodery oraz cztery czujniki odbiciowe złożone z diody IR i fototranzystora. Dwa skierowane do przodu i dwa skierowane na boki. Dzięki czujnikom odbiciowym możemy określić odległość od ścian i pozycjonować robota w labiryncie. Pozwalają się one także orientować, którędy można jechać. Enkodery służą do określania prędkości, położenia i przejechanej drogi. Wszystkie czujniki mają wyjścia analogowe, sygnały z enkoderów są zamieniane w impulsy cyfrowe przez interfejs mikrokontrolera. Sygnały z fototranzystorów są także podpięte bezpośrednio do mikrokontrolera do przetwornika ADC. Do sterowania diodą IR użyto tranzystorów NPN. Schemat podłączenia czujnika odbiciowego można zobaczyć na rysunku 5. Zastosowane diody IR maja kąt świecenia 25 dlatego dodane zostały osłonki na diody, jak i fototranzystory. Rezystor dla diody led oraz rezystor pull-up przy fototranzystorze zostały dobrane doświadczalnie. 7
2.2 Elektronika 2 MICROMOUSE RZUF NINCZA Rysunek 6: Schemat podłączenia silników i mostka H 2.2.4 Sterowanie silnikami Do sterowania silnikami użyto popularnego mostka TB6612FNG, którego budowa oparta jest na tranzystorach MOSFET. Ma on niską rezystencję przewodzenia i może przewodzić stosunkowo duże prądy - około 1.2 ampera na kanał. Dla robota typu micromouse jeden mostek wystarcza na dwa użyte silniki ponieważ rzadko kiedy dochodzi do blokowania się kół. Może on być bez problemu zasilany napięciem logiki do 6 V i napięciem dla silników do 15 V. Silniki zasilane są bezpośrednio z baterii napięciem z zakresu 8.4-6.3 V w zależności od stopnia naładowania akumulatora. Schemat został przedstawiony na rysunku 6 2.2.5 Interfejs komunikacyjny Do komunikacji z robotem został przewidziany interfejs szeregowy USART. Pozwala on na komunikacje z komputerem i umożliwia podłączenie dodatkowych modułów. Ponadto robot posiada 3 przyciski i 4 diody LED służące do prostej komunikacji z użytkownikiem. Wyprowadzony został także interfejs I 2 C, który w przyszłości może służyć do podłączenia na przykład żyroskopu. Dodany może zostać także moduł bluetooth, który można podłączyć do interfejsu USART. Podstawowym sposobem komunikacji z robotem jest interfejs debugowania i programowania JTAG. Okazało się, że do poprawnej komunikacji potrzebne są 3 przewody SWCLK, SWDIO oraz NRST. Bez NRST programowanie możliwe było tylko przy odpowiednim sprowadzeniu mikrokontrolera w stan zresetowany ręcznie. Ponadto użycie długich kabli do programowania 8
2.3 Program 2 MICROMOUSE RZUF NINCZA Rysunek 7: Błędne podłączenie interfejsu JTAG może powodować nieprawidłową komunikacje między programatorem i mikrokontrolerem. Błędy zostały poprawione i mikrontroler bez problemu daje się programować i debugować. Schemat z błędnym podłączeniem interfejsów 7. 2.3 Program Program sterujący robotem jest napisany w środowisku C. Struktura inicjalizacyjna dla mikrokontrolera została wygenerowana za pomocą programu STM32CubeMX, który pozwolił na szybkie uruchomienie robota. Dalej algorytm był rozwijany w środowisku Eclipse. Wszystkie programy są w pełni darmowe. 2.3.1 Konfiguracja peryferii Algorytm wspomagany jest przez wykorzystanie różnych peryferii mikrontrolera. Podstawą czasu dla robota jest przerwanie od systemowego zegara SysTick wywoływane z częstotliwością 1 khz. Dalmierze robota są odczytywane za pomocą ADC, do ciągłego aktualizowania zmiennej zawierającej aktualne odczyty wykorzystywane jest DMA. Enkodery są podpięte do specjalnych interfejsów timerów skonfigurowanych do pracy z enkoderami. Odciąża to w znacznym stopniu procesor i pomaga w dokładnym pozycjonowaniu robota. PWM dla silników jest sprzętowo generowane przez timer z częstotliwością 24 khz. 2.3.2 Algorytm sterowania Do sterowania robotem zastosowany został pofiler translacji, rotacji i skrętów oraz regulator PD na każde koło. Dodatkowo używany jest także regulator PD przy kalibrowaniu robota względem ścian. Główna pętla PD sterowania silnikami, która dąży do zadanej pozycji chodzi z częstotliwością 1 khz, 9
3 PODSUMOWANIE a pętla profilera położenia odświeża zadaną pozycje z częstotliwością 100 Hz. Pozwala to na płynne sterowanie robotem i dotarcie na zadaną pozycje z zadanym przyspieszeniem i opóźnieniem. Aby uprościć implementacje profilerów położenia przed każdym ruchem odczyty z enkoderów muszą być zerowane. Przez brak zerowania pojawiał się błąd przez, który robot robił nagły niekontrolowany obrót. Algorytm poruszania się po labiryncie jest prosty i używa reguły prawej ręki. W dalszych planach jest ulepszenie pozycjonowania w labiryncie i zaimplementowanie przeszukiwania labiryntu w celu znalezienia najszybszej trasy. Na chwile obecną robot potrafi ustawić się odpowiednio względem ścian tylko kiedy znajduję się naprzeciwko ściany albo gdy zawraca. 3 Podsumowanie W dokumencie opisano projekt i proces budowy robota mobilnego klasy micromouse. Udało się stworzyć działający pojazd zdolny do rozwiązywania najprostszych labiryntów. Zostały zrealizowane wszystkie cele postawione na początku projektu, które zakładały uruchomienie najprostszych algorytmów rozwiązywania labiryntów. Okazało się, że prowizoryczne rozwiązanie budowy enkoderów spisuję się znakomicie, także mechanicznie konstrukcji nie można nic zarzucić. Dużą wadą robota są słabej jakości dalmierze. Warto będzie wymienić je na lepsze, diody IR mogły by mieć mniejszy kąt świecenia. Także koła mogły by mieć lepszą przyczepność. Projekt z pewnością będzie dalej rozwijany i nie jest jeszcze zakończony. Dużo rzeczy można poprawić. Algorytm wymaga dalszego rozwijania i udoskonalania. Na pewno warto będzie zaimplementować algorytm przeszukiwania labiryntu oraz dla czujników odległości kompensacje oświetlenia. Ponadto potrzebna będzie funkcjonalność pozwalająca na pozycjonowanie robota względem ścian w czasie ruchu. Enkodery można także wymienić na lepsze. Projekt pozwolił zaznajomić się z mikrokontrolerami STM oraz poznać konstrukcje typu micromouse. Ponadto zdobyte zostało cenne doświadczenie w projektowaniu robotów tego typu i układów z mikrokontrolerami STM. Konstrukcja wystartowała w Robotic Arenie 2015 w kategorii micromouse 8X8. Nie udało się dojechać do końca labiryntu przez drobny błąd w programie, który teraz został już naprawiony. Robot w pewnych szczególnych przypadkach robił gwałtowny obrót przez co tracił kontrolę nad swoją pozycją. Działo się to przez błędne założenie przy projektowaniu profilera rotacji. Kiedy nie pojawiał się ten przypadek Rzuf Nincza potrafił pokonywać fragmenty labiryntu regułą prawej ręki. Film ze startu [4]. 10
LITERATURA Rysunek 8: Zdjecie robota 4 Materiały źródłowe Ogólny zarys robota został oparty na innych konstrukcjach tego typu. Dużo wiedzy zostało zaczerpnięte ze strony Forbot[1], a głównie z artykułu o robotach mobilnych klasy (2,0)[2] i kursu programowania mikrokontrolerów STM32[3]. Część informacji o mikrokontrolerach STM32 zostało wzięte z warsztatów organizowanych przez KNR KoNaR. Literatura [1] www.forbot.pl [2] http://forbot.pl/blog/artykuly/programowanie/ sterowanie-robotem-mobilnym-klasy-20-id2708 [3] http://forbot.pl/blog/artykuly/programowanie/ stm32-praktyce-1-platforma-srodowisko-id2733 [4] https://www.youtube.com/watch?v=do0qzupj58w 11