Skocz do zawartości

Robot balansujący "Trybik"


FlyingDutch

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

54 minuty temu, Treker napisał:

@FlyingDutch dzięki za szczegółowy opis - bardzo dawno nie było tutaj takiego robota 🙂 

Cześć @Treker,

jeszcze trochę zostało do zrobienia - mówię tu o nie podłączonych elementach i ulepszenie oprogramowania. Postaram się to w najbliższym czasie dopracować.

Pozdrawiam

Link do komentarza
Share on other sites

Gratuluję - w szczególności tempa poskładania całości do kupy (jeden dzień).

Jednak w opisie zabrakło mi najciekawszego elementu - zastosowanej procedury strojenia regulatora PID.

Poza tym obecnie chyba nie warto kupować staruteńkiego L298N, ja bym zastosował raczej coś takiego

 

Edytowano przez jand
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)
18 godzin temu, jand napisał:

Jednak w opisie zabrakło mi najciekawszego elementu - zastosowanej procedury strojenia regulatora PID.

Cześć,

na razie w ogóle nie dostrajałem parametrów regulatora PID, a to z tego powodu, że parametry które były w kodzie szkicu pobranym z Githuba zadziałały poprawnie. Oczywiście nie jest to dobór optymaly i dlatego w najbliższej przyszłości mam zamiar (podczas ulepszania programu) zastosować jedną ze znanych metod doboru nastaw eregulatora PID - np. metodę Zieglera-Nicholsa:

https://home.agh.edu.pl/~romus/Podstawy Automatyki/Lab 6 Dostrajanie_PID.pdf

W najbliższych dniach będę miał na to czas najprędzej w sobotę - opiszę wtedy moje dziłania.

Co do sterownika silników to masz absolutną rację - wybrałem ten model, bo był on użyty w kodzie z Github'a i nie chciałem tego na początku zmieniać.

BTW: zastanawiam się, czy OpenCV na ESP32 z kamerą działa wystarczająco wydajnie, aby zastosować je do prostego podążania za obiektem np. człowiekiem?

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Do planów rozwojowych dodałbym jeszcze:

  • Skalibrowanie MPU6050. W tej chwili ładujesz jako poprawki wartości, które nijak się mają do Twojego konkretnego egzemplarza. 
  • Wykorzystanie enkoderów, które masz przy silnikach. Taki robot zachowuje się bardziej stabilnie, gdy dodatkowy regulator PID steruje tak wartością zadaną pochylenia, by utrzymać stałą prędkość jazdy (w szczególności równą zeru dla robota mającego stać w miejscu).

 

Link do komentarza
Share on other sites

Dnia 3.12.2024 o 08:30, FlyingDutch napisał:

Bez tej przeciw wagi robot nie potrafił utrzymywać równowagi

Jako wartość zadaną wychylenia przyjąłeś niezmienioną wielkość podaną w oryginalnym  programie:

double originalSetpoint = 175.8;

która jest dość odległa od teoretycznej wartości 180 stopni. Rozbieżności wynikają z niedokładności montażu robota (płaszczyzna czujnika nie jest idealnie prostopadła do osi robota) i w przypadku każdej konstrukcji optymalna wartość jest nieco inna.

Zastosuj tu na początku 180, a potem - obserwując zachowanie robota - dostosuj jej wartość tak, by osiągnąć najlepsze rezultaty.

Mam nadzieję że wtedy dodatkowe baterie jako obciążniki nie będą potrzebne.

Link do komentarza
Share on other sites

(edytowany)
40 minut temu, jand napisał:

Jako wartość zadaną wychylenia przyjąłeś niezmienioną wielkość podaną w oryginalnym  programie:

double originalSetpoint = 175.8;

która jest dość odległa od teoretycznej wartości 180 stopni. Rozbieżności wynikają z niedokładności montażu robota (płaszczyzna czujnika nie jest idealnie prostopadła do osi robota) i w przypadku każdej konstrukcji optymalna wartość jest nieco inna.

Zastosuj tu na początku 180, a potem - obserwując zachowanie robota - dostosuj jej wartość tak, by osiągnąć najlepsze rezultaty.

Hej próbowałem wartości 178.9 ale nie pomogło to.

Próbowałem też dobrać parametry dla regulatora PID - metodą Zieglera-Nicholsa (jak w podanym dokumencie) i wyszły mi wartości:

Kp = 150

Ki = 135

Kd  = 180

ale były to za duże wartości bo w rzeczywistym układzie regulator dostawał oscylacji.

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Rzeczywiście te teoretycznie dobrane wartości są całkiem inne od tych, przy których Twój robot zachowuje się w miarę poprawnie, ale wiem z doświadczenia, że dobranie odpowiednich parametrów jest żmudne.

Można też, aby uniknąć wielokrotnego kompilowania programu, zastosować potencjometry do regulowania wartości parametrów w trakcie pracy robota. Jest to niby dodatkowa fatyga, ale per saldo może sie opłacać.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Cześć,

zrobiłem przeciwwagę - wystarczył kawałek pleksy z pojemnikiem na baterie. Ręcznie pozmieniałem trochę parametry PID i teraz robot zachowuje się całkiem poprawnie. Oto wartości parametrów PID'a :

//PID
double originalSetpoint = 180;
double setpoint = originalSetpoint;
double movingAngleOffset = 0.1;
double input, output;
int moveState=0; //0 = balance; 1 = back; 2 = forth
double Kp = 58.0;//50;
double Kd = 1.9;//1.4;
double Ki = 68;//60;
PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);

#define interruptPin  2
double motorSpeedFactorLeft = 0.85;
double motorSpeedFactorRight = 0.85;

Zrobiłem krótki filmik z jazdy robota:

Muszę wkomponować czujnik ultradźwiekowy do programu, aby robot omijał przeszkody i dodać jakieś proste sterowanie kierunkiem jazdy (zdalnie).

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Na filmiku robot zachowuje się w miarę spokojnie, ale ma tendencję do uciekania - powinien stać w miarę w jednym miejscu, a pchnięty powracać do punktu wyjścia.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.