Przydługawy wstęp (można przejść do drugiego akapitu ;)
Posiadam układ CC3D atom, który służy do sterowania silnikami w QCopterze na podstawie odebranych informacji o chcianej mocy, pochyleniu, wychyleniu i obrotowi. Łączy się go z transmitterem i nawet 5 letnie dziecko może złożyć latający pojazd. W moim jednak przypadku informacje te dostarczam z przeze mnie zaprogramowanego procesora. 4-kanałowym PWM-em steruję throttle/Y/P/R. Wszystko niby działa, niczym nie muszę się przejmować - po prostu wysyłam sygnał do układu, gdzie chcę lecieć, JEDNAK takie rozwiązanie komplikuje cały układ (dodatkowy moduł CC3D), zwiększa wagę, wielkość, cenę i lekko ogranicza. Stąd zależy mi bardzo na pozbyciu się go i tutaj dochodzimy do clue:
Potrzebuję algorytm, który jest używany w QCopterach do wyliczania mocy silników tak, aby pojazd leciał w zadanym kierunku. Podaję:
Dane wejściowe:
- Dane z żyroskopu/akcelerometra/kompasu/świętego Piotra
- Kierunek jaki chcę osiągnąć: 20st Yaw, 10st Pitch, -30st Roll, 50% Throttle
Dane wyjściowe:
4 wartości odpowiadające mocy każdego z silników (np. w skali 1-100)
Znalazłem jeden, ale źle wylicza (lub ja nie potrafię go poprawnie obsłużyć/przystosować), stąd zależy mi na możliwie najprostszym do implementacji
Język C/C++ system Linux