Pomimo, że roboty balansujące już kilkakrotnie pojawiały się na forbocie, chciałbym zadebiutować na forum prezentując moją nową konstrukcję. Skoro jest cała armia linfollowerów i minisumo, to niech i robotów balansujących przybędzie.
Początkowo myślałem, że będzie to ciężkie i złożone zadanie. Jednak w praktyce okazało się jedynie trochę czasochłonne. Działanie konstrukcji dało mi bardzo wiele satysfakcji, dlatego szczerze polecam ten projekt osobom, które już dość swobodnie czują się w robotyce, a chcą spróbować czegoś nowego. Odwrócone wahadło jest dość intrygującym urządzeniem, które aby się utrzymać w pionie, wymaga ciągłej kontroli i precyzyjnej regulacji. Właśnie dlatego projekt taki sprawia naprawdę dużo frajdy.
Założenia:
Robot ma utrzymywać równowagę i przemieszczać się w kierunku zadanym przy pomocy pilota od telewizora. Służyć ma przede wszystkim dobrej zabawie i poszerzeniu doświadczenia. Ma wykorzystywać żyroskop i akcelerometr oraz poruszać się na silnikach krokowych. Konstrukcja wykonana w domowych warunkach, z wyjątkiem ramy, która została wydrukowana u kolegi.
Konstrukcja:
Rama robota jest wydrukowana na drukarce 3d z materiału PLA w czterech częściach, które zostały później ze sobą skręcone.
Koła to połączenie bezkonkurencyjnych pod względem jakości półpneumatycznych kół Lego oraz wydrukowanej z PLA felgi, która pozwala na przymocowanie do huba POLOLU. Ten ostatni bezpośrednio trzyma się wału silnika.
Robota napędzają silniki krokowe, które są łatwiejsze w obsłudze, niż zwykłe silniki DC z enkoderami. W tym konkretnym zastosowaniu niezbędne jest uzyskanie dokładnie ustalonej prędkości obrotowej – inaczej robot nie będzie się dobrze trzymał. Niestety natura silników krokowych pozostawia sobie wiele do życzenia. Nie mogą one osiągać zbyt dużych prędkości, a to oznacza, że robot nie będzie zbyt żwawy, a przy większych prędkościach może okazać się niestabilny.
Elektronika:
Układy sterujące robotem postanowiłem umieścić na dwóch płytkach drukowanych. Na dole robota znajduje się płytka ze sterownikami silników, czujnikiem LSM6DS3 oraz prostym układem zasilania. Druga płytka zawiera mikrokontroler, odbiornik podczerwieni i moduł bluetooth.
Czujnik LSM6DS3 to żyroskop i akcelerometr, który pozwala na pomiar kąta pochylenia robota. Zarówno impulsy sterujące silnikami, dane z czujnika oraz zasilanie płyną przez 24-żyłową taśmę FFC.
Sterowanie:
Idea sterowania odwróconym wahadłem była już wielokrotnie opisana, dlatego nie będę dublował kolegów z różnych forów. Mój robot wykorzystuje filtr komplementarny (do ustalenia aktualnego kąta wychylenia na podstawie pomiaru żyroskopu i akcelerometru), regulator PD (do utrzymania zadanego kąta) i regulator PID (do obliczenia kąta, o jaki powinien się wychylić robot na podstawie prędkości silników). Seria tych wszystkich obliczeń wykonywana jest z częstotliwością około 104 Hz, ponieważ na taką częstotliwość pracy został ustawiony czujnik, który generuje przerwania. Całym robotem steruje mikrokontroler ATmega88P taktowany z częstotliwością 12MHz. Bez najmniejszych problemów radzi sobie w 10 ms ze wszystkimi obliczeniami, które w wielu miejscach zawierają operacje zmiennoprzecinkowe.
Wspomniany wcześniej moduł bluetooth był wykorzystywany przy dostrajaniu regulatorów oraz do debugowania programu. W tej chwili robot jest sterowany pilotem od telewizora.