Teoretycznie można to zrobić; w praktyce nie.
Musiałbyś założyć, że znasz początkową prędkość, ale zakładając, że zaczynasz od 0 prędkości, nie jest to takie złe założenie.
Należy również znać rzeczywistą orientację urządzenia przez cały okres. W przeciwnym razie nie można rozróżnić zmiany przyspieszenia ze względu na rzeczywiste przyspieszenie w stosunku do samego obrotu urządzenia.
(Pamiętaj, trzeba wyjąć przyspieszenie ziemskie od odczytów!)
Wreszcie, błędy będą sumować się od jakiegoś czasu, nie tylko dlatego, że miarą przyspieszenia jest niedoskonały, ale dlatego, że tylko uzyskać dyskretne próbki w czasie.
Oprócz tych wszystkich rzeczy, oczywiście, to działa! Interfejs API informuje, w jakich jednostkach znajdują się odczyty (m/s^2). Możesz poprosić czujnik o bardzo szybkie aktualizacje. Myślę, że byłoby ciekawie zobaczyć, jak to jest (in) dokładne, pisząc aplikację, która to robi, a następnie ustawiając telefon na płasko, a następnie idąc do przodu i zatrzymując się z nim. Jak blisko 0 jest odczyt?
To jeszcze bardziej interesujące (i zabawne) po prostu pozostawienie urządzenia na stole przez pół minuty, odjąć grawitację i zintegrować to, co zostało dwa razy, aby uzyskać zmianę pozycji. Szacuje się, że urządzenie przesunęło się o kilkaset metrów. –
Hah OK, więc jest znacznie gorzej, niż myślałem ... –
Próbowałem to zrobić. Dodałem filtr dolnoprzepustowy do prędkości, aby uniknąć wyprowadzenia ... w tym przypadku nie mam znaczącego ruchu przy użyciu nieruchomego urządzenia. Ale ruch, nawet ruch kilku centymetrów daje wyniki, które wydają się losowe. Prędkość terminalu często jest bardzo różna od 0. – ARLabs