Kolejna konstrukcja Quadro od podstaw

Autorskie projekty naszych użytkowników

Moderatorzy: marbalon, moderatorzy2014, moderatorzy

Hokus
Posty: 14
Rejestracja: piątek 30 gru 2011, 16:50
Lokalizacja: Okolice Warszawy

Post autor: Hokus »

Co do regulatorów to robiłem w oparciu o notę AVR221: Discrete PID controller.
Przeglądałem też dużo wariantów i zawsze dziwił mnie ten czasem pojawiający się minus
przy członie D. Jak będzie jakościowa różnica między szeregowym a równoległym? Bo nie ukrywam że też zawsze widziałem ostatnie równanie jako sumę 3 członów.


Zabieram się dzisiaj za zdejmowanie charakterystyk żyroskopów, kończę już wahadło na serwie. Kąt będzie się zmieniał z coraz większą prędkością oraz szarpał, zobaczymy co z tego wyjdzie.

W między czasie czy ktoś może mi powiedzieć jak istotne jest tłumienie drgań śmigieł i silników? Powinno się próbkować z częstotliwości Nyquuista czyli 2 razy szybciej niż sygnał np z żyroskopu czy akcelerometru. Ale obecność drgań to chyba psuje bo one "wchodzą" za filtrem do układu. Z drugiej jednak strony konstrukcja powinna być sztywna.

Jaka powinna być recepta na złoty środek? Teoretycznie można wszystko idealnie wyważyć (silniki, śmigła) ale w praktyce i tak zawsze będą jakieś wibracje.
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Hokus pisze:Jak będzie jakościowa różnica między szeregowym a równoległym?
Żadna. To są trochę inne wzory do liczenia tego samego. Różnica jest tylko w interpretacji ilościowej parametrów Ti i Td.
Hokus pisze:Zabieram się dzisiaj za zdejmowanie charakterystyk żyroskopów, kończę już wahadło na serwie. Kąt będzie się zmieniał z coraz większą prędkością oraz szarpał, zobaczymy co z tego wyjdzie.
Pochwal się co z tego wyjdzie. Osobiście jestem sceptycznie nastawiony do traktowania serwa jako wzorca prędkości kątowej. To będzie lichy wzorzec, bo serwo ani nie porusza się płynnie ani nie znasz jego rzeczywistej prędkości. Lepiej pobaw się z gramofonem. Tam masz stabilną prędkość. Mimo tego u mnie żyroskopy dają inny współczynnik skalowania dla 33 i 45 obr/min.
Hokus pisze:W między czasie czy ktoś może mi powiedzieć jak istotne jest tłumienie drgań śmigieł i silników? Powinno się próbkować z częstotliwości Nyquuista czyli 2 razy szybciej niż sygnał np z żyroskopu czy akcelerometru. Ale obecność drgań to chyba psuje bo one "wchodzą" za filtrem do układu. Z drugiej jednak strony konstrukcja powinna być sztywna.
Jak już bawisz się w konstrukcje mechaniczne to spróbuj zrobić wibrator o zmiennej częstotliwości (regulacja prędkości silnika z mimośrodem) i amplitudzie (umieszczenie wibratora na końcu lekkiej dźwigni i zmiana położenia żyroskopu umieszczonego na tej dźwigni. To da ci rzeczywistą wiedzę o tym jak twoja elektronika reaguje na wibracje.
Nasze wskazówki nie powiedzą ci więcej niż tyle, że należy jak najbardziej ograniczać wibracje.
Piotrek.
Z różnych form kontaktu preferuję e-mail
Hokus
Posty: 14
Rejestracja: piątek 30 gru 2011, 16:50
Lokalizacja: Okolice Warszawy

Post autor: Hokus »

Jeszcze jedna rzecz, obecnie do sterowania reglem używam impulsu 1 - 2ms o rozdzielczości 200. Czyli mam skok o wartości 5 mikrosekund, czy taki jest wystarczający czy jeszcze zwiększyć rozdzielczość?
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Hokus pisze:Jeszcze jedna rzecz, obecnie do sterowania reglem używam impulsu 1 - 2ms o rozdzielczości 200. Czyli mam skok o wartości 5 mikrosekund, czy taki jest wystarczający czy jeszcze zwiększyć rozdzielczość?
To czy wystarczy zależy od regulatora a konkretnie od tego z jaką rozdzielczością analizuje sygnał wejściowy. Wyszedłem z założenia że tego nie wiem.
Zapas rozdzielczości w zasadzie nic nie kosztuje, to tylko odpowiednie zaprogramowanie timera. U siebie używam rozdzielczości 1us zarówno do pomiaru jak i sterowania. Sterowanie to zagadka chociaż da się ją rozwiązać, natomiast odczyt impulsów z odbiornika z większa rozdzielczością daje dużo więcej informacji o szumie w kanale sterowania. Przynajmniej w odbiornikach FM a takich używam, jest to cenna informacja.
Piotrek.
Z różnych form kontaktu preferuję e-mail
Hokus
Posty: 14
Rejestracja: piątek 30 gru 2011, 16:50
Lokalizacja: Okolice Warszawy

Post autor: Hokus »

Do sterowania używam zamiast radia modemów jakie zrobiłem kiedyś na CC1000, dane wysyłam z komputera, a dokładniej przetwarzam dżojstik. Więc tutaj problemu raczej nie ma że coś skacze itp.

Nie skończyłem jeszcze stanowiska do pomiaru ale pozrzucałem trochę danych z płytki w międzyczasie.

Załączam wykresy prezentujące aktualny pomiar kątów przy szuraniu płytką po stole z dość mocnym szarpaniem oraz przy machaniu. Nie ma tu rzeczywistego kąta odniesienia tylko kąt jakie wychodzą mi na płytce kolejno z Kalmana, akcelerometru i żyroskopu. Jeden obrazek jest dla osi X drugi dla osi Y.

czerwony - Kalman
zielony - akcelerometr
niebieski - żyroskop

Kolory może jaskrawe ale widać dobrze Kalmana na tle pozostałych.
Te wyniki są dla nastaw q = 0.01 r = 20. 'r' wyszło duże ale powoduje że przy silnym "szuraniu" po stole gdy kąt powinien być zerowy (nie ma prędkości kątowych) ale wariuje akcelerometr i tak wychodzą małe błędy z estymacji. Jako tako to chyba wygląda ;-)
Załączniki
osX.png
osY.png
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

Nie wiem czy dobrze widzę ale przebieg z wyjścia KF wygląda jakby był tylko brany z akcelerometru. Sygnał z żyroskopu jakby wcale nie miał wpływu na to.
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

slawko_k pisze:Nie wiem czy dobrze widzę ale przebieg z wyjścia KF wygląda jakby był tylko brany z akcelerometru. Sygnał z żyroskopu jakby wcale nie miał wpływu na to.
Bo jeżeli test polegał na szuraniu po stole to pracował akcelerometr mierząc przyspieszenia ale kat się nie zmieniał.

Proponuję trochę inny test. Przekręć IMU o zadany kat i zostaw stabilnie. Może to być kat 90°, albo jakiś inny powtarzalny. Chodzi o to aby zmienić kat i sprawdzić jaki stabilny wynika dadzą obie metody. Tutaj ruszałeś szybko i katy nie zdążały się ustabilizować, wiec ten test niewiele mówi. Pokazuje dynamikę zmian ograniczoną przepustowością układu transmisji danych i wizualizacji. Jeżeli poczekasz po zmianie będziesz miał porównanie wartości zwracanej przez wszystkie metody.

Przykład problemu z mojej stajni. Znaczenie wykresów od góry:
Pierwszy to chyba jakiś liczony kąt (nieistotne)
Drugi wykres to żyroskopy PQR oznaczone kolorami RGB
Trzeci wykres to akcelerometry XYZ oznaczone kolorami RGB
Ostatni najważniejszy wykres to kąt liczony trzema metodami: Blado zielony to finalny kąt liczony kosinusami - odpowiednik Kalmana u ciebie. Średnio jasno zielony to kąt liczony arkusem tangensem z akcelerometru. Seledynowy to kat liczony z żyroskopu.
Widać że wartość bezwględna kąta liczonego z żyroskopu ma wyraźnie większa wartość niż ta liczona z akcelerometru. Finalny kąt najpierw szybko przyrasta bo tak mu każe żyroskop a potem jest powoli korygowany do wartości akcelerometru.
To jest przykłąd tego jak wygląda źle dobrane wzmocnienie sygnału z żyroskopu.
Obrazek
Piotrek.
Z różnych form kontaktu preferuję e-mail
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

kat się nie zmieniał
Po wykresach widać ze chyba jednak się zmieniał
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

slawko_k pisze:Po wykresach widać ze chyba jednak się zmieniał
Zmieniał się wynik z kalmana, natomiast nie wiemy czy w rzeczywistości zmieniał się kąt.
Moim zdaniem trzeba dokładnie sprecyzować co testujemy, bo takie machanie "free style" pokazuje że coś tam działa ale nie pozwala na dokładniejszą ocenę.
Swój komputer mam w prostopadłościennej obudowie i gdy postawię go na jednym boku, potem na drugim, to wiem że bez względu na wypoziomowanie stołu i prostopadłościenność obudowy mam zmianę kata o 90° z dokładnością do ok. dziesiątej części stopnia, może więcej. Wtedy można coś porównywać.
Piotrek.
Z różnych form kontaktu preferuję e-mail
Awatar użytkownika
slawko_k
Posty: 1596
Rejestracja: niedziela 28 lut 2010, 14:24
Lokalizacja: podkarpackie

Post autor: slawko_k »

Zmieniał się wynik z kalmana
Z żyroskopu też.

Kod: Zaznacz cały

czerwony - Kalman
zielony - akcelerometr
niebieski - żyroskop 
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Pewnie mówimy o czym innym. Na wykresach widzę 4 fazy ruchu. W pierwszej i czwartej prawie nie widać zmian sygnału żyroskopu. To pewnie jest liniowe szuranie po stole.
Druga i trzecia faza to ewidentnie jakieś obroty w przestrzeni.
Co do tego szurania to widziałem gdzieś niedawno test na szynie. IMU poruszało się liniowo iw takim teście możemy mieć pewność że nie ma obecnych prędkości katowych i można coś oceniać. Dopóki trzymamy to w ręce to ruch nie jest czysty i w sygnale może być wszystko.
Powyższe wyniki to dla mnie test typu "Hello world!" czyli żyję i liczę. To trochę za mało do diagnostyki i sprzeczania się co jest nie tak.
Piotrek.
Z różnych form kontaktu preferuję e-mail
Hokus
Posty: 14
Rejestracja: piątek 30 gru 2011, 16:50
Lokalizacja: Okolice Warszawy

Post autor: Hokus »

Zrobiłem kolejne testy, tym razem przymocowałem płytkę do serwa żeby zmieniało kąt.
Pozycja wyjściowa to około 0 stopni, pozycje skrajne to około 55 stopni. Nie jest to tak istotne, przede wszystkim są stałe w czasie.

Na pierwszej fotce stanowisko pomiarowe. Tym razem było tylko kręcenie ze skrajnej pozycji serwa w skrajną, bez dodatkowego szarpania itp.

Test1: r = 20, q = 0.01
Test2: r = 5, q = 0.01
Test3: r = 1, q = 0.01.

Czyli zmieniałem samo r, w konsekwencji szybciej zbiegało do ustalonego stanu z akcelerometru. Problem polega na tym że wczorajsze testy pokazały iż dla r = 1 przy "szuraniu" po stole czyli dawaniu przyśpieszeń bez zmiany kąta dość mocno wariowało i dopiero dla wartości r = 20 było mało podatne, ale bardziej "ospałe". Według mnie powinno być relatywnie "duże" r żeby było odporne na przyśpieszenia ale wtedy powstaje ten "dziubek" jak na wykresach. Mam teraz wyłączone filtrowanie w żyroskopach ale można tam włączyć górno i dolno przepustowe. Może zostawić r = 15 i włączyć filtry? Bo dziubek występuje przy skokowej zmianie kąta o dużą wartość.

Z tymi żyroskopami jest jeszcze coś co mnie zastanawia (L3G4200D). Ustawiłem najmniejszą czułość, czyli 250 dps więc daje to rozdzielczość 8.75 mdps/digit (nota - strona 10).

Formuła licząca: gyro_xSpeed = ((float)gyro_xSpi * 0.00875);
Okazało się że z tego wychodzi kąt 2 razy mniejszy niż powinien i dopiero po przemnożeniu jeszcze przez 2 wyszło tak jak trzeba (czyli współczynnika jak dla 500 dps). Czyli albo błąd w nocie albo coś źle rozumiem? Sprawdzałem kilka razy czy dobrze ustawiłem rejestry i wszystko się zgadza, jest na 250 dps.

Edit: Odpaliłem z włączonymi filtrami HP, LP i oboma na raz (na żyroskopie). Nic to nie dało, maksymalny błąd zmniejszył się bardzo niewiele.
Załączniki
P1010045.JPG
test1.png
test1.png (11.59 KiB) Przejrzano 2795 razy
test2.png
test2.png (10.76 KiB) Przejrzano 2795 razy
test3.png
test3.png (10.82 KiB) Przejrzano 2795 razy
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Coś z tym żyroskopem lub procedurami całkowania jest nie tak. Jest zupełnie nieprzewidywalny. Różnice rzędu 40° w kolejnych okresach są moim zdaniem niedopuszczalne. W pierwszej kolejności trzeba to doprowadzić do porządku, potem możesz bawić się filtrami.
Pytanie pomocnicze: gdy całkujesz prędkość kątową to skąd bierzesz czas całkowania? To jest stała w programie czy rzeczywista wartość czasu jaki upłynął?
Piotrek.
Z różnych form kontaktu preferuję e-mail
Hokus
Posty: 14
Rejestracja: piątek 30 gru 2011, 16:50
Lokalizacja: Okolice Warszawy

Post autor: Hokus »

Co do całkowania zrobiłem tak że mierzyłem wystawiając stan na pin ile trwa pomiar i jaki jest okres. Sprawdziłem i wyszło że stały niezależnie od tego czy procek coś wysyła czy nie.
Zatem mnożę przez stałą.

Jak na to patrze to nurtują mnie 2 rzeczy. Pierwsza to fakt że nie dałem w filtrze Kalmana do wektora stanu biasu żyroskopu. Ale symulowałem to w matlabie oraz przeglądałem masę literatury i wszystko wskazywało na to że bez tego sobie spokojnie też poradzi.

Druga rzecz to te "dziubki" na wykresach. Czy to nie powinno być odwrotnie? Tzn że przy zmianie kąta zamiast przestrzału powinno być powolne dążenie do niego, tak jak to wygląda na załączonym rysunku.
Załączniki
matlab.png
matlab.png (10.35 KiB) Przejrzano 2764 razy
Awatar użytkownika
PitLab
Posty: 967
Rejestracja: środa 17 mar 2010, 20:29
Lokalizacja: Warszawa
Kontakt:

Post autor: PitLab »

Hokus pisze:Co do całkowania zrobiłem tak że mierzyłem wystawiając stan na pin ile trwa pomiar i jaki jest okres. Sprawdziłem i wyszło że stały niezależnie od tego czy procek coś wysyła czy nie.
Zatem mnożę przez stałą.
Może spróbuj mierzyć czas rzeczywisty. Ja to robię przechwytując stan timera w każdym cyklu. Nawet jeżeli pętla główna zacznie pracować niestabilnie to nie wpłynie istotnie na obliczenia IMU. U ciebie wygląda to jakby był problem albo z fizycznym odczytem prędkości z żyroskopu, albo z dużymi różnicami czasu obiegu pętli.
Żyroskopy to podstawa i mając problem na samym początku nie poskromisz kalmana, pidów itd.
Kąt całkowany z żyroskopów może lekko odpływać od reszty, ale jego amplituda w teście wahadła na serwie musi być stała i równa amplitudzie zmiany kąta liczonego z akcelerometru.

Co do kalmana nie pomogę. Dzióbki rzeczywiście są dziwne, ale to już sam musisz zdiagnozować, bo tylko ty znasz swój soft.
Ja takie dziubki mam jak żyroskop ma za duże wzmocnienie i całkuję za duży kąt.
Piotrek.
Z różnych form kontaktu preferuję e-mail
ODPOWIEDZ