Line Follower – autonomiczny robot śledzący trasę

Bartosz Derkacz, Szymon Mońka drukuj

Trasa z zawodów Robotic Arena 2011 [Line Follower track from Robotic Arena 2011]

Trasa z zawodów Robotic Arena 2011 [Line Follower track from Robotic Arena 2011]

Konstrukcja autonomicznego robota poruszającego się wzdłuż wyznaczonej trasy została wykonana z laminatu epoksydowego, który jest jednocześnie obwodem drukowanym. Do rozpoznawania trasy (czarnej linii na białym tle) służą transoptory odbiciowe. Napędem robota są dwa silniki prądu stałego, a sterownie odbywa się na zasadzie różnicy prędkości obrotowej obu kół. Wysoką przyczepność zapewniają opony wykonane ze specjalnego miękkiego tworzywa. Dodatkowo, w celu zwiększenia docisku do podłoża zastosowany został napęd tunelowy. Jednostką sterującą jest 32-bitowy mikrokontroler STM32F103 z rdzeniem Cortex-M3. Całość zasilana jest akumulatorem litowo-polimerowym 2S 7,4 V. Niewielka masa (ok. 130 g) oraz wysoka przyczepność pozwalają robotowi osiągać średnie prędkości przejazdu rzędu 2,5 m/s. Robot jest zwycięzcą największych zawodów robotów odbywających się na terenie Polski (Robotic Arena 2011 – Wrocław – 10.12.2011) oraz jedną z najszybszych konstrukcji tego typu w Europie.

 

Line Follower – autonomous robot that can follow a path

Abstract – This article describes Line Follower – autonomous robot that can follow a path. The chassis is made of epoxy laminate which is also printed circuit. To detect the track, robot uses feedback from optical IR sensors. The drive train is differential type which consists two DC motors with gearboxes. Left and right motor are responsible of moving the robot forward and are also used to turn robot in any required direction by changing the speed of left and right wheel. Soft rubber tires are used to get a higher traction. Additionaly to prevent from slips EDF unit with brushless motor is installed. Central processor unit is STM32F103 microcontroller with Cortex M3 core. Power source is Li-Poly 2S 7,4 V battery. Little weight (130 g) and high traction allow robot to reach a speed of 2,5 m/s. Robot is the winner of the biggest competition in Poland (Robotic Arena 2011 – Wroclaw – 10.12.2011) and one of the fastest construction in Europe.

 

Wprowadzenie

Głównym celem projektu było zaprezentowanie konstrukcji na zawodach robotów. Konkurencja line follower polega na podążaniu za linią, w pełni autonomiczny robot ma jak najszybciej pokonać trasę wyznaczoną za pomocą czarnej taśmy na białym podłożu.

Zawody składają się z dwóch etapów. W pierwszym wszystkie konstrukcje ścigają się na trasach eliminacyjnych. Następnie najlepsze z nich (uzyskujące najkrótsze czasy przejazdów) przechodzą do fazy finałowej, gdzie najszybsza konstrukcja wygrywa. Dodatkowo na trasie mogą znajdować się przeszkody: przerwane linie lub obiekty, które należy ominąć.

Zwykle na zawodach robotów rozgrywanych jest kilka konkurencji. Oprócz wyżej wspomnianej występują jeszcze m.in.: sumo, mini sumo czyli walki robotów, micromouse – przeszukiwanie labiryntu oraz freestyle – tu wygrywa dowolny robot, który najbardziej spodoba się publiczności. Na terenie Polski i Europy cyklicznie odbywają się imprezy, które cieszą się coraz większą popularnością. Co roku we Wrocławiu rozgrywane są największe zawody w Polsce, natomiast najwięcej konstruktorów spotyka się w Wiedniu na zawodach, które uważane są za nieoficjalne mistrzostwa Europy.

Elektronika

Za detekcję linii odpowiedzialnych jest 19 czujników odbiciowych KTIR0711S (para: fototranzystor + dioda IR). Piętnaście z nich ułożonych jest po wycinku okręgu, dodatkowo po dwa czujniki boczne wysunięte do przodu oraz do tyłu. Takie ułożenie zapewnia bardzo wysoką skuteczność przy przejazdach przez zakręty pod kątem 90°, niezależnie od kąta najazdu.

W części przedniej znajduje się też czujnik odległości, niezbędny do wykrywania przeszkód na torze. Jest to dalmierz cyfrowy firmy Sharp GP2Y0D340K o zakresie pomiarowym 40 cm. Sygnał z czujników podawany jest na komparatory. Następnie, już w postaci cyfrowej, wędruje na piny GPIO mikrokontrolera.

W robocie zastosowano 32-bitowy układ STM32F103 z rdzeniem Cortex-M3. Mikrokontroler, przy użyciu wewnętrznej pętli PLL, taktowany jest z częstotliwością 72 MHz. Ma 512 kB pamięci Flash oraz 64 kB RAM. Układ ma bardzo rozbudowane peryferia, np. szybkie 12-bitowe przetworniki A/C (możliwość podłączenia żyroskopu analogowego, dla którego zostało przewidziane miejsce na płytce drukowanej), sprzętowe interfejsy komunikacyjne (USART, I2C, SPI, USB) oraz timery wyposażone w sprzętowe wsparcie dla enkoderów, co pozwoli w przyszłości rozbudować projekt o te właśnie czujniki [1].

Zaimplementowany regulator PD podaje sterowanie w postaci sygnału PWM o odpowiednim wypełnieniu oraz kierunek obrotów (odpowiednie stany logiczne na dwóch wyprowadzeniach) na sterowniki silników. Są to scalone dwukanałowe mostki H firmy Toschiba: TB6612. Zastosowano po jednym układzie na silnik z połączonymi kanałami w celu uzyskania większej wydajności prądowej. Silniki przy nominalnym napięciu zasilania (6 V) pobierają maksymalnie 1,6 A. Chwilowy prąd mostka na kanał to 3,2 A. Układ został przystosowany do zasilania w przyszłości wyższym napięciem (11,1 V), a więc i prąd pobierany przez silniki wzrośnie. Zabieg ten ma na celu polepszenia parametrów pracy silników kosztem ich żywotności. Cecha ta w przypadku, gdy ważne są jak najlepsze osiągi, a czas pracującego robota to zwykle kilkanaście sekund, nie jest krytycznym parametrem.

Bezszczotkowym silnikiem znajdującym się w napędzie tunelowym steruje gotowy układ modelarski. Na jego wejście podawany jest sygnał PWM o częstotliwości 50 Hz z wypełnieniem 1–2 ms (1 ms – stop, 2 ms – maksymalna prędkość obrotowa). Mostki oraz sterownik turbiny zasilane są bezpośrednio z baterii Li-Po 7,4 V o pojemności 460 mA. Elektronika wymaga dwóch napięć: część analogowa czyli głównie czujniki – 5 V, mikrokontroler oraz część cyfrowa – 3,3 V. Pierwsze z nich pochodzi z przetwornicy impulsowej (układu ST1S10PHR z niezbędnymi elementami biernymi). Niższe jest wyjściem stabilizatora liniowego LDO LF33, którego wejściem jest napięcie 5 V. Dzięki przetwornicy, która ma znacznie wyższą sprawność niż stabilizator impulsowy, robota można w przyszłości zasilać wyższym napięciem. Nie będzie to powodowało grzania się elementów, a co za tym idzie strat mocy [2].

Dodatkowo powstał moduł z wyświetlaczem LCD 16 × 2, przyciskami oraz mikrokontrolerem Atmega8. Układ ten służy do zmiany parametrów (prędkości maksymalnej silników, obrotów turbiny, nastaw regulatora) oraz debuggowania (sprawdzenia odczytów czujników, wyjść regulatora). Przy pomocy przetwornika A/C, oraz dzielnika napięcia (w stosunku 1:3) stale kontrolowany jest poziom napięcia na akumulatorze Li-Po. Jego wartość wyświetlana jest na LCD oraz po przekroczeniu minimalnego poziomu sygnalizowane jest przy pomocy diody LED. Do komunikacji modułu LCD z robotem wykorzystano interfejs UART.

Płytka drukowana została zaprojektowana w programie Eagle. Do wizualizacji wykorzystano dodatek Eagle 3D.

Mechanika

Zgodnie z wymaganiami konkursowymi, wymiary robota w rzucie z góry nie mogą przekraczać 210 × 297 mm, czyli wymiaru formatu arkusza A4. Obrys robota ma wymiar 170 × 220 mm, z czego 140 × 64 mm to płytka główna oraz 126 × 40 mm to moduł czujników. W celu zminimalizowania całkowitej masy robota, płytki drukowane pełnią również rolę podwozia. Moduł z czujnikami został połączony z płytką główną za pomocą lekkich listew węglowych. Dodatkowymi punktami podparcia są dwie kulki podporowe, które obracają się swobodnie w czaszach z tworzywa sztucznego.

Główny napęd robota stanowią dwa silniki prądu stałego wraz ze zintegrowanymi przekładniami. Przy zasilaniu 6 V na wyjściu przekładni (10:1) prędkość obrotowa wynosi ok. 3000 obr/min, natomiast moment obrotowy ma wartość 0,029 Nm. Robot skręca na zasadzie różnicy prędkości oraz (w przypadku szybkich i ostrych zakrętów) kierunku obu kół.

Koła składają się z felg wykonanych z poliamidu oraz opon Mini-Z, które zapewniają bardzo dobrą przyczepność do podłoża. Dobór odpowiedniego ogumienia stanowi bardzo ważny aspekt przy budowie robota, który ma znaczący wpływ na osiągane prędkości. Należy też zapewnić odpowiednią czystość opon, dlatego przed każdym przejazdem usuwane są wszelkie zanieczyszczenia z ich powierzchni.

Dla zwiększenia docisku kół do podłoża w trakcie przejazdu, w robocie zainstalowano został tunelowy EDF o średnicy 27 mm. Zastosowany silnik bezszczotkowy cechuje się wysokimi wartościami prędkości obrotowych (11 000 obr/V) oraz poborem prądu ok. 3 A. Dzięki zastosowaniu tego rozwiązania w dużym stopniu wyeliminowane zostało zjawisko poślizgu opon, co pozwala na uzyskiwanie wyższych prędkości przejazdu.

Algorytm

Program sterujący w całości został napisany w języku C. Do regulacji prędkości obrotowej silników wykorzystywany jest PWM (Pulse Width Modulation) o częstotliwości 10 kHz. W robocie zaimplementowano regulator PD. Analizując stany poszczególnych czujników oraz przypisanych im wag, obliczane jest położenie robota względem linii. Algorytm PD na podstawie błędu położenia wylicza korektę, która następnie podawana jest w postaci wartości PWM do sterownika silników.

Obliczanie członu P:

pid_error = setPoint – processValue;

P_term = Kp* pid_error;

pid_st->lastProcessValue = processValue;

Obliczanie członu D:

d_term = Kd* (lastProcessValue – processValue);

gdzie: pid_error – błąd regulacji, setPoint – wartość zadana, processValue – aktualny stan z czujników, lastProcessValue – poprzedni stan z czujników, Kp – wzmocnienie członu P, Kd – wzmocnienie członu D [3].

W przypadku wykrycia ostrego zakrętu zmieniona zostaje polaryzacja jednego z silników, aby umożliwić szybki obrót robota. Robot zapamiętuje ostatnie stany czujników, co umożliwia mu powrót na wyznaczoną trasę.

Bibliografia

  1. Paprocki K.: Mikrokontrolery STM32 w praktyce, BTC, Legionowo 2009.
  2. Tietze U., Shenk Ch.: Układy półprzewodnikowe, Wydawnictwo Naukowo-Techniczne, Warszawa 1987.
  3. Astrom K.: PID Controler.