Skocz do zawartości

Algorytm dla silnika w wielowirnikowcu


b524020

Pomocna odpowiedź

Witam,

Ma odczytane trzy wartości z żyroskopu, akcelerometru i magnetometru - wszystkie przepuszczone przez filtry, już konkretne wartości:

- HeadingValue - określenie na tarczy 0-360 na którą stronę jest przechył płytki

- RollAng - kąt przechylenia na boki (kąt 90 i 270).

- PitchAng - kąt przechylenia do przodu i do tyłu (kąt 0 i 180)

Silniki mam rozmieszczone w konfiguracji X więc ich pozycje względem tarczy są:

- 45

- 135

- 225

- 315

I teraz pytanie jak zrobić algorytm stabilizacji?

Dodam, że sterowanie jest przez PWM.

Założyłem, że każdy silnik będzie miał sterowanie 0-50 (takie wartości dodaje do PWM).

Kąt maksymalny na razie do testów to 20 stopni.

Czyli zakładam, że jeśli tarcza będzie wskazywać z przedziału 0-90 a kąty będą odpowiednio po 20 stopni to silnik musi pracować maksymalnie w zakresie automatycznej stabilizacji więc będzie to 50.

Dodam, że jestem w liceum i nie mieliśmy jeszcze zaawansowanych operacji matematycznych ale znam podstawy całek, pochodnych itp.

Link do komentarza
Share on other sites

Najbardziej trywialny algorytm, nie uwzględniający żadnej dynamiki układu ale za to bardzo prosty i ogarnialny myślowo w minutę zrobiłem w moim pierwszym "iksie". Latał i to całkiem fajnie.

Zakładając, że silniki oznaczymy zgodnie z ruchem wskazówek zegara jako:

M1 - przedni lewy

M2 - przedni prawy

M3 - tylny prawy

M4 - tylny lewy,

że wszystkie cztery silniki mają wspólne sterowanie od drążka gazu:

M1 = M2 = M3 = M4 = A * Throttle

oraz że wypracowujemy poprawki od jednostki nawigacji inercyjnej zgodnie z prostą zasadą:

P1 = B * (Target_Heading - Current_Heading)

P2 = C * (Target_Roll - Current_Roll)

P3 = D * (Target_Pitch - Current_Pitch)

to mamy:

sterowanie pochylaniem przód-tył:

M1 += P3

M2 += P3

M3 -= P3

M4 -= P3

sterowanie pochylaniem prawo-lewo:

M1 += P2

M2 -= P2

M3 -= P2

M4 += P2

i obrót wokół osi pionowej:

M1 += P1

M2 -= P1

M3 += P1

M4 -= P1

Oczywiście trzeba dobrać znaki zmian i współczynniki ABCD żeby nie było przesterowań, żeby platforma się stabilizowała a nie wywracała szybciej niż zdążysz zauważyć, ale to prosta matematyka. Potem już tylko wpisujesz nowo policzone M1..M4 do PWM sterujących silnikami i tak w kółko min. kilkadziesiąt razy/sekundę.

Zaczynaj od małych wartości współczynników BCD a potem zwiększaj do momentu, aż zauważysz oscylacje - wtedy cofnij i jest w miarę optymalnie. Zasadą nadrzędną jest to, by każdy krok uwzględniania kolejnych poprawek od IMU nie wnosił nic do sumarycznej siły nośnej zapodanej przez Throttle a zmieniał jedynie stosunki sił. Oczywiście kierunki obrotów silników powinny być na skos takie same - wtedy zadziała sztuczka z P1.

Gdy sobie to narysujesz, to wszystko okazuje się bardzo proste - oczywiście do czasu, gdy zechcesz pobawić się w prawdziwą fizykę układu dynamicznego.

Link do komentarza
Share on other sites

A to ty nas o to pytasz? Przecież jeśli już masz wypracowane dobre sygnały z IMU to znaczy, że tam właśnie użyłeś całek, pochodnych, filtru Kalmana albo czegoś podobnego.

Tak, podałem Ci przykład na regulatorze P, bo pytanie wskazywało na zupełnego świeżaka. To prosty algorytm sterowania silnikami ale w naturze działa - sam sprawdziłem. Zamiast latać chcesz to przez rok budować? Zrób coś prostego, zbadaj, pobaw się a potem rozbudowuj. To chyba lepsza droga niż rzucanie się od razu na głęboką wodę? Koszt porażki może być dużo większy.

Jak to? A skąd ja ma widzieć jaki pitch? Przecież masz chyba na pokładzie coś, co w ogóle wie co to latadło ma robić? Czy to będzie zdalnie sterowane czy autonomiczne i jaki jest cel jego działania?

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

HeadingValue wskazuje mi przechył na wybraną stronę natomiast Roll i Pitch mają wartości w zakresie 0-89,999 stopni.

Tak, wyplute informacje są już przefiltrowane jednak jestem świeżakiem ale czytałem trochę o PID i im więcej stosuje się całych członów tym płynniejsza praca.

Ale racja, na początku zajmę się tylko proporcjonalnością.

Spróbuję zrealizować to w C jednak jeśli masz jakieś wskazówki to czekam.

Na początku chciałbym zrobić tylko start góra-dół a później pobawię w latania przód-tył, lewo-prawo a na końcu yaw.

Link do komentarza
Share on other sites

Jak to "przechył na wybraną stronę"? Mógłbyś to wytłumaczyć? Bo normalnie to masz trzy wartości wg nomenklatury lotniczej oznaczające:

- yaw czyli obroty wzdłuż osi pionowej, gdy robisz zakręt lewo-prawo,
- pitch pochylanie dzioba góra-dół, jakbyś robił pętlę lub nurkował do ostrzelania celu na ziemi,
- roll - pochylanie na boki, jakbyś robił beczkę lub machał skrzydłami na pożegnanie.

Nie jest ważne w jakich jednostkach są one przekazywane i nie ważne jakie wartości przyjmują. Ważne, by oznaczały to co powinny.

http://collagefactory.blogspot.com/2010/06/yaw-pitch-and-roll.html

Takie coś w jakimś ustalonym układzie współrzędnych powinieneś dostawać z jednostki nawigacji inercyjnej i na tej podstawie ustalać poprawki do silników względem aktualnych komend pochodzących z odbiornika zdalnego sterowania lub z pokładowego komputera wyznaczającego i planującego zachowanie się urządzenia w przestrzeni.

Link do komentarza
Share on other sites

Mnie interesuje jak ustabilizować lot e miejscu. Bez wznoszenia, skrecania i obracania. Do dyspozycji mam Roll, Pitch i orientacyjny kat. To co Wy pisaliscie jest jak latać a mnie to na razie nie dotyczy. Chcę stabilnie wisieć w powietrzu.

Link do komentarza
Share on other sites

No to przyjmujesz wszystkie wartości target na zero i już. Tylko, że to nie gwarantuje wiszenia w miejscu a raczej kompensacje przechylenia, pochylenia i obrotu wzdłuż osi Z, potwierdzane jedynie pomiarami z IMU. Ona też ma swoje dryfy w każdej osi a wiatr lub inne zakłócenia spowodują, że będziesz dryfował. Droższa IMU to mniejsze błędy, większe rozdzielczości i dokładności ale nigdy nie będzie idealnie. Jeśli w Twoim systemie orientacji przestrzennej nie ma czegoś co daje odczyty bezwzględne (GPS, radar, sonar, barometr, magnetometr) to prędzej czy później odjedziesz w kosmos.

Link do komentarza
Share on other sites

Nie miałeś także wielu innych rzeczy, które tutaj być może się przydadzą i co? Myślisz, że dostaniesz tu wykład o całkowaniu numerycznym? O mechanice lotu, aerodynamice, rozwiązywaniu równań opływu wokół łopat śmigła, napędach 3-fazowych, falownikach, akumulatorach, przyjętych systemach zdalnego sterowania itd.. Od tego jest literatura więc zamiast czekać aż ktoś Ci poda na talerzu kawałek kodu możesz:

a. Poczekać kilka lat aż wyłumaczą Ci to w szkole. Niestety istnieje niebezpieczeństwo, że do tego czasu tak zaawansowana matematyka wypadnie z programu.

b. Kupić książkę typu "Metody numeryczne".

c. Szukać w sieci - niemożliwe by nie było tam setek stron o wszystkim, co może Cię w tym temacie interesować. Nie mówiąc już o otwartym kodzie wielu projektów wielowirnikowców. Tam znajdziesz zarówno proste algorytmy typu proporcjonalnego (jak ten powyżej), regulatory PID (mnożenie, całkowanie i różniczkowanie - trzy w jednym 🙂 ) a także z pewnością zamodelowane matematycznie i rozwiązywane w czasie rzeczywistym układy dynamiczne. Takie rzeczy robią jednak zespoły ludzi kończących studia, więc nie porywaj się z motyką na Słońce, szkoda czasu.

Na Twoim miejscu powstrzymałbym się od pisania pseudonaukowego bełkotu w rodzaju:

"Jednak chciałbym uniknąć kolysania więc powinienem to zcalkowac"

(bo jest to bzdura nie wspominając, że napisana z błędem) i po prostu zrobił to latadło, dla bezpieczeństwa przywiązał je sznurkami do paru krzeseł, włączył i zobaczył czy oscylacje w ogóle będą.

Zapewniam Cię, że w trakcie budowy napotkasz tak wiele problemów konstrukcyjnych, logistycznych, estetycznych i wszelkich innych, że ew. oscylacje już jako tako latającej konstrukcji będą jednym z mniejszych kłopotów. Musisz rozwiązać problemy finansowe, elektroniczne, mechaniczne, zakupowe a przede wszystkim zastanowić się co to ma być i po co. Mogę Ci tu wypisać sto pytań na które powinieneś odpowiedzieć zabierając się za taki kopter a wszystkie one będą ważne i sam je zauważysz w trakcie planowania lub - co gorsza - budowy. Jak już będziesz to wszystko wiedział, napisz do czego doszedłeś, jakie zasoby zgromadziłeś i jaki masz plan. Bo masz, prawda? . Inaczej to bicie piany, przykro mi.

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.