Witam wszystkich Forumowiczów, chciałbym przedstawić Wam robota, którego zbudowałem w ramach pracy magisterskiej. Głównym jej założeniem było przetestowanie różnych algorytmów sterujących, takich jak rozwiązania regułowe, prosty regulator P czy też regulator PID.
W tym poście zaprezentuję jedynie część całego projektu, tzn. wykonanie symulacji w środowisku komputerowym oraz wykonanie robota.
Symulacja robota
Symulacja w środowisku v-rep została przeprowadzona, aby wstępnie określić czego można spodziewać się po algorytmach sterujących badając obiekt rzeczywisty.
Symulacja została przeprowadzona w środowisku v-rep w połączeniu z oprogramowaniem Matlab, które pełniło rolę kontrolera symulacji.
Remote API umożliwiło łatwe sterowanie symulacją a następnie wyciągnięcie danych z symulacji na temat położenia robota (jego wychylenia).
Aby zasymulować robota w środowiku v-rep, podjęto następujące kroki:
1. Eksport modelu ze środowiska Inventor do formatu akceptowanego przez środowisko v-rep (stl), 2. Import plików stl, 3. Rozbicie zaimportowanego złożenia na pojedyncze elementy, 4. Połączenie elementów w większe grupy dla łatwiejszej pracy, 5. Wykonanie kopii modelu w nowej scenie - zamiana elementów na bryły wypukłe, 6. Nadanie bryłom wypukłym właściwości dynamicznych, 7. Połączenie modelu statycznego z modelem dynamicznym, 8. Nadanie więzów - połączeń między elementami
Import plików stl do v-rep:
Zamiana elementów na bryły wypukłe:
Nadanie więzów między elementami:
Gotowa symulacja:
Wykonanie robota
Robot składa się z dwóch głównych części: mechanicznej i elektronicznej.
Cześć mechaniczna
Tą część dodatkowo możemy podzielić na:
Stelaż robota
Wykonano go z blachy aluminiowej o grubości 2 mm, który tworzą następujące elementy: panele boczne, podstawa, półka na elektronikę;
Wahadło chaotyczne
Technika druku 3D umożliwiła wykonanie wahadła. Złożone jest z pięciu komponentów: dwa
górne i dwa dolne ramiona wahadała oraz poprzeczki łączącej strony wahadła;
Mocowanie silników
Są to elementy gotowe przeznaczone dla mocowania silników typu 25D (25 mm średnicy zewnętrznej);
Silniki
Są częścią układu napędowego odpowiedzialnego za utrzymanie zadanej pozycji robota. Zawierają w sobie przekładnię zębatą 34:1 oraz enkodery kwadraturowe.
W trakcie wykonywania wahadła napotkano na często występujące zjawisko skurczu w trakcie druku gniazd łożyskowych. Lekkie podszlifowanie wydruku rozwiązało problem.
Układ sterowania
Do wykonania układu sterowania wykorzystano następujące komponenty:
Platforma prototypowania DfRobot Mega2560 (Arduino Mega2560)
Sterownik silników Roboclaw 2x15A
IMU MPU - 9150
Konwerter napięć TTL
Robot zasilany był z akumulatora 3S poprzez przetwornicę napięcia.
Poniżej znajduje się schemat połączeń układu sterowania:
Informację o wychyleniu robota wyciągnięto z MPU-9150 poprzez DMP = cyfrowy procesor ruchu, który przeliczał, a następnie udostępniał wprost informacje o kącie wychylenia w stopniach.
Podsumowanie
W trakcie budowy napotkano problemy z zakłóceniami szyny i2c łączącej IMU z Arduino przez silniki. Jedynym rozwiązaniem było przeniesienie IMU powyżej silników, wprost na Arduino. Drugim dużym problemem były luzy w przekładni zębatej silnika przez co ruch robota nie był płynny i nie udało mi się go wystroić, tak jakbym sobie tego życzył.
Po za tymi mankamentami udało się uzyskać wyniki z badań symulacyjnych i rzeczywistych. Zgodnie z moimi obserwacjami jedynym algorytmem - z tych testowanych, który się sprawdził był regulator PID.
Na końcu krótki film z działania.