Skocz do zawartości

Robot balansujący


lewin94

Pomocna odpowiedź

Wydaje mi się, że porywasz się trochę z motyką na słońce. Jeżeli nie potrafisz zrozumieć prostego output'u z kompilatora, który próbuję Ci przekazać, że niewłaściwie dołączasz biblioteki to dalej będzie już tylko gorzej. Na szybko przeleciałem po plikach i kod jest bardzo nieczytelny i ciężko będzie Ci z nim pracować. Może lepiej wystartować od zera ze swoim projektem, rozbić budowę robota balansującego na mniejsze części tj. obsługa silników, obsługa czujnika IMU, algorytm regulatora PID, fuzja danych z IMU itd. Przy takim podejściu będziesz miał jaśniejszy pogląd na całość projektu i na pewno będzie to dla Ciebie bardziej kształcące niż grzebanie w takim kodzie. Nie pisząc już o tym, że łatwiej będzie Ci pomagać, kiedy swoje problemy rozbijesz na mniejsze części i każdy z nich będziesz potrafił własnymi słowami opisać w sposób dla wszystkich zrozumiały. Ja jestem bardzo otwarty na pomoc, ale nie w takiej formie jaką zasugerowałeś. 🙂

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

Błędy z MPU6050.

C:\Users\Patryk\Documents\Arduino\libraries\MPU6050/MPU6050.h:436:7: warning: type 'struct MPU6050' violates one definition rule [-Wodr]

 class MPU6050 {

       ^

C:\Users\Patryk\Documents\Arduino\libraries\MPU6050\MPU6050.h:436:7: note: a different type is defined in another translation unit

 class MPU6050 {

       ^

C:\Users\Patryk\Documents\Arduino\libraries\MPU6050/MPU6050.h:1026:18: note: the first difference of corresponding definitions is field 'dmpPacketBuffer'

         uint8_t *dmpPacketBuffer;

                  ^

C:\Users\Patryk\Documents\Arduino\libraries\MPU6050\MPU6050.h:436:7: note: a type with different number of fields is defined in another translation unit

 class MPU6050 {

       ^
Link do komentarza
Share on other sites

@lewin94, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

13 godzin temu, lewin94 napisał:

Chciałem bazować na gotowym kodzie, jednak nie mogę go skompilować po pobraniu ponieważ wyrzuca błędy bibliotek. Byłby ktoś na tyle miły, aby rzucić okiem i powiedzieć co było przyczyną?

Możesz podać źródło tego programu? Tak chyba będzie łatwiej 😉 Na przyszłość pamiętaj, że kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu programy są odpowiednio formatowane i kolorowane, a wtedy wszystkim znacznie łatwiej analizować wklejone programy.

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

Ciężko jest Ci w to uwierzyć, ale będzie szybciej, jeżeli podzielisz to sobie na mniejsze części i wystartujesz z tym projektem od nowa. Podłącz do arduino samo mpu6050, znajdź działającą bibliotekę, zobacz czy potrafisz odbierać dane z akcelerometru, żyroskopu i tak krok po kroku buduj ten projekt. Masz rozrysowany jakiś schemat, opis, jak ten robot balansujący ma działać?

Link do komentarza
Share on other sites

Super, na razie nie korzystaj z tamtego projektu. Wystartuj całkowicie na świeżo. Masz taki ogólny pogląd na przepływ danych wejściowych/wyjściowych z danych komponentów? Startując od najprostszej wersji: Arduino dostaje od MPU6050 dane o przyspieszeniach z akcelerometru i żyroskop, następnie są one w filtrze np. Kalmana przeliczane na kąt wychylenia robota. Kąt ten trafia do regulatora, np. PID, gdzie obliczany jest błąd pomiędzy wartością zadaną (czyli naszym kątem np. 0°, czyli robot jest w pozycji pionowej) a aktualnym kątem z filtru Kalmana, wyjściem z regulatora PID jest sygnał, który następnie po przeliczeniu, w postaci PWM i kilku sygnałów sterujących mówiących o kierunku trafi na mostek tb6612 a on wysteruje silniki. Napisałem to w takim lekkim uproszczeniu, żeby nadać temu taki ogólny na razie obraz.

Podłącz sobie teraz mpu6050, znajdź bibliotekę do obsługi tego czujnika, najlepiej taką z od razu zaimplementowanym filtrem Kalmana i doprowadź do momentu, kiedy będziesz miał pod jedną zmienną kąt przechyłu. Następnie znajdź lub napisz sam bibliotekę do obsługi mostka tb6612, podłącz do niego silnik i zobacz czy potrafisz sterować prędkością, kierunkiem, jednym, drugim silnikiem. Dawaj znać jak idzie i będziemy myśleli dalej. 😉

 

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.