Tezeusz 1: robot mobilny typu micromouse na STM32

Celem projektu była budowa mobilnego robota klasy micromouse. Zadaniem robota micromouse jest dotarcie w jak najkrótszym czasie do środka nieznanego labiryntu. Jest to konkurencja zawodnicza, coraz bardziej popularna wśród fanów robotyki.

Zawody kategorii micromouse rozgrywane są od roku [1] 1980. Odbyły się wtedy pierwsze zawody z serii „All-Japan Micromouse Contest”. W zawodach tych co roku biorą udział najlepsi konstruktorzy na świecie.

 

Projekt nagrodzony w konkursie

 

Konstrukcja o nazwie [5] Min6 stworzona została przez Ng Beng Kiat, pracownika naukowego w Ngee Ann Polytechnic w Singapurze. Jest to konstrukcja z dwoma silnikami, każdy napędza jedno koło przy pomocy przekładni redukującej o przełożeniu 32:12. Posiada 4 pary sensorów: dwie pary wykrywają ścianki z przodu robota, pozostałe dwie na przekątnych.

Fot. 1. Konstrukcja Min6, źródło [5]
Maszyna o nazwie [4] Tetra powstała w roku 2009. Kato-san, jej twórca, zaproponował rozwiązanie uwzgledniające 4 koła. W czasie przyspieszania i hamowania robot ma kontakt z podłożem na każdym kole. Polepsza to dynamikę robota i pozwala na uzyskiwanie lepszych rezultatów. Robot ten zapoczątkował erę czterokołowych konstrukcji w klasie micromouse.

Fot. 2. Konstrukcja Tetra, źródło [4]
W roku 2013 Green Ye, student University of California, zbudował robota o nazwie [8] Green Giant. Podobnie jak Tetra, jest to konstrukcja z czterema kołami. Robot Green Giant jest aktualnie najszybsza konstrukcja w Ameryce.

Fot. 3. Konstrukcja Green Giant, źródło [8]
Założenia projektu

Ze względu na prototypowy charakter robota, wymagane są jedynie podstawowe funkcjonalności:

  • napęd składający się z dwóch kół, każde napędzane silnikiem z przekładnią,
  • kwadratowy kształt robota ze ściętymi narożnikami,
  • 8 par sensorów, po dwie pary na każdym boku robota,
  • możliwość mierzenia pokonanego dystansu przy pomocy enkodera,
  • zastosowanie mikrokontrolera STM32F103RBT6,
  • implementacja prostego algorytmu umożliwiającego poruszanie się po labiryncie.

Innowacyjnym rozwiązaniem jest zastosowanie sensorów z każdej strony robota. Dzięki temu robot posiada os symetrii i nie wymaga obrotów o 180 stopni.

Opis komponentów robota

Do wykonywania odpowiednich zadań robot wymaga odpowiednich komponentów. Elementy te umożliwiają robotowi m.in. jeżdżenie po labiryncie, zbieranie informacji o otoczeniu, podejmowanie decyzji co do kierunku ruchu.

Robot napędzany jest dwoma silnikami z przekładniami, do których przymocowane są dwa koła. Silniki sterowane są za pośrednictwem dwóch mostków H. Parametry techniczne napędu:

  • silnik Micro Metal Gearmotor:
    • przełożenie 30:1,
    • napięcie zasilania 3-9V,
    • 1000 obr./min przy napięciu 6 V,
    • prąd przy swobodnym obrocie 120 mA,
    • prąd utyku 1,6 A,
    • maksymalny moment 0,06 Nm,
    • niewielkie wymiary,
  • koła Pololu:
    • średnica 32 mm,
    • szerokość ogumienia 6,5 mm,
    • waga 3,2 g,
  • mostki H:
    • układ TB6612FNG,
    • obudowa SSOP24,
    • dwukanałowy o wydajności prądowej 1,2 A na kanał.
Fot. 4. Silnik oraz koła wykorzystane w robocie, źródło [7]
Sensory odległości

Zadaniem robota jest poruszanie się po labiryncie. Do tego potrzebuje informacji o odległości od otaczających go ścianek labiryntu. Wykorzystanych zostało do tego osiem sensorów odległości. Każdy z nich składa się z dwóch fotoelementów: fototranzystora oraz diody podczerwieni. Komponenty te zostały dobrane tak, by działały na jednakowej długości fali. Ilość odbitego od ścianek labiryntu światła wykrywana jest przez fototranzystor. Przekłada się to na napięcie wyjściowe „SENSx”.

Użyte elementy:

  • fototranzystor L53P3C,
  • dioda podczerwieni L53F3C.
Rys. 5. Schemat ideowy oraz model sensora odległości

Enkodery inkrementalne

Labirynt dla robotów micromouse budowany jest na planie szachownicy. Każde pole jest kwadratem o boku o zdefiniowanej długości. Na podstawie informacji o przebytym dystansie robot ustala swoje położenie. Informacja ta pochodzi od enkoderów inkrementalnych. Bezpośrednio do wału silnika przymocowana została niewielka tarcza z czarno-białymi polami. Na skutek ruchu obrotowego tarczy, transoptor odbiciowy rejestruje zmieniające się pola. Znając średnice kół, przełożenie przekładni oraz ilość czarno-białych pól można ustalić przebyty dystans.

Enkoder posiada na tarczy cztery pola białe i cztery pola czarne. Transoptor odbiciowy rejestruje 8 przejść na pole innego koloru na jeden obrót tarczy. Przełożenie wynosi i = 30 czyli na jeden obrót koła przypada 240 sygnałów z transoptora. Obwód koła wynosi 100,5 mm. Wynika z tego, że rozdzielczość danego enkodera wynosi 100,5 mm/240 = 0,42 mm.

Rys. 6. Widok rzeczywisty oraz model enkodera inkrementalnego

Mikrokontroler

Układem niezbędnym w robocie jest jednostka umożliwiająca przetwarzanie informacji. W robocie użyto mikrokontrolera STM32F103RBT6. Jego zadaniem jest zbieranie danych z czujników oraz odpowiednie sterowanie silnikami. Cechy użytego mikrokontrolera:

  • mikrokontroler 32-bitowy,
  • 128 kB pamięci Flash,
  • interfejsy USB, CAN, I2C, SPI,
  • częstotliwość taktowania CPU 72MHz.

W projekcie wykorzystano następujące peryferia mikrokontrolera:

  • przetwornik analogowo-cyfrowy – ADC,
  • timery,
  • bezpośredni dostęp do pamieci – DMA,
  • interfejs GPIO,
  • kontroler przerwań – NVIC.

W celu interakcji z użytkownikiem zainstalowano trzy diody LED ogólnego zastosowania. Mogą one wskazywać np. stan programu, poziom baterii itd. Wykonywany przez mikrokontroler program napisany został w jeżyku strukturalnym C. Obejmuje on ok. 1500 linijek kodu i składa się z dwóch części. Pierwsza odpowiada za inicjalizację peryferiów mikrokontrolera. Druga to prosty algorytm odpowiadający za poruszanie się robota po labiryncie.

Rys. 7. Widok rzeczywisty oraz model mikrokontrolera użytego w robocie

Do pobrania