• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Filtr kalmana dla mpu6050
#1
Witam. Chcę zrobić stabilizację samolotu RC na arduino. Potrzebny jest mi do tego program z filtrem kalmana, jednak wszystkie, jakie znalazłem na internecie nie działają(prawdopodobnie są dla starszych wersji oprogramowania). Może mi ktoś podesłać link to jakiejś strony z kalmanem lub napisać w odpowiedzi bibliotekę i implementację tego filtru, aby wpisać tylko dane wyjściowe i uzyskać pitch i roll na wyjściu? Ewentualnie może znacie inne sposoby na połączenie żyroskopu i akcelerometra, aby nie było zakłóceń z przeciążeń?
 
Odpowiedź
#2
(15-05-2020, 16:33)Scislov napisał(a): prawdopodobnie są dla starszych wersji oprogramowania

To nie ma nic wspólnego z wersją oprogramowania.
Ba, ten filtr działał 60 lat temu, gdy nie było jeszcze na świecie Arduino.

Jeśli to nie zadziała, oznacza że nie wiesz o czym piszesz.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
A 60 lat temu były kompilatory do Arduino i miały tę samą aktualizacje co teraz???
 
Odpowiedź
#4
Jeżeli podczas kompilacji wywala błąd w kilku liniach, to chyba znaczy, że kiedyś była inna syntaktyka w Arduino, która teraz nie działa
 
Odpowiedź
#5
Napiszę jeszcze raz.
Filtr Kalmana jest tworem matematycznym i nie ma nic wspólnego z platformą na jakiej go zaimplementowano.
Jeśli liczę coś takiego:
Kod:
KalmanFilter::KalmanFilter(double angle, double bias, double measure)
{
    Q_angle = angle;
    Q_bias = bias;
    R_measure = measure;

    K_angle = 0;
    K_bias = 0;

    P[0][0] = 0;
    P[0][1] = 0;
    P[1][0] = 0;
    P[1][1] = 0;

    kt = (double)micros();
}

double KalmanFilter::update(double newValue, double newRate)
{
    dt = (double)(micros() - kt) / 1000000;

    K_rate = newRate - K_bias;
    K_angle += dt * K_rate;

    P[0][0] += dt * (P[1][1] + P[0][1]) + Q_angle * dt;
    P[0][1] -= dt * P[1][1];
    P[1][0] -= dt * P[1][1];
    P[1][1] += Q_bias * dt;

    S = P[0][0] + R_measure;

    K[0] = P[0][0] / S;
    K[1] = P[1][0] / S;

    y = newValue - K_angle;

    K_angle += K[0] * y;
    K_bias += K[1] * y;

    P[0][0] -= K[0] * P[0][0];
    P[0][1] -= K[0] * P[0][1];
    P[1][0] -= K[1] * P[0][0];
    P[1][1] -= K[1] * P[0][1];

    kt = (double)micros();

    return K_angle;
};

To co to ma wspólnego z wersją IDE?
U mnie się kompiluje.
Po drugie: Napisałem "Jeśli to nie zadziała..." Podejrzyj mój wcześniejszy post, a zauważysz że wyraz "to" jest koloru niebieskiego, ponieważ jest linkiem do repozytorium. Ten filtr używam i nie miałem nigdy problemu z kompilacją.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#6
Nie widziałem hiperłącza. A odnośnie błędów, to miałem na myśli przykłady z internetu, w które miały u mnie błędy i nie mogłem ich uruchomić. Dzisiaj sprawdzę ten kod.
 
Odpowiedź
#7
Podaj linki do tych przykładów.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#8
Przykładowo te.
http://www.jarzebski.pl/arduino/rozwiaza...lmana.html
https://github.com/jarzebski/Arduino-Kal...PU6050.ino

Próbowałem napisać na podstawie tego program, wrzucając do kalmana swoje dane, ale wychodziły dziwne rzeczy
 
Odpowiedź
#9
A w przykładach z hiperłącza wywala błędy przykładowo w inicjalizacji MPU6050 lub w funkcji min, gdzie jest tylko jeden argument
 
Odpowiedź
#10
Bibliotekę dla MPU masz oczywiście tę? https://github.com/jarzebski/Arduino-MPU6050.git
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości