Raport z budowy robota walczącego klasy minisumo Yokozuna Dawid Marszałkiewicz Piotr Portasiak Koło Naukowe Robotyków KoNaR www.konar.pwr.edu.pl Wrocław, 6 stycznia 2016
Dziękujemy, wszystkim tym, którzy nas wspierali i wierzyli, że uda nam się osiągnać to, co zamierzyliśmy.
Spis treści 1. Wstęp.................................... 2 2. Budowa robota............................... 3 2.1. Założenia projektowe......................... 3 2.2. Mechanika............................... 4 2.2.1. Korpus............................. 4 2.2.2. Napęd............................. 7 2.2.3. Podsumowanie......................... 8 2.3. Elektronika............................... 9 2.3.1. Zasilanie............................ 10 2.3.2. Mikrokontroler......................... 10 2.3.3. Czujniki............................ 12 2.3.4. Sterowanie silnikami...................... 13 2.3.5. Interfejs komunikacyjny.................... 14 2.4. Program................................ 14 2.4.1. Konfiguracja peryferii..................... 16 2.4.2. Algorytm sterowania..................... 17 2.5. Geneza nazwy robota......................... 18 3. Podsumowanie............................... 18 4. Materiały źródłowe............................ 19 1
Streszczenie Niniejsze opracowanie prezentuje proces budowy autonomicznego robota walczącego klasy minisumo, zdolnego do udziału w zawodach robotyków. W kolejnych rozdziałach omówiono etapy projektowania i realizacji: części mechanicznej, elektronicznej oraz algorytmu sterowania. 1. Wstęp Przedsięwzięcie zakładało zaprojektowanie i zbudowanie robota walczącego klasy minisumo. Budowa odbywała się w ramach warsztatów robotycznych organizowanych przez Koło Naukowe Robotyków KoNaR podczas semestru zimowego 2015/2016. Ukończenie projektu umożliwiało wstąpienie w szeregi członków tego Koła, co było jedną z motywacji do podjęcia działań. W ramach warsztatów konstruktorzy zdobyli wiedzę i poznali doświadczenie innych robotyków, co pozwoliło na dotarcie do zamierzonego celu. Robot (Rys. 1) zadebiutował dnia 12.12.2015 roku podczas zawodów Robotic Arena 2015 organizowanych na Politechnice Wrocławskiej, wygrywając jedną walkę. W tym miejscu kierowane są podziękowania do wszystkich obecnych członków KNR KoNaR, którzy byli odpowiedzialni za organizację warsztatów oraz zawodów robotycznych. Szczególne słowa wdzięczności dla opiekuna zespołu inż. Michała Kotkowskiego, który czuwał nad całym projektem. Rysunek 1. Robot mobilny klasy minisumo Yokozuna 2
2. Budowa robota Projekt budowy robota został podzielony na kilka zasadniczych etapów: 1. Założenia projektowe (Rys. 2) 2. Poszukiwanie i analiza podobnych konstrukcji 3. Projektowanie urządzenia 4. Pozyskiwanie komponentów 5. Montaż elementów 6. Testowanie, debugowanie 7. Dokumentacja projektu 8. Demonstracja robota 2.1. Założenia projektowe Przeznaczenie konstrukcji: Robot walczący, mający za zadanie zlokalizować przeciwnika i wypchnąć go z ringu (jap. dohyo) Robot autonomiczny: samodzielnie funkcjonuje i podejmuje decyzje o sterowaniu efektorami w oparciu o zaprogramowane zadania, z wykorzystaniem sensorów dostarczających mu informacji o otoczeniu. Sensory: Czujniki odległości informują o zlokalizowaniu przeciwnika, a czujniki odbiciowe powiadamiają o zbliżaniu się do krawędzi dohyo. Efektory: Silniki wprawiają w ruch robota zgodnie z instrukcjami od mikrokontrolera wydanymi na podstawie informacji ze świata zewnętrznego uzyskanymi poprzez sensory. Mechanika: Napęd na dwa koła, skręcanie robota realizowane odpowiednią regulacją prędkości i kierunku obracania obu silników. Elektronika: Rolę jednostki sterującej będzie pełnił mikrokontroler o architekturze ARM, (Advanced. RISC Machine), który oferuje dużą moc obliczeniową przy małym zapotrzebowaniu na energię. Programowanie: Zakładana jest możliwość modyfikowania algorytmu sterowania, tj. musi istnieć możliwość programowania mikrokontrolera. Wymiary i waga: Regulaminowe wymiary robota klasy minisumo to 100x100 [mm], przy czym jego wysokość jest dowolna. Dopuszczalna masa robota to 500 [g]. Bezpieczeństwo: Robot nie może zagrażać zdrowiu i życiu człowieka. W tym celu należy dołączyć obsługę bezprzewodowego modułu bezpieczeństwa, pozwalającego rozpocząć lub przerwać działanie robota w dowolnej chwili czasu. 3
Rysunek 2. Schemat ideowy robota mobilnego typu minisumo 2.2. Mechanika Wykonanie konstrukcji mechanicznej było mocno uzależnione od dostępnych materiałów oraz możliwości ich obróbki, a w szczególności od związanych z tym kosztów. Cała konstrukcja mechaniczna (Rys. 3) została zaprojektowana w oprogramowaniu Autodesk Inventor 2016, który pozwolił na wykonanie modeli 3D poszczególnych elementów, a następnie umożliwił wygenerowanie rysunków wykonawczych, złożeniowych oraz poglądowych. 2.2.1. Korpus Projekt: Rozważano różne sposoby wykonania korpusu całego robota. Na samym początku planowano wyfrezowanie obudowy w aluminium na obrabiarce CNC. Niestety brak dostępu do takiego sprzętu oraz zbyt skromny budżet, aby to zlecić zewnętrznej firmie spowodował odrzucenie tego pomysłu. Następnie pod uwagę brano: płyty plexi, laminat lub blachę. W przypadku dwóch pierwszych tworzyw pojawił się problem z ich łączeniem, więc również z nich zrezygnowano. Z uwagi na dostęp do materiałów i narzędzi blacharsko-dekarskich ostatecznie wybrano blachę stalową ocynkowaną o grubości 0.5 mm W dalszej kolejności należało zamodelować bryłę korpusu oraz przygotować jej siatkę z uwzględnionymi miejscami gięcia blachy (Rys. 4). W tym celu skorzystano z modułu do projektowania konstrukcji blaszanych w oprogramowaniu Autodesk Inventor 2016. W fazie projektowania w pierwszej kolejności zajęto się umiejscowieniem napędu. Po tym można było określić ilość wolnego miejsca na płytkę z układem elektronicznym. Po zaprojektowaniu układu elektronicznego w projekcie zostały zwymiarowane otwory montażowe dla śrub oraz czujników (tj. odległości oraz białej linii). Nieplanowanie pojawiły się także otwory dla kondensatorów elektrolitycznych nie mieszczących się wewnątrz obudowy. 4
Rysunek 3. Model 3D korpusu wraz z zamontowanym napędem i czujnikami Rysunek 4. Siatka korpusu przygotowana do procesu gięcia i wiercenia 5
Realizacja: I. Cały proces realizacji rozpoczął się od wydrukowania szablonu 2D korpusu i przyklejeniu go wprost na arkusz blachy ocynk. W ten sposób nie trzeba było wymiarować na materiale obrysów i otworów do wiercenia. Zabieg ten przyspieszył i uprościł cały proces trasowania. II. Za pomocą nożyc do blachy należało wyciąć ogólny kształt siatki wzdłuż ciągłych linii. III. W następnym kroku należało zaznaczyć punktakiem środki otworów do przewiercenia. W celu uzyskania otworów prostokątnych dla czujników odległości trzeba było naznaczyć wiele takich punktów wiercenia. IV. Przy zachowaniu należytych środków ostrożności rozpoczęto proces wiercenia. Najpierw tworzono otwory o mniejszej średnicy, a następnie rozwiercano je wiertłami o docelowej średnicy. Jak widać na poniższym zdjęciu (Rys. 5) najwięcej czasu i cierpliwości należało poświęcić otworom na czujniki które należało dodatkowo wyszlifować pilnikiem. Rysunek 5. Wykonywania korpusu robota z blachy ocynk V. Od początku zakładano gięcie blachy z której miał powstać korpus za pomocą krawędziarki. Okazało się jednak, że przy takich wymiarach jest to niemożliwe. Ostatecznie blacha była gięta ręcznie przy pomocy imadła, szczypiec, młotka i wszystkich innych narzędzi które w danym momencie do tego potrzebne. VI. Kolejnym etapem było malowanie. Zdecydowano, że będzie to kolor czarny mat, który w pewnym stopniu pochłania promieniowanie podczerwone, utrudniając wykrywanie robota przez czujniki podczerwieni przeciwnika. 6
VII. Wytworzony w ten sposób korpus nie był do końca idealny. W trakcie gięcia podstawa korpusu została zdeformowana. Skutkowało to przechyleniem podwozia na jedną stronę, w efekcie przy jeździe na wprost robota ściągało na tą stronę. Rozwiązano ten problem poprzez wzmocnienie podstawy od wewnątrz za pomocą laminatu o grubości 1 [mm]. VIII. Ze względu na małą masę całej konstrukcji należało w jakiś sposób ją zwiększyć. W tym celu wykonano prowizoryczną pokrywę z blachy do której przymocowano dociążenie w postaci 3 sztabek blachy stalowej o wymiarach (43.50 x 85.60 x 3.00) i wadze 80 [g]. W sumie dociążyło to konstrukcję o 240 [g] co stanowi ok. 50 % całkowitej masy robota. 2.2.2. Napęd Silniki: Do napędzania całego robota wykorzystano dwa miniaturowe, ale bardzo mocne silniki firmy Pololu z przekładnią 50:1. Wybór podyktowany był większym momentem obrotowym, a co za tym idzie większym przyspieszeniem w porównaniu do tych samych silników z przełożeniem 30:1. Zakładano że, robot powinien mieć bardziej siłę do przepychania przeciwnika niż osiągać dużą prędkość, jak w przypadku robotów typu Line Follower. Rysunek 6. Silnik DC firmy Pololu z przekładnią 50:1. Koła: Wybrano popularne koła Solarbotics RW2i wykonane z gumy zapewniającej wysoką przyczepność. Mocowanie zewnętrzne zapewniło nam lepszy montaż i demontaż kół, ale niestety kosztem pomniejszenia o kilka milimetrów dostępnej przestrzeni przewidzianej na układ elektroniczny. 7
Rysunek 7. Koła Solarbotics RW2 - mocowanie zewnętrznie Mocowania silników: Tutaj rozważano samodzielne wykonanie mocowań, jednakże okazało się to zbyt kłopotliwe i ryzykowane. Jest to dosyć istotny element i jego uszkodzenie podczas zawodów mogło przysporzyć niepotrzebnych problemów (np. wyrwanie kabli z silnika - uszkodzenie styków nietanich silników). Zdecydowano o zakupie dedykowanych, prostych w montażu mocowań. Ponadto dostępna nota katalogowa ułatwiła zwymiarowanie otworów montażowych. Rysunek 8. Mocowania do mikrosilników Pololu 2.2.3. Podsumowanie Pług: Podczas projektowania zaniechano zamontowanie pługa, służącego do podważania przeciwnika.wynikało to poniekąd z braku możliwości przymocowania go w sensowny sposób do planowanej konstrukcji blaszanej. Element ten okazał się jednak niezbędny podczas walk. Na zawodach 3 z 4 robotów podważyło naszego minisumo, co w takich sytuacjach przesądzało o przegra- 8
nej walce. W najbliższej przyszłości planowana jest modernizacja obudowy, która będzie już ten element zawierać. Środek ciężkości: Z uwagi na konieczność dociążenia całej konstrukcji, środek ciężkości znajduje się ponad podstawą robota, co umożliwia przeciwnikowi łatwe podważanie i przewracanie robota podczas walki. W przyszłościowych konstrukcjach należy to uwzględnić. Umiejscowienie akumulatora: Akumulator tymczasowo zamontowano na pokrywie razem z dociążeniem. Jest to rozwiązanie przejściowe. Umiejscowienie złączy/przycisków: Dobrym rozwiązaniem byłoby wykonanie dodatkowej płytki (adaptera) z włącznikiem zasilania, złączami programowania oraz start modułu na samym wierzchu robota. Zwiększyłoby to komfort użytkownia. 2.3. Elektronika Elektronika w całości została wykonana w programie KiCad, jest to program na licencji open source, który posiada szeroko rozwiniętą społeczność, co w znacznym stopniu ułatwiło projektowanie schematu ideowego oraz montażowego. Wybór został podyktowany poradami starszych kolegów z Koła Naukowego Robotyków KoNaR. Ten wybór okazał się kluczowy dla losów całego projektu, ponieważ program umożliwia w łatwy sposób tworzenie swoich footprintów oraz modyfikowanie już istniejących. Na schemacie montażowym szerokość najcieńszej ścieżki wynosiła 10 milsów, była to optymalna szerokość ze względu na metodę wykonywania płytki (fototransfer) oraz szerokość padów mikrokontrolera. Wykonana płytka jest jednostronna z elementami SMD, co umożliwiło zmieszczenie całej elektroniki na płytce 98x70mm. Zdjęcie z polutowaną płytką znajuduję się na rysunku 9. Rysunek 9. Polutowana płytka 9
Rysunek 10. Złącze JST 2.3.1. Zasilanie Robot zasilany jest z akumulatora litowo-polimerowego. Nasz pakiet składa się z dwóch celi, dzięki czemu otrzymujemy napięcie 7, 4V. Pojemność pakietu to 800mAh, przy maksymalnym prądzie rozładowanym równym 20A. Akumulator jest wyposażony w wtyk JST co w połączeniu z gniazdem JST daje zabezpieczenie przed odwrtoną polaryzacją (Rysunek 10). Na płytce wykorzystujemy 3 poziomy napięć. Do zasilania logiki tj. mikrokontrolera oraz mostków H użyte zostało napięcie 3, 3V do zasilania czujników 5V oraz 7, 4V do zasilania stopnia mocy odpowiedzialnego za ruch silników. Wykorzystanie takich poziomów napięć pozwoliło na najbardziej efektywne wykorzystanie komponentów. Napięcia 5V oraz 3, 3V uzyskujemy dzięki stabilizatorom LM1117 w obudowie SOT223. Są to stabilizatory LDO (Low Drop Out), co pozwoliło nam uniknąć sytuacji, że na wyjściu stabilizatora nie ma zakładanego napięcia, ponieważ na wejściu znajduje sie za małe napięcie. Za stabilizatorem 3V3 znajduję się dioda sygnalizująca poprawne działanie układu zasilającego. Zasilanie jest włączane poprzez przełącznik dwupozycyjny. Rysunek 11 ukazuje schemat ideowy modułu zasilania. 2.3.2. Mikrokontroler Zdecyowaliśmy się na mikrokontroler z rodziny STM, a konkretnie STM32F100C4T6B. Dane techniczne: 32-bitowy rdzeń ARM Cortex M3, Pamięć Flash 16kB, Pamięć RAM 4kB, Maksymalna częstotliwość taktowania rdzenia: 24MHz Maksymalny pobór prądu: 15.7mA Ilość liczników 16-bitowych: 6 12-bitowy przetwornik ADC (10 kanałów) Obudowa LQFP48 Wybór padł na mikrokontrolery z rodziny STM, ponieważ chcieliśmy iść z 10
Rysunek 11. Schemat modułu zasilania duchem czasu jak i również poznawać nowe środowiska programistyczne oraz architektury mikrokontrolerów (dlatego odrzuciliśmy AVR). Mamy możliwość debugowania mikrokontrolera poprzez płytkę testową STM32F3DISCOVERY oraz wtyk z kluczem umieszczony na płytce. Duże znaczenie przy wyborze mikrokontrolera miał fakt, że znajduje się on w obudowie LQFP48, co pozwoliło nam na oszczędność miejsca. Schemat na rysunku 12 pokazuje sposób zasilania oraz podłączenie mikrokontrolera. Rysunek 12. Schemat podłączenia mikrokontrolera 11
2.3.3. Czujniki Robot do podejmowania autonomicznych decyzji podczas walki posiada czujniki, które pozwalają mu na poznanie otoczenia. W naszej konstrukcji zastosowaliśmy dwa rodzaje czujników, których podłączenie prezentuje schemat na rysunku 13 Rysunek 13. Schemat podłączenia czujników Pierwszym z nich jest czujnik białej lini, do wykonania tego zabezpieczenia użyliśmy transoptora (fotodioda z fototranzystorem w jednej obudowie) KTIR0711s. Jego podstawowe parametry to: Maksymalne napiecie diody IR; 5V Maksymalny prąd diody IR: 50mA Maksymalny prąd kolektora 20mA Obudowa montowana powierzchniowo Podczas walk minisumo czujnik ten wykrywa tylko skrajne wartości (czerń lub biel), co sprawia, że może on się znajdować nawet do 0,5 cm ponad powierzchnią dohyo. Nasz robot posiada dwa takie czujniki, które mają wyjścia analogowe, które zwracają wartość od 0V do 5V, dlatego na kolektorze fototranzystora zastosowaliśmy dzielnik napięcia przez co maksymalne napięcie jakie pojawi sie na kanale ADC wynosi 3, 3V. Drugim czujnikiem zastosowanym w naszej konstrukcji jest cyfrowy czujnik odległości Sharp GP2Y0D340K o parametrach: Napięcie zasilania: 4, 5V do 5, 5V Pobór prądu: 28mA Czas odpowiedzi: 8ms Zakres pomiarowy: 40cm 12
Jeżeli zostanie wykryty przeciwnik na wyjściu czujnika pojawia się 0V natomiast, gdy czujnik nie wykrywa nic to na wyjściu pojawia się 5V, stąd konieczne było zastosowanie dzielnika napięciowego. Wybór padł na ten model ze względu na krótki czas odpowiedzi. Pod uwagę były również brane analogowe czujniki odległości jednak odstawały znacznie szybkością działania. 2.3.4. Sterowanie silnikami Silniki są sterowane poprzez mostki H TB6612FNG, a konkretnie moduł z tym układem. Parametry modułu: Zasilanie silników(vmot): 4,5 13,5 V Zasilanie układu logicznego (VCC): 2,7 5,5 V Maksymalny prąd wyjściowy: 3 A na kanał Ciągły prąd wyjściowy: 1 A na kanał Przy połączeniu obu kanałów: 2 A Maksymalna częstotliwość PWM: 100 khz Wbudowany termiczny obwód odcinający Kondensatory filtrujące na obu liniach zasilających Ochrona przed prądem zwrotnym z silników Rysunek 14. Mostki H Każdy silnik posiada osobny sterownik przez co uzyskujemy maksymalny prąd. Zasilanie oraz podłączenie układów jest pokazane na schemacie z 13
rysunku 14. Wybraliśmy ten moduł, ponieważ posiada on wbudowany termiczny obwód odcinający oraz dodatkowo ochronę przed prądem zwrotnym. Dodatkowo moduł jest na osobnej płytce co pozwoliło go zamontować na drugiej warstwie i zaoszczędzić miejsce. 2.3.5. Interfejs komunikacyjny Z robotem można się komunikowac poprzez interfejs SWD. Aby ułatwić oraz przyśpieszyć proces podłączania robota do płyty testowej STM32DISCOVERYF3 stworzyliśmy kabel, który jest z jednej strony na stałe przypięty do płyty testowej, a z drugiej posiada gniazdo żeńskie z kluczem, które wpinamy do robota. Robota można startować i zatrzymywać poprzez START MODULE. 2.4. Program Program kontrolujący pracę robota został napisany strukturalnie w języku C. W celu ułatwienia tworzenia kodu dla mikrokontrolera wykorzystano środowisko programistyczne System Workbench for SMT32 (SW4STM32), które bazuje na popularnym Eclipse IDE. Co ciekawe jest to jedyne darmowe oprogramowanie, oficjalnie wspierane przez producenta tych mikrokontrolerów - STMicroelectronics. Ze względu na fakt, że tworzenie od podstaw kodu odwołującego się do niskopoziomowych instrukcji mikrokontrolera jest dla początkujących bardzo przytłaczające, skorzystano z narzędzia STM32CubeMX. Jest to oprogramowanie pozwalające na generowanie kodów funkcji obsługujących peryferia mikrokontrolera (np. timery, ADC, PWM, UART itd.) poprzez proste graficzne interfejsy. Wytworzony w ten sposób kod programu można zaimportować do SW4STM32 i dalej edytować. Takie podejście pozwala zaoszczędzić sporo czasu i cierpliwości. Pozostaje tylko skupić się na implementacji algorytmu sterowania, ponieważ automat zbudował bazę potrzebnych funkcji do których można się w prosty sposób odwoływać w trakcie tworzenia programu. Podczas pisania programu w większości przypadków odwoływano się do funkcji z biblioteki HAL. Warto zaznaczyć, że wykorzystywane oprogramowanie pozwalało na skuteczne debugowanie tworzonego programu. 14
Rysunek 15. Zrzut ekranu z konfiguracją mikrokontrolera w STM32CubeMX Rysunek 16. Zrzut ekranu ze środowiska programistycznego SW4STM32 15
2.4.1. Konfiguracja peryferii Obsługa sygnałów I/O: GPIO (z ang. General Purpose Input/Output) to podstawowy interfejs służący do komunikacji pomiędzy mikrokontrolerem i urządzeniami peryferyjnymi np. microswitch (sygnał wejściowy), LED (sygnał wyjściowy). Wyprowadzenia (piny) mogą służyć jako wejścia jak i wyjścia sygnałów. W przypadku obsługi sterowników silników wykorzystano cztery piny ustawione jako wyjścia cyfrowe (GP IO OU T ), odpowiadają one za kontrolę kierunku obrotów obydwóch silników. Jako wejścia cyfrowe (GP IO IN) z obsługą zewnętrznego przerwania (przy narastającym lub odpadającym zboczu) ustawiono czujniki odległości. Wykrycie stanu niskiego na danym pinie oznacza, że znaleziono przeciwnika lub stanu wysokiego - czyli go nie widać. Za pomocą funkcji obsługujących przerwania modyfikowano wartości zmiennych globalnych, które przechowywały wartości boolowskie tj. dany czujnik widzi lub nie widzi przeciwnika. Flagi te następnie sprawdzono w pętli głównej programu i za pomocą nich definiowano sposób poruszania się robota. W podobny sposób ustawiono piny START/KILL modułu bezpieczeństwa. Przetwornik ADC: Mikrokontroler posiada wbudowany 10 kanałowy przetwornik ADC o 12-bitowej rozdzielczości. Skonfigurowano go w tryb ciągłego przetwarzania wartości analogowej napięcia z czujnika KTIR na postać cyfrową. W wyniku tego otrzymuje się wartość liczbową zapisaną na 12 bitach (2 12 liczb), czyli z przedziału 0-4095. W tym projekcie wykorzystano dwa kanały działające w trybie injected. Przetworzone wartości odczytywano bezpośrednio w pętli głównej programu i w ten sposób określano, czy robot zbliża się do krawędzi ringu. W przypadku większej ilości czujników lepszym rozwiązaniem byłoby skonfigurowanie ich obsługi przy pomocy DMA (bezpośredni dostęp do pamięci z ang. Direct Memory Access). Kontroler DMA ma za zadanie odciążyć zasoby jednostki obliczeniowej od ciągłego przesyłania danych z urządzenia wejściowego do pamięci RAM. Procesor może w tym czasie zajmować się wykonywaniem innych, ważniejszych rozkazów. Obsługa PWM: Do sterowania szybkością obrotów silników wykorzystano metodę regulacji wypełnienia sygnału o stałej amplitudzie i częstotliwości tj. PWM (z ang. Pulse Width Modulation). Wykorzystany mikrokontroler pozwala na wygenerowanie sygnału prostokątnego o zmiennym wypełnieniu, który jest podawany na wejście danego sterownika silnika. W dalszym kroku należało określić częstotliwość jaką będzie miał ten sygnał. W tym celu korzystany ze wzoru [1]. f P W M = CLK (P SC + 1)(ARR + 1) = 24 10 6 (3 + 1)(255 + 1) = 24 [khz] (1) W celu eliminacji zjawiska piszczenia silnika ustawiono częstotliwość powyżej progu słyszalności ludzkiego ucha (tj. powyżej 20 khz) 16
2.4.2. Algorytm sterowania Algorytm sterowania przedstawiono na diagramie czynności (Rys. 17) Rysunek 17. Algorytm sterowania robota minisumo (diagram czynności) 17
2.5. Geneza nazwy robota Robot został ochrzczony imieniem Yokozuna. Jest to najwyższej rangi tytuł zawodowego mistrza sumo (wielki mistrz). Nadawany jest najlepszym zawodnikom dożywotnio. Odgrywa dużą rolę w ceremoniale walki, mając m.in. prawo do zasiadania w radzie starszych. Konstruktorzy zawsze mierzyli wysoko, stąd taka nazwa robota. 3. Podsumowanie Opracowanie ma na celu przede wszystkim przekazanie rad i uwag osobom, które podobnie jak autorzy tego tekstu dopiero rozpoczynają swoją przygodę z robotyką. W niniejszym dokumencie opisano proces projektowania, budowy oraz testowania robota walczącego klasy minisumo. Ujęto w nim aspekty dotyczące części mechanicznej, elektronicznej oraz programistycznej. Końcowym efektem tego projektu jest działająca konstrukcja, która zadebiutowała podczas zawodów Robotic Arena 2015 organizowanych na Politechnice Wrocławskiej przez Koło Naukowe Robotyków KoNaR. Pomimo tego, że robot wygrał tylko jedną walkę i odpadł w fazie grupowej, konstruktorzy są usatysfakcjonowani. Wszystkich zakładanych celów nie udało sie zrealizować. W przyszłości należy dodać element podważający przeciwników tj. pług oraz należy lepiej wykonać korpus, tak aby dolna podstawa była jak najbardziej dociążana. Co do części elektronicznej dobrym krokiem byłoby wykonać płytkę dwustronną co ułatwiłoby łatwiejszy montaż czujników odległości. Według autorów konstrukcji wszystkie elementy spisywały się znakomicie, co nie oznacza, że teraz zaprzestaną rozwijać ten projekt. W planach jest modernizacja korpusu (lifting) oraz układu elektronicznego, dodaniu dodatkowych 2 czujników na przodzie robota, pod ale pod kątem 45 o, aby wyeliminować martwe punkty. Pondato planowane jest dalsze ulepszanie algorytmu sterowania i udział w zawodach robotycznych. W ramach tego projektu nauczyliśmy się wielu praktycznych rzeczy zarówno samodzielnie, jak i w ramach warsztatów robotycznych organizowanych przez KNR KoNaR: Montowania i uruchamiania prostych układów elektronicznych oraz bardziej zaawansowanych przy budowie robota Wykorzystywania programu Autodesk Inventor, służącego do modelowania 3D projektowanej konstrukcji oraz generowania jej rysunków wykonawczych, Używania programu KiCad, służącego do projektowania schematów elektronicznych oraz płytek drukowanych drukowanych (PCB), Teorii na temat mikrokontrolerów opartych o architekturę ARM, Pracy z modułem rozwojowym STM32F3DISCOVERY, 18
Obsługi środowiska programistycznego SW4STM32 służącego do przygotowywania kodu programu przeznaczonego dla mikrokontrolerów z rodziny STM32, Obsługi programu STM32CubeMX generująego kod funkcji obsługujących konkretne peryferia uc, w bardzo łatwy sposób przy pomocy graficznych interfejsów. Konfigurowania peryferii (ADC, PWM), programowania i degubowania mikrokontolerów STM32 Montażu powierzchniowego elementów elektronicznych (ang. Surface Mount Technology, SMT), Naświetlania, wytrawiania i lutowania płytek PCB, 4. Materiały źródłowe Wiedzę zdobywaliśmy przede wszystkim na warsztatach robotycznych organizowanych przez KNR KoNaR. W dalszej kolejności na podstawie rozmów o różnych rozwiązaniach konstrukcyjnych z doświadczonymi konstruktorami z Koła. Inspiracji poszukiwaliśmy także w Internecie na stronach o tematyce robotycznej i elektronicznej np. Forbot, Elektroda oraz wielu projektów przedstawionych na stronie internetowej KNR KoNaR 19