Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.
Nazwa.pl
  • Robot mobilny minisumo

    Chciałbym przedstawić robota mobilnego należącego do klasy minisumo, którego wykonałem w 2012 roku. Roboty tego typu tworzone są do walk na ringach o odpowiednich średnicach zależnych od klasy robota, czyli jego wymiarów i wagi. Klasa minisumo to wymiary w granicach 10x10 cm oraz waga poniżej 500 g. Na początek wypiszę naważniejsze założenia, które dyktowały kierunek prac nad robotem.

    Założenia dotyczące konstrukcji mechanicznej:
    - Wymiary spełniające wymagania klasy minisumo i masa robota poniżej 500 g.
    - Nisko osadzony środek ciężkości konstrukcji i co jest tego konsekwencją, niewielka wysokość. Ma to na celu utrudnienie przewrócenia, a także wykrycia robota.
    - Napęd zrealizowany przy wykorzystaniu dwóch silników osadzonych w tylnej części robota, przy czym każdy z silników odpowiada niezależnie za jedno z kół napędowych. Podparcie w trzech punktach, gdzie oprócz kół, punktem podparcia jest przednia krawędź obudowy robota, tzw. „pług”.
    - Wykonanie ze stosunkowo lekkich, łatwo dostępnych materiałów, których połączenia można realizować bez użycia specjalistycznych narzędzi.

    Założenia dotyczące wykorzystanej elektroniki:
    - Sterowanie robotem oparte o głowną jednostkę obliczeniową, jaką powinien być łatwo dostępny mikrokontroler pozwalający generować co najmniej dwa przebiegi PWM w celu regulacji prędkości i mocy silników.
    - Zestaw sensorów do wykrywania białych linii umieszczonych możliwie blisko najbardziej wysuniętych punktów robota.
    - Cztery sensory pozwalające wykryć przeciwnika już ze znacznej odległości. Rozmieszczenie następujące: dwa z przodu i po jednym na każdy bok.
    - System monitorowania stanu akumulatora.
    - Pomiar przemieszczenia robota, z co najmniej dwóch niezależnych źródeł.
    - Akumulator o niewielkiej pojemności, jednak o możliwości rozładowywania go znacznymi prądami.

    Obudowa
    Obudowa została wykonana z laminatu epoksydowego pokrytego miedzią, ze względu na jego dostępność, a także łatwe łączenie elementów i obróbkę. Aby połączyć ze sobą poszczególne elementy wykorzystano połączenia lutowane, a jako spoiwo lutownicze, cynę. Takie wykonanie zapewnia dostateczną wytrzymałość. W płycie dolnej robota wycięto odpowiednie otwory, aby było możliwe późniejsze umieszczenie w nich czujników białych linii. Natomiast w części przedniej, a także w bocznych wycięto otwory pod czujniki Sharp GP2Y0D340K, umożliwiające wykrycie przeciwnika. Obudowa została pomalowana na kolor złoty, metaliczny farbą akrylową.

    Silniki
    Zdecydowano się na użycie silników Pololu HP z przekładnią 30:1 ze względu na ich niewielkie rozmiary i znaczną moc. Całe przekładnie i pewne części korpusu silników zostały wpuszczone do wydrążonych piast, co pozwoliło na zastosowanie szerszych kół, a dodatkowo osłania przekładnie przed zanieczyszczeniami. Po pewnym czasie użytkowania można śmiało stwierdzić, że dobór silników okazał się błędem ze względu na ich niewielką wytrzymałość i trwałość przy większych napięciach, aczkolwiek zachowanych w granicach normy producenta. Szczotki w jednym z silników uległy uszkodzeniu po bardzo krótkim czasie pracy robota i musiały zostać wymienione. Natomiast drugi silnik potrafi się zaciąć raz na jakiś czas.

    Czujniki białej linii
    Wykorzystano czujniki TCRT1010 ze względu na niewielkie rozmiary, a także montaż przewlekany, co umożliwia umieszczenie czujników w pewnej odległości od PCB. Sprawdzanie stanu czujników odbywa się poprzez pomiar odpowiedniego napięcia wbudowanym w mikrokontroler przetwornikiem analogowo-cyfrowym. Jeżeli czujnik znajdzie się nad białą linią, fototranzystor zostaje otwarty, co powoduje przepływ prądu i wzrost mierzonego napięcia. Rezystory diod zostały tak dobrane, aby ograniczyć prąd do bezpiecznego, podanego w specyfikacji elementu.

    Czujniki wykrywające położenie przeciwnika
    Wykorzystano dwa czujniki podczerwieni SHARP GP2Y0D340K umieszczone w przedniej części robota i skierowane w taki sposób, aby wykrywać przeciwnika znajdującego się przed robotem.

    Układ mikrokontrolera
    W robocie zastosowano mikrokontroler ATmega 32A w obudowie przeznaczonej do montażu powierzchniowego. Zdecydowano się na zastosowanie tego dość popularnego mikrokontrolera z rodziny AVR, produkowanego przez firmę Atmel głównie ze względu na jego dostępność, łatwość programowania, a także posiadanie licznych peryferii. Wykorzystane zostały praktycznie wszystkie porty mikrokontrolera. Taktowany jest przez zewnętrzny rezonator kwarcowy o częstotliwości 16 MHz.

    Sterowanie silnikami
    Sterowanie silnikami zostało wykonane w oparciu o układy TB6612, które są realizacją mostków H. Zdecydowano się na te właśnie układy ze względu na ich niewielkie rozmiary w wersji przeznaczonej do montażu powierzchniowego, a także ze względu na niewielki spadek napięcia na nich, a co za tym idzie, mniejsze straty mocy. Każdy układ zawiera dwa kanały, więc może sterować dwoma silnikami. Jednak ze względu na zwiększone zapotrzebowanie na prąd silników, w celu zwiększenia wydajności układu zostały zmostkowane kanały, zarówno wejściowe, jak i wyjściowe. Takie rozwiązanie wymusiło zastosowanie dwóch układów TB6612. Sygnały określające kierunek obrotu silnika, a także sygnał PWM, którego wypełnienie odpowiada prędkości silników są podawane bezpośrednio z mikrokontrolera. Zastosowane układy TB6612 nie osiągają wysokich temperatur, dlatego nie było potrzeby stosowania radiatorów. Poniżej przedstawiono schemat podłączenia układów.

    Zasilanie
    Wykorzystano akumulator litowo-polimerowy o pojemności 500 mAh ze względu na duży dopuszczalny prąd rozładowania. Składa się on z trzech ogniw, więc nominalne napięcie wynosi $11,1 V$, natomiast przy pełnym naładowaniu może ono osiągać wartość $12,6 V$, co oczywiście wpływa na parametry robota. W celu zabezpieczenia akumulatora przez zbyt dużym rozładowaniem zastosowano układ przedstawiony w dalszej części opracowania.

    Stabilizacja i filtracja napięcia
    Silniki zasilane są napięciem akumulatora podawanym bezpośrednio do mostków H, natomiast większość elektroniki wykorzystanej w robocie wymaga stabilizowanego napięcia rzędu 5V. Zastosowano więc stabilizator napięcia Low-dropout (LDO) o symbolu L1117, charakteryzujący się stosunkowo niewielkim spadkiem napięcia. Pomimo sporej mocy rozpraszanej w układzie stabilizatora, nie wykorzystano radiatora, ponieważ jego temperatura nie przekracza podanych przez producenta norm. W celu filtracji napięcia zasilania zastosowano kilka kondensatorów o łącznej pojemności w granicach 1000 μ F. Ponadto zastosowany został drugi stabilizator w module akcelerometru w celu obniżenia napięcia do 3,3 V , które wymagane jest do jego poprawnej pracy.

    Oprogramowanie
    Program napisany w języku C. Stany czujników sprawdzane są w przerwaniu od timera mikrokontrolera. W zależności od aktualnego stanu wybierana jest odpowiednia operacja. Dla czujników linii wykonywane są pomiary napięcia poprzez przetwornik ADC i na jego podstawie określane jest wykrycie białej linii. Przeprowadzanie testu czujników można dokonać w trybie diagnostycznym, który uruchamiany jest przez wciśnięcie mikroswitcha do 6 sekund od podłączenia zasilania robota. Możliwa jest komunikacja robota z komputerem poprzez RS232 z wykorzystaniem interfejsu USART. W oprogramowaniu robota zostały zaimplementowane odpowiednie funkcje do jego obsługi. Ponadto napisany został program umożliwiający odbiór i wysyłanie informacji z poziomu systemu operacyjnego komputera. Wykorzystano do tego celu zestaw przenośnych bibliotek Qt.

    Podsumowanie
    Wykonana konstrukcja wymaga jeszcze sporego dopracowania. Niestety nie wszystkie założenia udało się zrealizować, już podczas prac część z nich została mocno zweryfikowana. Zrezygnowano między innymi z dwóch czujników podczerwieni Sharp w celu uproszczenia konstrukcji.
    Ponadto na uruchomienie czeka moduł enkoderów inkrementalnych, ze względu na niedostępność układu zawierającego odpowiednie przerzutniki.
    Dopracowania wymaga oprogramowanie, które nie zostało jeszcze w pełni przetestowane. Należy ponadto zaimplementować funkcje obsługujące enkodery, a także wykorzystujące akcelerometr do określania pozycji robota.
    Waga robota wraz z akumulatorem wynosiła około 170 gram, więc konieczne było jego dociążenie. Wykorzystane zostały ciężarki wykonane z ołowiu umieszczone w częściach: bocznych i tylnej robota. Wypełniają one powstałe wolne przestrzenie w konstrukcji. Ponadto wykonano jeden większy ciężarek ołowiany, który umieszczać można na wierzchniej części robota, co niestety powoduje przeniesienie środka ciężkości wyżej, a także zwiększa wysokość robota. Jednak nie znaleziono innego sposobu na dociążenie robota.
    Wydaje się błędem zrobienie płyty podłogowej ze stosunkowo lekkiego laminatu. Z pewnością zostanie to poprawione w kolejnych konstrukcjach.

    Zdjęcia wykonanej konstrukcji
    Robot mobilny minisumo Robot mobilny minisumo

    Więcej informacji można znaleźć na mojej stronie www.mdrwiega.com.

    Cool? Ranking DIY
    About Author
    themin
    Level 11  
    Offline 
    Has specialization in: robotyka mobilna
    themin wrote 55 posts with rating 159. Live in city Wrocław. Been with us since 2006 year.
  • Nazwa.pl
  • Nazwa.pl
  • #4
    Sabre
    Level 18  
    @themin to chyba ucieszy cię wiadomość, że pololu wreszcie wypuściło silniczki HP z grafitowymi szczotkami. Będą jak znalazł do robotów minisumo. Fakt, że nigdy nie przepaliły mi się szczotki w linefollowerach, ale nie raz czytałem opinie konstruktorów minisumo o przepalających się szczotkach.
  • #5
    treker
    Level 25  
    Jak konkretnie chcesz wykorzystać enkodery? Będziesz implementował regulatory PI?
    Wybierasz się na jakieś zawody?
  • #6
    Mamut
    Level 18  
    Ja bym w enkoderach widział raczej aproksymacje jak daleko od końca ringu jesteśmy. Z tego co widzę, to "krańcówka" końca ringu jest między kołami więc może się zdarzyć, że najedziemy kołem a elektronika jeszcze nie będzie nic wiedzieć. Znając pokonany dystans i rozmiar ringu można policzyć ile jeszcze możemy jechać w danym kierunku.
    Nie jestem już w tematyce sumo/minisumo od kilku lat. Czy komuś udało się wymyślić pomysł jak w takiej konstrukcji upchać jakiś czujnik przeciwnika "z tyłu" robota? Jaki jest maksymalny zasięg tych Sharpów? Jak sobie radzą jak się ustawi 2 naprzeciw siebie? Starsze dalmierze Sharpa miały taki problem, że jak 2 wysyłały wiązkę na siebie do oba zaczynały wariować (a miało to dość często miejsce, prawie wszyscy używali tego rozwiązania).
  • #7
    themin
    Level 11  
    treker wrote:
    Jak konkretnie chcesz wykorzystać enkodery? Będziesz implementował regulatory PI?
    Wybierasz się na jakieś zawody?

    Oprócz realizacji regulatorów PI enkodery miały być wykorzystane wraz z akcelerometrem w systemie wykrywania poślizgów. Niestety ze względu na porzucenie projektu nie zostało to skończone.

    Mamut wrote:
    Ja bym w enkoderach widział raczej aproksymacje jak daleko od końca ringu jesteśmy. Z tego co widzę, to "krańcówka" końca ringu jest między kołami więc może się zdarzyć, że najedziemy kołem a elektronika jeszcze nie będzie nic wiedzieć. Znając pokonany dystans i rozmiar ringu można policzyć ile jeszcze możemy jechać w danym kierunku.

    Wydaje mi się, że takie rozwiązanie nie sprawdzi się ze względu na poślizgi kół. Może jedynie do momentu kontaktu z przeciwnikiem.

    Mamut wrote:
    Nie jestem już w tematyce sumo/minisumo od kilku lat. Czy komuś udało się wymyślić pomysł jak w takiej konstrukcji upchać jakiś czujnik przeciwnika "z tyłu" robota? Jaki jest maksymalny zasięg tych Sharpów? Jak sobie radzą jak się ustawi 2 naprzeciw siebie? Starsze dalmierze Sharpa miały taki problem, że jak 2 wysyłały wiązkę na siebie do oba zaczynały wariować (a miało to dość często miejsce, prawie wszyscy używali tego rozwiązania).

    Ja niestety też od paru lat nie jestem w temacie, więc nie wiem jak wygląda aktualnie kwestia wyposażenia w sensory. Jeżeli chodzi o Sharpy, które używałem to mają około 40 cm zasięgu. Natomiast nie zaobserwowałem zakłócania się sensorów w przypadku, gdy kilka z nich jest skierowanych w stronę jednego obiektu. Nie wiem jak to wygląda, gdy są ustawione na przeciwko siebie.
  • #8
    treker
    Level 25  
    Mamut wrote:
    Ja bym w enkoderach widział raczej aproksymacje jak daleko od końca ringu jesteśmy

    Niestety takie rozwiązanie się nie sprawdzi. Nawet, gdyby dodać informację z sensorów przesunięcia (np.: od myszki). Wystarczy, że przeciwniki wjedzie pod Ciebie, trochę mocniej przepchnie robota i informacje będą już nic nie warte. Do tego wszelkie poślizgi...