Micromouse Rapid Raport końcowy. Marcin Niestrój



Podobne dokumenty
Raport z budowy robota typu Linefollower Mały. Marcin Węgrzyn

Projekt i wykonanie robota klasy Micromouse

Linefollower Torpeda. Magdalena Kaczorowska

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Raport Robot mobilny klasy micromouse. Adrian Gałęziowski Paweł Urbaniak

Zastosowanie silników krokowych jako napęd robota mobilnego

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Robot micromouse Rzuf nincza. Hubert Grzegorczyk

Autonomiczny robot mobilny LF3 klasy linefollower. Jacek Jankowski

MCAR Robot mobilny z procesorem AVR Atmega32

Podstawy budowy robotów

Sterownik momentu obrotowego silnika prądu stałego

Raport z budowy robota Krzysio

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

MozhePoyedzye. Robot klasy MiniSumo. Konrad Bednarek Michał Rataj

Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny

CHŁOPCZYK Robot typu Line Follower

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

TIGER Autonomiczny robot mobilny typu Line Follower

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

Politechnika Wrocławska

Konstrukcja Micro Mouse

Robot mobilny klasy minisumo Wojak Wszechmocny. Robert Budziński

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

PRACA DYPLOMOWA MAGISTERSKA

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

MOBOT RoboSnake. Moduł wieloczłonowego robota

2.2 Opis części programowej

Płytka ewaluacyjna z ATmega16/ATmega32 ARE0021/ARE0024

- WALKER Czteronożny robot kroczący

E-TRONIX Sterownik Uniwersalny SU 1.2

1.2. Architektura rdzenia ARM Cortex-M3...16

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

Kod produktu: MP01611

Parametryzacja przetworników analogowocyfrowych

Tester samochodowych sond lambda

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

dokument DOK wersja 1.0

Serwonapędy AC Serie EDC, EDB, ProNet

Proste układy wykonawcze

2.1 Porównanie procesorów

CLIMATE 5000 VRF. Cyfrowy licznik energii DPA-3. Instrukcja montażu (2015/07) PL

Robot mobilny klasy micromouse. IPreferPI. Elżbieta Bundz. Bartosz Wawrzacz. Koło Naukowe Robotyków KoNaR.

Robot mobilny klasy Line Follower Maverick. Łukasz Michalczak Anna Postawka

Wyjścia analogowe w sterownikach, regulatorach

DEKODER DDC. 1). Adres lokomotywy. - Adres krótki i długi. CV1 Do 127

Płytka laboratoryjna do współpracy z mikrokontrolerem MC68332

STEROWANIE ROBOTEM MOBILNYM TYPU LINE-FOLLOWER

KA-Nucleo-Weather. Rev Źródło:

Raport z budowy robota mobilnego klasy minisumo John Cena. Jędrzej Boczar Jan Bednarski Dominik Świerzko

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

SDD287 - wysokoprądowy, podwójny driver silnika DC

ROBOT MOBILNY TYPU LINE FOLLOWER JACK. Michał Rybczyński

Sterowniki Programowalne Sem. V, AiR

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Nowy MULTIMETR z czujnikiem Halla

PX342. Driver PWM 1x10A INSTRUKCJA OBSŁUGI

ZL27ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

projekt przetwornika inteligentnego do pomiaru wysokości i prędkości pionowej BSP podczas fazy lądowania;

Rysunek 1 Schemat ideowy sterownika GSM

SDD287 - wysokoprądowy, podwójny driver silnika DC

Sensory i systemy pomiarowe Prezentacja Projektu SYNERIFT. Michał Stempkowski Tomasz Tworek AiR semestr letni

oznaczenie sprawy: CRZP/231/009/D/17, ZP/66/WETI/17 Załącznik nr 6 I-III do SIWZ Szczegółowy opis przedmiotu zamówienia dla części I-III

Ćw. 18: Pomiary wielkości nieelektrycznych II

Programowanie mikrokontrolerów AVR z rodziny ATmega.

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Badanie czujników odległości Laboratorium Mechatroniki i Robotyki

Dalmierze firmy SHARP na przykładzie 2D120XJ100F

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Ćw. 18: Pomiary wielkości nieelektrycznych II

SPIS TREŚCI TESTERY AKUMULATORÓW

WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI KATEDRA AUTOMATYKI. Robot do pokrycia powierzchni terenu

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Opis techniczny koncentratora wejść impulsowych KWI-1. APATOR SA,

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Laboratorium Procesorów Sygnałowych

Statyczne badanie wzmacniacza operacyjnego - ćwiczenie 7

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Ćw. 18: Pomiary wielkości nieelektrycznych II

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

KA-NUCLEO-Weather. ver. 1.0

Wykrywacz kłamstw. Grzegorz Puzio, Łukasz Ulanicki 15 czerwca 2008

Enkoder magnetyczny AS5040.

KAmduino UNO. Rev Źródło:

Technik elektronik 311[07] moje I Zadanie praktyczne

Struktury specjalizowane wykorzystywane w mikrokontrolerach

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

Płytka uruchomieniowa XM32

Skaneroptyczny- Fafik

Transkrypt:

Micromouse Rapid Raport końcowy Marcin Niestrój Koło Naukowe Robotyków KoNaR www.konar.pwr.wroc.pl 22 stycznia 2013

SPIS TREŚCI SPIS TREŚCI Spis treści 1 Wstęp 2 2 Konstrukcja mechaniczna 2 2.1 Podwozie............................. 2 2.2 Napęd............................... 3 3 Elektronika 3 3.1 Mikrokontroler.......................... 3 3.2 Czujniki odległości........................ 4 3.3 Enkodery............................. 4 3.4 Żyroskop.............................. 5 3.5 Mostki H............................. 5 3.6 Zasilanie.............................. 5 4 Oprogramowanie 10 4.1 Interfejs użytkownika....................... 10 4.2 Akwizycja danych z czujników analogowych.......... 10 4.3 Korygowanie pozycji względem ścian.............. 11 4.4 Zmiana wartości ADC z czujników IR na dystans....... 12 4.5 Profil jazdy robota........................ 12 4.6 Sterowanie silnikami....................... 14 4.7 Algorytm przeszukiwania..................... 15 4.8 Algorytm wyznaczania najszybszej trasy............ 15 1

2 KONSTRUKCJA MECHANICZNA 1 Wstęp Celem projektu było wykonanie robota klasy micromouse. Jego zadaniem jest przeszukiwanie labiryntu oraz optymalny przejazd od miejsca startowego do wyznaczonego pola końcowego. Projekt ten korzystał w dużej mierze na poprzedniej konstrukcji, robocie Wariat. Wyeliminowane zostały wszystkie podstawowe problemy występujące w poprzednim robocie oraz zastosowano większość pomysłów powstałych podczas budowy nowej konstrukcji. Ostatnim zadaniem projektu było wzięcie udziału w zawodach Robotic Arena 2012, co zaowocowało zajęciem pierwszego miejsca w kategorii micromouse. Rysunek 1: Rapid 2 Konstrukcja mechaniczna 2.1 Podwozie Robot zbudowany jest na płytce PCB, która stanowi jego podwozie. Założeniem projektu było uzyskanie nisko położonego środka ciężkości oraz jak najmniejszej masy. Dodatkowym atutem robota miała być jego mała szerokość, która pozwalałaby na poruszanie się po skosie. Kształt robota jest zaokrąglony z przodu. Wynikiem tego zabiegu jest lepsze zachowanie się robota podczas ewentualnych zderzeń ze ścianami lub słupkami. Wymiary robota to 112mm długości i 75mm szerokości, natomiast jego waga to 82 87g w zależności od użytych baterii. Zdjęcia przedstawiające robota pokazano na rysunkach 2-5. 2

2.2 Napęd 3 ELEKTRONIKA Rysunek 2: Widok z góry Rysunek 3: Widok z przodu Rysunek 4: Widok z tyłu Rysunek 5: Widok z boku 2.2 Napęd Napędem robota są dwa silniki Pololu 10:1 HP. O ich wyborze zdecydowała cena, dostępność, zintegrowane przekładnie oraz małe wymiary i waga. Silniki jednocześnie pozwalają uzyskać bardzo dobre prędkości przejazdu robota. Maksymalnymi parametrami jakie udało się osiągnąć są: przyspieszenie liniowe równe a = 9 m oraz prędkość maksymalna v s 2 max = 3 m. Silniki posiadają s jednak spory zapas mocy, który będzie można wykorzystać po zaimplementowaniu lepszego algorytmu sterowania robotem. Negatywną cechą stosowanego napędu jest jego trudne wysterowanie dla małych prędkości, do 30 cm. Własność ta przeszkadza szczególnie w początkowych fazach rozwoju s oprogramowania. 3 Elektronika 3.1 Mikrokontroler Sercem robota jest mikrokontroler STM32F405RGT6. O wyborze zdecydowała chęć nauki programowania mikrokontrolerów STM32 z najpotężniejszym rdzeniem Cortex-M4F oraz najmniejsza obudowa spośród wszystkich procesorów rodziny STM32F4. Najważniejszymi cechami mikrokontrolera są: 3

3.2 Czujniki odległości 3 ELEKTRONIKA taktowanie 168MHz, 192kB RAM, 1MB FLASH, bardzo duża liczba timerów (m.in. ze sprzętową obsługą PWM oraz wyjść kwadraturowych enkoderów), wiele kanałów przetwornika ADC, DMA, sprzętowa obsługa liczb zmiennoprzecinkowych i wiele dostępnych interfejsów komunikacyjnych. Dostępność poszczególnych peryferii mikrokontrolera na wielu pinach wyjściowych pozwoliła na łatwe zaprojektowanie płytki drukowanej PCB. Duża pojemność pamięci RAM oraz FLASH pozwala natomiast na łatwiejsze i szybsze rozwijanie oprogramowania, bez konieczności ciągłej optymalizacji kodu programu. 3.2 Czujniki odległości Jako czujniki odległości wykorzystano diody SFH4511 oraz fototranzystory TEFT4300. Schemat podłączenia został pokazany na rysunku 8. Małe wartości rezystorów w szeregowym połączeniu z diodami podczerwieni pozwalają na uzyskanie większej intensywności emitowanego światła, czego wynikiem są dokładniejsze pomiary odległości. Wadą takiego rozwiązania jest konieczność impulsowego sterowania diodami LED (ciągłe świecenie diody powodowałoby jej trwałe uszkodzenie). 3.3 Enkodery Zamontowanie enkoderów obrotowych z magnesami na osiach silników powodowałoby poszerzenie całej konstrukcji, więc zdecydowano się na użycie enkoderów liniowych wraz z odpowiednimi magnesami. Wykorzystane enkodery AS5304 oraz zamocowane magnesy na kołach robota przedstawiono na rysunku 6. Rysunek 6: Sposób zamontowania enkoderów i magnesów Użyte czujniki pozwalają uzyskać rozdzielczość 3520 impulsów na obrót koła, co daje w wyniku 0.028 mm/impuls. 4

3.4 Żyroskop 3 ELEKTRONIKA 3.4 Żyroskop Wybranym żyroskopem jest analogowy czujnik ISZ-650 firmy Invensense. Jego zakres pomiarowy to ±2000 o /s. O jego wyborze zdecydowała głównie dostępność i cena w czasie zakupu. Sposób podłączenia czujnika przedstawiono na rysunku 8. Błędem okazał się brak wyprowadzenia pinu pozwalającego na uzyskanie informacji o temperaturze sensora. Konsekwencją tego był szybko narastający dryf czujnika. Podczas testów robota uszkodzono sensor, dlatego konieczna była jego wymiana. Zdecydowano się na moduł z żyroskopem L3GD20. Do podłączenia wykorzystano miejsce na wyświetlacz N3310 wraz z wyprowadzonym interfejsem SPI. Ważną cechą charakterystyczną tego sensora jest bardzo mały dryf wartości wyjściowej. 3.5 Mostki H Mostki H pełnią rolę sterownika silników. Sygnałem wejściowym i wyjściowym jest modulacja PWM. W projekcie użyto dwóch układów TB6612, po jednym na każdy silnik. Wynikiem tego jest spory zapas mocy wydzielanej przez sterowniki. Schemat podłączenia układów przedstawiono na rysunku 9. 3.6 Zasilanie Jako zasilanie wykorzystywane są akumulatory litowo-polimerowe o bardzo małym rozmiarze i niewielkiej masie. Z powodu małych pojemności konieczna jest ich częsta wymiana i ładowanie. W robocie używane są zamiennie dwa zestawy pakietów: 2x Lightmax 138mAh 3.7V oraz 2x 3E Model Max Force 230mAh 3.7V. Baterie są podłączane szeregowo, tak by uzyskać napięcie wyjściowe równe 7.4V. W konstrukcji użyte zostały dwa stabilizatory, dające na wyjściu 5V oraz 3.3V. Napięcie równe 5V wykorzystywane jest do zasilania enkoderów oraz diod podczerwieni, natomiast napięciem 3.3V zasilana jest pozostała część elektroniki w robocie. Silniki są sterowane natomiast napięciem bezpośrednio z akumulatorów. Schemat elektryczny zasilania robota przedstawiony jest na rysunku 7. 5

3.6 Zasilanie 3 ELEKTRONIKA Rysunek 7: Schemat elektryczny - zasilanie oraz wyprowadzenia mikrokontrolera 6

3.6 Zasilanie 3 ELEKTRONIKA Rysunek 8: Schemat elektryczny - czujniki odległości oraz żyroskop 7

3.6 Zasilanie 3 ELEKTRONIKA Rysunek 9: Schemat elektryczny - silniki oraz enkodery 8

3.6 Zasilanie 3 ELEKTRONIKA Rysunek 10: Schemat elektryczny - interfejs komunikacyjny 9

4 OPROGRAMOWANIE 4 Oprogramowanie 4.1 Interfejs użytkownika Założeniem projektu było wykorzystanie joysticka oraz wyświetlacza z telefonu Nokia 3310. Obecnie oprogramowanie nie zawiera obsługi wyświetlacza, dlatego nie jest on zamontowany. Do wyboru prostych komend służy joystick oraz zamontowany buzzer. Buzzer służy także jako powiadomienie o charakterystycznych sytuacjach w labiryncie, np. wykrycie ścianki, dojechanie do środka labiryntu. Jest on niezastąpiony podczas debugowania programu, ponieważ znacznie łatwiej jest usłyszeć sygnał dźwiękowy niż zobaczyć świecącą się diodę LED podczas szybkich przejazdów robota. W projekcie zastosowano moduł Bluetooth BTM-222 do komunikacji z komputerem oraz analizowania danych sensorycznych. Dzięki niemu możliwe jest wypisanie stanu programu podczas jazdy robota, bez konieczności wyjmowania go z labiryntu. 4.2 Akwizycja danych z czujników analogowych Oprogramowanie mikrokontrolera służące do zbierania informacji z żyroskopu i dalmierzy optycznych zostało zrealizowane z użyciem następujących peryferii mikrokontrolera: SysTick, ADC oraz DMA. Opis sposobu ich wykorzystania został zamieszczony w tabeli 1. Żyroskop posiada funkcję automatycznej kalibracji, wyzerowania różnicy pomiędzy napięciem referencyjnym oraz wyjściem żyroskopu. Zauważono jednak, że funkcja ta jest niewystarczająca, dlatego zdecydowano się na programową kalibrację żyroskopu. Poniżej przedstawiono wynik pracy: void CalibrateGyro(int16_t msec) { int32_t kat=0; int16_t i; gyro_calib_time = msec; // Zapamietanie czasu kalibracji for (i=0; i<msec; i++) { DelaymSec(1); kat += (adc3_buf[1] { adc3_buf[0]); // (GYRO_OUT - GYRO_VREF) } } gyro_calib = kat; 10

4.3 Korygowanie pozycji względem ścian 4 OPROGRAMOWANIE Tabela 1: Opis wykorzystanych peryferii mikrokontrolera Peryferia Funkcja SysTick Służy on jako przerwanie cykliczne mikrokontrolera co 1ms. W funkcji obsługi przerwania wyzwalane jest przetwarzanie ADC oraz całkowana jest prędkość kątowa żyroskopu. ADC Przetwornik analogowo-cyfrowy został wykorzystany w celu zamiany sygnału analogowego na prędkość kątową, wykorzystywaną w programie mikrokontrolera. Po zakończeniu konwersji wyzwalany jest transfer DMA. DMA Służy do skopiowania wyniku konwersji ADC do pamięci RAM. Jest to bardzo ważne przy obsłudze wielu kanałów przetwornika, gdzie wynik przetwarzania jednego kanału jest zapisywany w rejestrze, a następnie po zakończeniu konwersji wyniku kolejnego kanału, do rejestru zapisywana jest nowa wartość. DMA służy głównie do odciążenia procesora oraz łatwiejszego sczytywania pomiarów. gyro calib - wartość odejmowana przy całkowaniu prędkości kątowej z żyroskopu gyro calib time - czas kalibracji 4.3 Korygowanie pozycji względem ścian Podczas jazdy po labiryncie ważne jest korygowanie pozycji względem ścian po bokach jak i z przodu robota. Sumowanie się małych błędów, wynikających z obliczania rzeczywistej pozycji w labiryncie, prowadzi do błędu rzędu centymetrów. W celu utrzymania robota w środku toru jazdy zastosowano prosty regulator PD. Wejściem dla regulatora jest sygnał z czujników IR, natomiast wyjście regulatora wchodzi bezpośrednio do zmiennej curp os, czyli do pozycji zadanej. Czujniki po bokach odpowiadają tylko za pozycję dla ruchu obrotowego robota, natomiast czujniki skierowane na wprost odpowiadają za pozycję dla ruchu postępowego i obrotowego. Dla czujników skierowanych na ściany po bokach robota można wyróżnić trzy sytuacje. Pierwsza i najprostsza sytuacja ma miejsce wtedy, gdy po obu stronach są ściany. Wejściem dla regulatora jest wtedy różnica między odległością od lewej i od prawej ściany. Druga sytuacja ma miejsce wtedy, gdy po jednej stronie jest ściana. 11

4.4 Zmiana wartości ADC z czujników IR na dystans 4 OPROGRAMOWANIE Wejściem regulatora jest w tym wypadku różnica między odległością od tej ściany i odległością od ściany, gdy robot jest na środku toru jazdy. Trzecia sytuacja to taka, gdy nie ma ścian z żadnej ze stron. W tym wypadku niemożliwe jest określenie błędu pozycji robota, więc regulacja jest wyłączana. Regulacja przy pomocy czujników skierowanych na wprost włączana jest jedynie podczas dojeżdżania do ściany. Wejściem dla regulatora pozycji dla ruchu postępowego jest suma odległości do ściany z obydwu czujników, natomiast wejściem dla regulatora pozycji dla ruchu obrotowego jest różnica odległości od ściany. 4.4 Zmiana wartości ADC z czujników IR na dystans Przejazd w labiryncie, jak i korygowanie pozycji robota wymaga dokładnego określenia odległości od ściany. W tym celu konieczna jest zamiana sygnału z czujników na dystans w milimetrach. Na podstawie odczytu wartości ADC z czujników, wybrano równanie (1) [2], które dobrze określa zależność odległości od ściany od wartości pomiarowej z przetwornika ADC. ( ) a y = ln (1) x b Symbol y oznacza wartość ADC, natomiast x oznacza odległość od ściany. Równanie ma dwa parametry (a oraz b), zależne od aktualnego oświetlenia oraz koloru i powierzchni ścian. W celu skalibrowania czujników do danej ściany, wymagany jest pomiar wartości dla dwóch, znanych odległości. Przykładowe pomiary wraz z krzywą aproksymującą zostały przedstawione na rysunku 11. Linia pomarańczowa oznacza wartości z przetwornika dla danej odległości od ściany, natomiast linia zielona jest określona równaniem podanym wcześniej, dla skalibrowanych już czujników (określonych wartości a oraz b). Zależność wyliczonej odległości od ściany od jej rzeczywistej wartości została przedstawiona na rysunku 12. Można zauważyć, że określenie odległości ma najmniejsze błędy (rzędu ułamków mm) dla przedziału 10-80 mm, czyli dla najczęściej występujących sytuacji w przejeździe robota po labiryncie. 4.5 Profil jazdy robota Podczas jazdy robota po labiryncie, ważna jest dokładna znajomość pozycji. Pozycja robota jest możliwa do obliczenia z odczytu enkoderów, pod warunkiem, że koła robota się nie ślizgają. W tym celu należało zapewnić stopniowe rozpędzanie się robota oraz stopniowe hamowanie [2]. 12

4.5 Profil jazdy robota 4 OPROGRAMOWANIE Rysunek 11: Pomarańczowe punkty - wartości z przetwornika ADC, zielona linia - równanie aproksymujące Rysunek 12: Pomarańczowa linia - rzeczywiste wartości odległości, zielone punkty - wyliczone wartości Ruch robota został rozbity na ruch postępowy oraz ruch obrotowy. Każdy z tych ruchów jest sterowany tym samym algorytmem, jednak wyjaśnienie zostanie przedstawione jedynie na przykładzie ruchu postępowego. Program zapisuje prędkość, z którą robot powinien się w danym momencie poruszać, w zmiennej curspeed. Podczas jazdy po długiej prostej, robot zwiększa swoją 13

4.6 Sterowanie silnikami 4 OPROGRAMOWANIE prędkość, aż do uzyskania maksymalnej zadanej prędkości topspeed. W każdym kolejnym kroku (przerwaniu mikrokontrolera) obliczane jest opóźnienie (wartość przeciwna przyspieszenia) ze wzoru a = curspeed2 endspeed 2, gdzie 2 dist dist oznacza dystans który pozostał do pokonania, natomiast endspeed jest zadaną prędkością końcową. Obliczona wartość porównywana jest z zadanym przyspieszeniem, z którym ma się poruszać robot. W momencie przekroczenia tej wartości, algorytm rozpoczyna fazę spowalniania. Wartość zmiennej curspeed podczas fazy przyspieszania i spowalniania została przedstawiona na rysunku 13. Rysunek 13: Stan prędkości curspeed w fazach: przyspieszenia, prędkości maksymalnej i spowalniania 4.6 Sterowanie silnikami Sterowanie prędkością silników zostało zrealizowane przez mostek H, którego sygnałem wejściowym jest sygnał PWM. Wartość sygnału obliczana jest przez regulator PD (proporcjonalno-różniczkujący) osobno dla ruchu postępowego i ruchu obrotowego [3]. W labiryncie najważniejsze jest położenie robota, dlatego jest ono wartością zadaną regulatora. Pozycja robota curp os jest obliczana przez sumowanie (całkowanie) prędkości curspeed. Uchyb regulatora jest obliczany przez odjęcie od zadanej pozycji przebytego dystansu, odczytanego z enkoderów oraz żyroskopu. Wartość odczytana z enkoderów zostaje przekształcona z prędkości dwóch kół na prędkość liniową (suma prędkości kół), wartość z żyroskopu na prędkość kątową. W końcowej fazie, sygnał wyjściowy z regulatora musi być zamieniony z prędkości liniowej i kątowej na prędkość (sygnał PWM) dla każdego koła z osobna. Zostaje to wykonane w sposób odwrotny do zamiany sygnału z enkoderów. Cały układ regulacji został przedstawiony na rysunku 14. 14

4.7 Algorytm przeszukiwania LITERATURA Rysunek 14: Schemat układu regulacji zadanej pozycji robota 4.7 Algorytm przeszukiwania W robocie został zaimplementowany algorytm wlewania wody (floodfill). Służy on do wyznaczania najkrótszej trasy prowadzącej do środka labiryntu. Zakładając, że robot porusza się ze stałą prędkością, wyznaczona najkrótsza ścieżka jest także najszybszą ścieżką prowadzącą do celu. Algorytm floodfill wykorzystywany jest także do przeszukania pozostałej części labiryntu oraz do powrotu robota do pola startowego. 4.8 Algorytm wyznaczania najszybszej trasy Algorytm wyznaczania najszybszej ścieżki różni się od poprzedniego tym, że wagami przejazdu nie jest jego odległość, natomiast jego czas. Pozwala to na wybranie przez robota trasy z mniejszą liczbą zakrętów i większą liczbą odcinków prostych, a w konsekwencji także lepszym wynikiem końcowym danego przejazdu. Literatura [1] http://invensense.com/jp/mems/gyro/documents/ps-isz-0650b-00-02.pdf [2] Strona konstruktorów robotów micromouse, http://www.micromouseonline.com/ [3] Strona konstruktora Ng Beng Kiat, https://sites.google.com/site/ngbengkiat/ 15