Skocz do zawartości

Robot balansujący - odwrócone wahadło


juras5

Pomocna odpowiedź

Czujniki (szczególnie acc) najlepiej w osi obrotu kół lub możliwie jak najbliżej jej.

Jak będzie tak wysoko to przy pochylaniu acc będzie wskazywał przyspieszenie mimo że platforma będzie stała. Oczywiście da się to wyliczyć i wyeliminować ale to niepotrzebne zajmowanie procka

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

slawko_k w jaki sposób podajesz dane z akcelerometru i żyroskopu do filtru Kalmana. Przeliczasz dane z czujników na przyspieszenie i prędkość kątowa i do tego atan(), atan2() czy arcsin()?

Link do komentarza
Share on other sites

co_pat to zależy od utworzonych równań filtru Kalmana (czy uwzględniasz błędy dryfu, offsetu, etc.)

Swego czasu zajmowałem się bardzo intensywnie nieliniowym filtrem Kalmana właśnie do pracy z pomiarami z akcel. i żyro. do estymacji trajektorii ruchu:

Link do komentarza
Share on other sites

Wow niciki widzę, że dość mocno opracowałeś ten filtr 🙂

Na razie chcę uzyskać tylko odchylenie od jednej osi, liczę atan2 z przyspieszeń x i y co zdaje egzamin ale tylko gdy na czujnik nie działają inne przyspieszenia. Jeżeli zaczynam poruszać czujnikiem bez zmiany kąta zmienia się też obliczony kąt. Wiecie jak to uwzględnić w obliczeniach?

Link do komentarza
Share on other sites

Witam wszystkich!

Mam pytanie do Juras5... Rozumiem, że ostatecznie zamówił kolega płytkę z ADXL345 + ITG3200 na pokładzie. Nie znalazł kolega nic tańszego (ale cyfrowego)? Przecież wystarczy tylko jednoosiowy gyro i dwuosiowy acc. Może warto samemu zrobić jakąś płytkę, co by dawało nam więcej możliwości. Czemu kolega zdecydował się na I2C a nie np. na SPI?

Link do komentarza
Share on other sites

slawko_k w jaki sposób podajesz dane z akcelerometru i żyroskopu do filtru Kalmana. Przeliczasz dane z czujników na przyspieszenie i prędkość kątowa i do tego atan(), atan2() czy arcsin()?

co_pat,

Nie przyszło mi żadne powiadomienie i dopiero dziś zobaczyłem że coś się w wątku dzieje.

Wprowadzam żywcem kąt obliczony z akcelermetru (arctg(x/g)) oraz prędkość z żyroskopu. Potem tylko dobrałem doświadczalnie ich wzajemne współczynniki bo jak sygnał z acc był za duży względem żyra to obliczony z kalmana kąt zmienił się dość wolno a jak odwrotnie to był zbyt duże przesterowania i potem powolny powrót do prawidłowej wartości.

Długo nic nie robiłem ze swoją platformą bo utknałem nad brakiem pomysłu jak to prawidłowo zrobić.

Otóż założyłem że ruch będę zadawał poprzez zadanie jakiegoś kąta pochylenia i to działa co pokazywałem na filmiku.

Tyle ze jak platforma odchyli sie o np 3stopnie to musi ciągle przyspieszać zeby to pochylenie utrzymać. W ten sposób rozpędzała się do kresu mocy silników.

Próbowałem jakoś zmodyfikować kod że im szybciej jedzie tym kąt automatycznie jest zmniejszany ale mimo że w mojej głowie to działało to w przypadku platformy nie przyniosło oczekiwanych rezultatów. Albo nie było żadnej poprawy albo pojawiały sie oscylacje.

Drugi pomysł miałem aby zadawać moc silników anie kąt pochylenia. Ale tu jest problem bo żeby jechać w przód to wypadało by żeby platforma cofnęła się żeby pochylić się do przodu i dopiero wtedy jechać. Podobnie jakby jechać do przodu i chcieć zapodać wsteczny. To silniki muszą jeszcze przyspieszyć a potem zawrócić. Nie byłem wstanie tego ogarnąć.

Bez jakiegoś pomysłu lub pomocy na pewno nie pchnę tego dalej.

Jeśli może ktoś mi coś podpowiedzieć to bardzo proszę o pomoc.

Filmik tego co mam chyba umieszczałem w inny wątku ale sam już nie pamiętam więc wkleję go również tutaj

Link do komentarza
Share on other sites

Wprowadzam żywcem kąt obliczony z akcelermetru (arctg(x/g)) oraz prędkość z żyroskopu. Potem tylko dobrałem doświadczalnie ich wzajemne współczynniki bo jak sygnał z acc był za duży względem żyra to obliczony z kalmana kąt zmienił się dość wolno a jak odwrotnie to był zbyt duże przesterowania i potem powolny powrót do prawidłowej wartości.

Miałem ten sam problem na początku, ale ja poradziłem sobie poprzez sprowadzenie odczytanych danych do jednostek g i stopni/s. Poza tym atan() zwraca wynik w radianach więc musisz je przeliczyć na stopnie - to może być przyczyną błędów.

Odnośnie samej jazdy problem może jeszcze leżeć w tym, że korzystasz tylko z atan(). Dokładniej chodzi o to, że jak robot się porusza to na akcelerometr działa przyspieszenie całego robota co całkowicie psuje wyniki otrzymane za pomocą atan().

Link do komentarza
Share on other sites

Wprowadzam żywcem kąt obliczony z akcelermetru (arctg(x/g)) oraz prędkość z żyroskopu. Potem tylko dobrałem doświadczalnie ich wzajemne współczynniki bo jak sygnał z acc był za duży względem żyra to obliczony z kalmana kąt zmienił się dość wolno a jak odwrotnie to był zbyt duże przesterowania i potem powolny powrót do prawidłowej wartości.

witam, też programuję w Bascom'ie i nie mogę sobie poradzić z obliczeniami z gyro i akcelerometru. czy jest możliwość żebyś wspomógł częścią kodu ?

Link do komentarza
Share on other sites

Witam

Jako, że to mój pierwszy post chciałbym się przywitać ze wszystkimi userami tego forum 🙂.

Zbudowałem wraz z dwoma kolegami robota balansującego. Ze względu na brak wystarczających środków finansowych zmuszeni byliśmy do zastosowania podzespołów, które aktualnie mieliśmy na stanie. Nie posiadaliśmy żadnych silników DC z odpowiednimi przekładniami ani enkoderów więc zdecydowaliśmy się na sterowanie w torze otwartym z zastosowaniem silników krokowych. Użyty w projekcie procesor to produkt firmy Texas Instruments mikroprocesor sygnałowy z rodziny c2000 model f28027 Piccolo. System mikroprocesorowy występuje pod postacią zestawu startowego, który za pośrednictwem JTAGA komunikuje się z komputerem PC za pośrednictwem portu USB. Sensory wykorzystane w robocie to akcelerometr i żyroskop. Kod programu zawiera filtr Kalmana i regulator PID. Jeżeli ktoś będzie zainteresowany "głębszymi" szczegółami chętnie podzielę się doświadczeniami zdobytymi w projekcie. Mam pewne pytanie. Czy istnieje urządzenie do bezprzewodowej komunikacji USB? Wiem, że to dziwnie brzmi ale idealnie w moim wypadku nadawałoby się do zadawania robotowi trajektorii, a ponadto umożliwiłoby mi wykorzystanie środowiska programistycznego do wyrysowywania różnorakich przebiegów występujących w układzie. Same trajektorie mógłbym zadawać przy użyciu zwykłego modułu radiowego (który zresztą kupiłem 🙂 ) ale z tymi przebiegami to już gorzej. Z góry dziękuję za ewentualną pomoc. Umieszczam film pokazujący zachowanie robota.

Pozdrawiam

Mateusz

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.