W ostatnim czasie zbudowałem robota, którego zadaniem jest poruszanie się i w miarę płynne omijanie przeszkód. Głównym założeniem było wykorzystanie możliwie jak największej liczby „gotowych” podzespołów – tak, aby każdy mógł je kupić i bez zbytnio rozbudowanego zaplecza warsztatowego odtworzyć robota w swoim domu. Skorzystałem głównie ze sklepu KAMAMI.pl, bo jego oferta tego typu podzespołów jest obszerna i nie miałem problemów z wyszukaniem kompletu części.

Opis budowy Robota „Orangutan” na portalu Mikrokontroler.pl

Widok z góry

Widok z góry

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot Orangutan

Robot bazuje na sterowniku Pololu Orangutan SV-328 (od niego pochodzi nazwa), który posiada zintegrowany mikrokontroler ATmega328P, podwójny mostek H TB6612, wyświetlacz LCD 1×8, buzzer, diody, przyciski i zawiera MOSFETowe zabezpieczenie przed odwrotnie spolaryzowanym napięciem zasilania. Sam sterownik jest bardzo drogi, ale w zamian otrzymujemy również „zaplecze” programistyczne Pololu, w tym gotowe biblioteki i przykłady, które można zintegrować m.in. z Atmel Studio 6 i otrzymać środowisko programistyczne bardzo podobne do np. Arduino. Różnica jest taka, że sam sterownik zajmuje znacznie mniej miejsca niż np. Arduino UNO połączone Arduino Motor Shield (zestaw o mniejszych możliwościach i podobnej cenie) i posiada oprócz uC i mostków, wspomniane wcześniej dodatkowe peryferia.

Opis peryferiów sterownika Orangutan

Opis peryferiów sterownika Orangutan

Programowanie może się odbywać w dowolnym języku, a sterownik posiada 6-pinowy interfejs ISP, pod który można podpiąć dowolny programator AVR na ISP.

Sposób programowania sterownika

Sposób programowania sterownika

Podwozie to Zumo Chassis Kit, do którego dokupiłem dwa miniaturowe silniki Pololu z przekładnią 150:1. Podwozie zawiera bardzo przyczepne „gąsienice” (ciężko jest przepchnąć robota po gładkiej powierzchni stołu) oraz koszyk na 4 akumulatory/baterie AA. Zasilanie jest najbardziej niefortunną sprawą, gdyż 4 naładowane na 100% akumulatory NiMh pozwalają na osiągnięcie ok. 5,6V, a przy takim napięciu sterownik nie działa zbyt stabilnie – zwłaszcza, jeśli w trakcie pracy „katuje” silniki, serwa i inne prądożerne podzespoły. Lepszym wyjściem są baterie alkaliczne, a najlepszym – akumulator 2 cell LiPol; odpowiednio płaski spokojnie zmieści się w przegrodzie na akumulatory.

Podwozie robota

Podwozie robota

Orangutan wykorzystuje do działania dwa dalmierze optyczne typu SHARP, zamocowane na miniaturowym serwie modelarskim. Dalmierze mają zasięg 4 ÷ 30 cm, co teoretycznie w zupełności wystarcza do wypatrzenia przeszkody, zanim robot w nią uderzy. W praktyce, charakterystyka czujników przy małych odległościach jest nieliniowa (martwa strefa – parabola – w przybliżeniu liniowy spadek), a na dużych przeszkadza już szum i zakłócenia związane z pracą serwa i silników. Efekt końcowy to ograniczony zakres odległości, dla których wskazania na pewno będę prawdziwe, pozostałe odległości zakresu mogą wprowadzać w błąd i trudno jest je wykorzystać do bezpiecznej nawigacji. Zastosowałem dwa czujniki, dzięki czemu możliwe są pomiary techniką triangulacji – robot, oprócz samego zmierzenia odległości od przeszkody, może także w przybliżeniu umiejscowić ją względem siebie prostopadle do płaszczyzny dalmierzy. W praktyce wygląda to tak, że sterownik obraca serwo do momentu, gdy wskazania z obu czujników będą zbliżone. Jednocześnie kąt obrotu orczyka serwa wskazuje umiejscowienie przeszkody względem osi ruchu robota, przez co możliwe jest takie wysterowanie silników, by robot tę przeszkodę ominął lub podążał równolegle do niej. Jeśli przeszkoda znajdzie się zbyt blisko robota i nie będzie już miejsca na płynne ominięcie, robot zatrzyma się, spojrzy w lewo i prawo, porówna pomiary dla obu wychyleń czujników i obróci się w kierunku, w którym jest najwięcej miejsca. Jeśli zarówno prawa, jak i lewa strona jest zabudowana (np. gdy robot wjedzie w narożnik pod kątem 45 stopni), to robot obróci się w miejscu o 180 stopni i pojedzie w przeciwnym kierunku.

Poniżej znajduje się fragment kodu realizujący sam sposób poruszania się robota:

Szczegółowy opis robota oraz jego budowy, można znaleźć na portalu Mikrokontroler.pl