Skocz do zawartości
Kubeck

Drewniak - robot mobilny pokonujący labirynt

Pomocna odpowiedź

Napisano (edytowany)

Witam serdecznie 🤗

Chciałbym przedstawić Państwu robota mobilnego, o wdzięcznej nazwie "Drewniak". Praca ta została wykonana na potrzeby projektu "Roboty Mobilne" na Politechnice Opolskiej. Poniżej krótka prezentacja robota na filmie, w dalszej części szczegółowy opis.

1. Cel projektu.

Celem projektu było stworzenie robota mobilnego zdolnego do pokonania labiryntu. Postawione wymagania przed realizacją projektu to:

  • całkowita autonomiczność robota,
  • brak możliwości wpływu na trajektorię podczas jazdy robota,
  • pokonanie labiryntu w obie strony w czasie poniżej dwóch minut.

Zakres prac koniecznych do wykonania w celu realizacji projektu obejmuje:

  • zaprojektowanie konstrukcji mechanicznej oraz elektronicznej,
  • budowa robota,
  • stworzenie oprogramowania robota,
  • wykonanie testów potwierdzających poprawność działania konstrukcji.

Na poniższym rysunku przedstawiono zwymiarowany schemat labiryntu, który musi zostać pokonany przez projektowanego robota.

obraz.thumb.png.685bdda3869d0be56c0a5d4571a96a0a.png

2. Budowa układu mechanicznego, napędy

Do stworzenia platformy jezdnej robota zdecydowano się na użycie materiałów drewnianych. Podwozie wykonane zostało z płyty pilśniowej oraz przymocowanych do nich drewnianych listew. Rzeczywiste wymiary platformy jezdnej robota to: 18 cm długości, 12 cm szerokości, oraz 5,5 cm wysokości, mierząc od podłoża do platformy podwozia.

Robot napędzamy jest dwoma silnikami DC o następujących parametrach:

  • napięcie zasilania od 5 V do 7 V,
  • pobór prądu w stanie „bez obciążenia” około 180 mA,
  • prędkość obrotowa za przekładnią: ok. 80 obr/min,
  • moment obrotowy za przekładnią: ok. 0,5 kg*cm (0,049 Nm).

Dodatkowo, kompletny zespół napędowy wyposażony jest w przekładnię o przełożeniu 48:1, a także koła wykonane z materiałów sztucznych o średnicy 65 mm oraz szerokości 26 mm. Ostatnim elementem zestawu napędowego robota jest prototypowe koło samonastawne, stworzone z zestawu klocków „Lego”, zapewniające trzeci punkt podparcia robota. Na poniższych rysunkach ukazano podwozie robota wraz z przymocowanymi napędami.

obraz.thumb.png.f5e08753ae0c8495cb1ede6344be94a9.pngobraz.thumb.png.e1f7cc7c3023179837515c38eed69a9b.pngobraz.thumb.png.8c26b74564ffe49bc694148ae79fd955.png

3. Budowa układu elektronicznego

3.1. Układ zasilania

Na układ zasilania konstrukcji robota składają się cztery ogniwa litowo-jonowe, pozyskane ze starej baterii laptopa. Pojemność jednego ogniwa wynosi 2200 mAh. Ogniwa połączono równolegle. Uzyskano w ten sposób źródło zasilania o napięciu równym od 3 do 4,2 V, w zależności od stanu naładowania ogniw, oraz pojemności ponad 8000 mAh. W celu zabezpieczenia ogniw przed nadmiernym rozładowaniem oraz możliwości ich ładowania, zastosowano układ ładowarki akumulatorów jedno-celowych z zabezpieczeniem o oznaczeniu TP4056. Napięcie ładowania ogniw wynosi 4,2 V, maksymalny prąd ładowania to 1000 mA. Zabezpieczenie przed rozładowaniem ogniw poniżej napięcia równego 2,5 V, oraz przed poborem prądu ponad 3 A. Zastosowane rozwiązanie pozwala na ciągłe pobieranie prądu równego 3 A przez niespełna 3 godziny, bez uwzględniania strat.

Aby podnieść napięcie zasilania do poziomu napięcia równego 7 V (maksymalne napięcie zasilania zastosowanych silników), użyto regulowanej przetwornicy impulsowej Step-Up o oznaczeniu XL6009E1. Jej napięcie wejściowe wynosi od 3 do 30 V, natomiast możliwe do regulacji napięcie wyjściowe od 5 do 35 V. Maksymalny prąd wyjściowy równa się 3 A, a sprawność układu zawiera się na poziomie 80-94%. Napięcie wyjściowe z przetwornicy zostało doprowadzone do sterownika silników oraz układu z mikroprocesorem.

obraz.thumb.png.f5d1b3b3157ceffd4660bde7485c2387.png

3.2. Sterownik silników

W celu precyzyjnej kontroli prędkości oraz kierunku obrotu silników napędowych, zastosowano dwukanałowy sterownik silników prądu stałego o oznaczeniu L298N. Pozwala on na pobór prądu maksymalnego przez silniki do 2 A na kanał, przy maksymalnym napięciu zasilania równym 12 V. Sterownik posiada wbudowany regulator napięcia 5 V, do zasilania części logicznej.

obraz.thumb.png.485d4d996b46e0124073e1980d763934.png

3.3. Czujniki odległości

Aby możliwe było określenie położenia robota mobilnego, zdecydowano się na wykorzystanie dwóch analogowych czujników odległości firmy Sharp. Pierwszy z nich, o oznaczeniu GP2Y0A41SK0F i zakresie pracy od 4 do 30 cm, został umieszczony na prawym boku platformy jezdnej, pozwalając tym samym na określenie jej odległości od prawej ściany. Drugi czujnik, o oznaczeniu GP2Y0A21YK0F i zakresie pracy od 10 do 80 cm, został umieszczony na przodzie platformy jezdnej. Jego zadaniem jest wykrywanie przeszkody w postaci ściany przez robotem
w momencie, gdy tunel zakręca w lewo pod kątem większym bądź równym 90 stopni. Czujniki zasilane są napięciem z zakresu od 4,5 do 5,5 V, ich średni pobór prądu to 30 mA. Wyjściem jest sygnał analogowy, którego wartość zależna jest od odległości pomiędzy wykrytym obiektem a sensorem. Im obiekt znajduje się bliżej, tym napięcie na wyjściu jest wyższe.

obraz.thumb.png.a56b42944c7746ad2778c610025d55c6.png

3.4. Mikrokontroler sterujący

Jako jednostkę sterującą układem wybrano mikrokontroler AVR Atmega328 w obudowie do montażu przewlekanego DIP. Jest to ośmiobitowy mikrokontroler, posiadający 23 programowalne układy wejścia-wyjścia. Oferuje on 32 KB programowalnej pamięci Flash, 1 KB pamięci EEPROM, a także 2 KB pamięci SRAM, natomiast maksymalna częstotliwość taktowania wynosi 20 MHz przy użyciu zewnętrznego rezonatora kwarcowego lub 8 MHz przy użyciu wbudowanego.

Na potrzeby projektu stworzono płytkę PCB metoda termotransferu, zawierającą opisywany mikrokontroler, wraz z niezbędnymi do jego poprawnej pracy elementami, tj. stabilizator napięcia 5 V,
kondensatory i rezystory filtrujące zasilanie, rezonator kwarcowy o częstotliwości 16 MHz, dwie kontrolne diody LED, złącza na moduł Bluetooth, złącza na czujniki odległości, złącza do wyprowadzeń sterownika silnika.

obraz.thumb.png.ee14d20e67afd71750091bc3ad09c45d.png

4. Oprogramowanie mikrokontrolera

Program sterujący mikrokontrolerem napisany został w języku C++ z użyciem środowiska Arduino. Następnie, po jego skompilowaniu, wgrano wsad do pamięci mikroprocesora. Użycie środowiska Arduino pozwoliło na łatwiejsze zaprojektowanie oprogramowania z racji dostępności wielu bibliotek, które w łatwy sposób można zaimportować do projektu. Działanie programu można zobrazować za pomocą poniższego schematu blokowego.

obraz.thumb.png.fb28299ef1834dd986c52b50f21b48d2.png

W kodzie programu, na samym początku zadeklarowano odpowiednie pliki nagłówkowe, zdefiniowano stałe oraz zmienne globalne, które wykorzystywane są podczas działania oprogramowania. Zadeklarowano również obiekt FastPID, odpowiedzialny za użycie biblioteki regulatora PID. W funkcji setup() znalazły się inicjalizacje kolejnych modułów mikrokontrolera, tj. modułu ADC, mierzącego analogowe napięcie, oraz modułu PWM, pozwalającego wygenerować sygnał o zmiennym wypełnieniu. Ustalono również stany na pinach wyjściowych oraz zainicjalizowano moduł obsługujący komunikację szeregową UART, w celu przesyłania podstawowych informacji o pracy mikrokontrolera. W funkcji loop(), czyli w głównej pętli programu, na samym początku algorytmu sprawdzany jest czas, w celu odmierzenia 25 milisekund, za pomocą wbudowanej funkcji millis(). Następnie, po jego upływie, dokonuje się odczyt wartości analogowej napięcia z czujników Sharp. Wyznaczana jest odległość w milimetrach dla czujnika umiejscowionego z prawej strony robota, za pomocą własnej funkcji. Kolejno obliczany jest uchyb, a następnie dane przekazywane są do funkcji regulatora PID. W kolejnej części funkcji loop() sprawdzane jest, czy przed robotem nie ma przeszkody w postaci ściany. Odległość z przodu robota nie została przeliczona na jednostki miary, a jedynie ustalono pewną stałą „granicę”, po której przekroczeniu platforma jezdna skręca maksymalnie w lewo. Jeśli „granica” nie została przekroczona, wykonuje się regulacja za pomocą PID. Dodatkowo zadeklarowano przesyłanie podstawowych informacji, m.in. wartości z obu modułów ADC, wyznaczonej odległości, uchybu, za pomocą interfejsu UART, w celu kontrolowania działania programu mikrokontrolera. Wlutowane w płytkę diody również sygnalizują w odpowiedni sposób o poprawnym działaniu programu.

Program mikrokontrolera nie może się zakończyć. Działa nieprzerwanie, aż do zaniku zasilania. Dzięki takiemu rozwiązaniu, robot jest w pełni autonomiczny.

5. Wnioski

Celem projektu było stworzenie robota mobilnego zdolnego do pokonania labiryntu bez ingerencji użytkownika w tor jazdy, podczas jego pokonywania. Cel ten został osiągnięty, jednak podczas pracy natknięto się na kilka problemów. Przede wszystkim użyte silniki napędowe okazały się być średniej jakości. Po ustawieniu identycznego wypełnienia dla sygnału PWM dla obu silników, ich prędkości obrotowe znacznie się różniły. Jednak zastosowanie regulatora PID pozwoliło na odpowiednie kontrolowanie toru jazdy platformy robota mobilnego.

Parametry regulatora PID zostały dobrane podczas przeprowadzanych testów. Wzmocnienie członu proporcjonalnego ustalono na wartość 1.30, wzmocnienie członu różniczkującego na wartość 2.15, natomiast wzmocnienie członu całkującego na wartość 0. W konstrukcji tego typu, gdzie zachodzi potrzeba szybkiego działania regulatora, człon całkujący mógłby wprowadzić niechciane opóźnienie w układzie regulacji.

Robot pokonuje labirynt w czasie niecałych 30 sekund, co jest bardzo dobrym wynikiem. Stworzenie własnej konstrukcji, układu elektronicznego oraz oprogramowania wymagało dużego nakładu pracy, jednak końcowy efekt daje wiele satysfakcji.

Ostateczna forma robota mobilnego została przedstawiona na poniższym rysunku.

obraz.thumb.png.2ef9f0dca36eb9411aef17f22e79d58c.png

 

Projekt i wykonanie: Jakub Kinder / Politechnika Opolska 2019.

Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć bez pisemnej zgody autora zabronione!

Edytowano przez Kubeck
Poprawiłem formatowanie.
  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

@Kubeck, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.
8 godzin temu, Kubeck napisał:

Chciałbym przedstawić Państwu robota mobilnego, o wdzięcznej nazwie "Drewniak". Praca ta została wykonana na potrzeby projektu "Roboty Mobilne" na Politechnice Opolskiej. Poniżej krótka prezentacja robota na filmie, w dalszej części szczegółowy opis.

Właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 🙂

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Super ta platforma jedzie szkoda tylko, że to nie jest labirynt, a jedynie droga z ostrymi zakrętami.

Może teraz pokusisz się o takie rozwiązanie - zobacz.

Edytowano przez Belferek

Udostępnij ten post


Link to post
Share on other sites

No tak, może lepszym określeniem byłoby "tor". Dzięki za ciekawą propozycję, pomyślę nad tym tematem :) 

Udostępnij ten post


Link to post
Share on other sites

Fajny projekt:-), ale proszę zmień tytuł. Nie znam słowa "pokonywujący"...

pzdr 

Udostępnij ten post


Link to post
Share on other sites

@Kubeck, gratuluję projektu. Jeśli faktycznie będziesz chciał pójść dalej w kierunku rozwiązywania labiryntów (jak było powiedziane wyżej) to koniecznie sprawdź ten artykuł: Roboty MicroMouse – 5 metod przeszukiwania labiryntu. Na pewno ułatwi to start z budową Micromouse 😉

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij, aby zacząć pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...