Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:aml:lab4 [2013/11/06 16:00]
esimon
pl:dydaktyka:aml:lab4 [2019/06/27 15:50] (aktualna)
Linia 2: Linia 2:
  
 ===== Sensor Manager ===== ===== Sensor Manager =====
-//przetestowanie ​aplikacji ​kmopas+ 
 +Do **wybranego** projektu:  
 +Przeanalizuj w jaki sposób realizowany jest dostęp do sensorów i ich przekształcenie w odpowiedni dla obrotu ekranu układ współrzędnych. 
 + 
 +==== Mindroid ==== 
 +Sklonuj projekt: [[https://github.com/​sbobek/​mindroid|Mindroid.]] 
 +Zbuduj 4-kołowego robota, przeczytaj tutorial dot tego jak sterować robotem za pomocą ruchów telefonu. 
 +Przetestuj działanie ​aplikacji ​i wykonując kolejne ćwiczenia dotyczące filtrowania danych, spróbuj polepszyć działanie aplikacji, tak by szybciej reagowała na zmiany. 
 + 
 +==== Kompas ==== 
 + 
 +{{:​pl:​dydaktyka:​aml:​compas.png?​200 |}} 
 +Pobierz aplikację kompas, z repozytorium [[https://​sbobek@bitbucket.org/​sbobek/​aml_compas|Bitbucket]] i przetestuj jej działanie. 
 + 
 +**Uwaga** Pobierz tylko wersje tagowaną jako **RAW**, filtrowanie będzie realizowane podczas tego ćwiczenia. 
 + 
  
  
 ===== Filtrowanie danych ===== ===== Filtrowanie danych =====
-//filtr kalmana 
  
-===== Analiza ​danych ===== +Dla danych ​pobieranych z sensorów urządzenia zaimplementuj filtr Kalmana. 
-//analiza danych z akcelerometru ​pobraniezapisanie do sqliteanaliza ​octave (czestotliwosci maksymalnej ​minimalnejamplitudasrednie przyspieszeniekorelacja trzech osi srednia ​ ​- ​jakie?etc.)+Poszczególne parametry tego filtra powinny być aktualizowane zgodnie z formułami podanymi poniżej: 
 +<​code>​ 
 +
 +p + q; 
 + 
 +p / (p + r); 
 +x + k * (measurement – x); 
 +(1 – k) * p; 
 +</code> 
 + 
 +Gdzie: 
 +  * x - filtrowana dana 
 +  * p - szacowany błąd 
 +  * k - wzmocnienie Kalmana (tzw. //Kalman Gain//) 
 +  * r szum pomiaru 
 +  * q - szum przetwarzania 
 + 
 +Wartościktóre należy dobrać, w celu modyfikowania działania filtru to: **q, r** oraz **k**. Wartość **p** nie jest specjalnie istotna, ponieważ jej wartość jest dynamicznie ustalana w procesie filtrowania. 
 + 
 +Poeksperymentuj z różnymi wartościami ​zaobserwuj wyniki. Dla jakich wartości otrzymujesz najlepsze rezultaty?​ 
 + 
 +**Uwaga** Dla ułatwieniaponiżej kod filtru kalmana w C: 
 +<code c> 
 +typedef struct { 
 +  double q; //process noise covariance 
 +  double r; //​measurement noise covariance 
 +  double x; //value 
 +  double p; //​estimation error covariance 
 +  double k; //kalman gain 
 +} kalman_state;​ 
 + 
 +kalman_state 
 +kalman_init(double qdouble rdouble pdouble intial_value) 
 +
 +  kalman_state result; 
 +  result.q = q; 
 +  result.r = r; 
 +  result.p = p; 
 +  result.x = intial_value;​ 
 + 
 +  return result; 
 +
 + 
 +void 
 +kalman_update(kalman_state* state, double measurement) 
 +
 +  //​prediction update 
 +  //omit x = x 
 +  state->p = state->p + state->​q;​ 
 + 
 +  //​measurement update 
 +  state->k = state->p / (state->​p + state->​r);​ 
 +  state->x = state->x + state->k * (measurement - state->​x);​ 
 +  state->p = (1 - state->​k) * state->​p;​ 
 +
 +</​code>​ 
 + 
 +Przykładowe wyjście dla kodu z przykładu powyżej: 
 + 
 +{{:​pl:​dydaktyka:​aml:​kalman-test.png?500|}} 
 + 
 +//Kod żródłowy,​ oraz wykresy pochodzą ze strony// [[http://​interactive-matter.eu/​blog/​2009/​12/​18/​filtering-sensor-data-with-a-kalman-filter/​|Interactive Matter Lab]] 
 + 
 +==== Gotowe do użycia zestawy filtrów ​ ==== 
 +Fajne repozytorium:​ https://​github.com/​berndporr/​iirj 
 + 
 + 
 +===== Zapis danych do analizy ===== 
 +Zacznij pracować nad zapisem danych z **akcelerometru** do bazy danych SQLite, odpowiednio modyfikując klasy z [[.:​lab3#​baza_danych|Lab 4]]. 
 + 
  
  
  
pl/dydaktyka/aml/lab4.1383750024.txt.gz · ostatnio zmienione: 2019/06/27 15:51 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0