Pomiar prędkości poruszania się za pomocą telefonu

0

Chcę dodać do apki napisanej w React Native, aktualną prędkość i zastanawiam się czy wybrać pomiar za pomocą GPS lub za pomocą akcelerometru.
z GPS jest problem, że user musi nadać odpowiednie uprawnienie w przypadku akcelerometru ten problem odpada, dodatkowo istnieje ryzyku, że GPS na chwilę zwariuje i pokaże albo brak prędkości albo niemożliwą prędkość. Czy może ktoś wie, jakie to inne apki rozwiązują? Docelowo na zostać pokazana prędkość jazdy rowerem.

0

na podstawie współrzędnych jesteś w stanie obliczyć prędkość, ale akcelerometr? to już sprawdzenie zapocenia czoła na przedniej kamerce da lepszy rezultat

4

błąd akcelerometru rośnie z czasem (całkowanie), a amatorskiego z telefonu jest ogromny. To, że świat militarny to robi, to nie znaczy że telefon scałkuje przyśpieszenie do mniej więcej realnej prędkości, a tę do drogi.

Akcelerometry w atomowych okrętach podwodnych kosztują miuliony dolarów, i mają rozmiar przynajmniej lodówki - a i tak okresowo musi byś stosowana korekta z innych form nawigacji

0

A to nie jest tak ze akcelometr podaje tylko info o przyspieszeniu a nie predkosci?

https://developer.android.com/guide/topics/sensors/sensors_motion

1

Całka drugiego rzędu to nie zabawka. Ten narastający bład / na wynik medialnie jest przedstawiany jako "efekt motyla"

Ktoś poda jakąś deklarowaną dokładność akcelerometru telepanego w kieszeni ?

ps. ja to mam mix wykształcenia, ale wydaje się większość programistów na słaby kontakt z parametrami fizycznymi, rachunkiem błędów, a nawet słabo z podkładem z metod numerycznych
Programista dostaje 0x123456 z komórki / portu, zrzutuje/skonwertuje to do floata, i nawet mu nie świta, jaki kontekst matematyczny tu jest, na ile ufać tej liczbie itd...

0

@ZrobieDobrze: Dzięki za informację, myślałem, że są one bardziej dokładne.

1

Zrobienia INS'a z telefonu sobie nie wyobrażam, chociażby ze względu na częstotliwość próbkowania. GPS nie przelicza prędkości z 2 różnych współrzędnych, bo przy błędzie ~15m i pomiarach co sekundę nie da ci wystarczającej dokładności. Odczytuje ją z efektu Dopplera, gdzie ciąg sygnałów z jednego satelity jest "zagęszczony" a z drugiego, od którego się oddalamy "rozrzedzony".
Możesz zwiększyć dokładność odczytu prędkości poprzez wyliczenie średniej z kilku pozycji i odrzucenie zmian wymagających nierealnych wartości przyśpieszenia. Nie realne jest, że w jednej sekundzie stoisz, a w kolejnej poruszasz się 50 m/s.

1

Można zastosować statystyczne metody jak filtr kalmana w celu wyestymowania rzeczywistej wartości na podstawie danych z gps i accelerometra.
Dobrze wiedzieć z jaką dokładnością i precyzją działa dany sensor, czyli mean i std danego urządzenia pomiarowego, wyprowadzić wzór kinematyki i razem podstawić pod filtr kalmana.

Algorytm jest dość powszechnie stosowany im dalej w las tym bardziej zaawansowane techniki będą potrzebne.

1

@somekind:

Ale w samochodach to działa przecież?

W Androidzie z tego co pamiętam to też działa, tylko nie jest dostępne bezpośrednio dla programisty. API od lokalizacji pozwala ci określić jakiej dokładności / częstotliwości potrzebujesz i leci to do do niższej warstwy, która "dba o to". Powody to częstotliwość odświeżania (w przeciwieństwie do prędkości, przyśpieszenie może się zmieniać skokowo) i zarządzanie energią. O ile kojarzę, to telefon ma w sobie specjalizowaną elektronikę, która obsługuje akcelerometr, właśnie żeby móc uśpić aplikacje, a wciąż zbierać dane. W każdym razie zrobili coś takiego pod licznik kroków i ogólne wykrywanie typu aktywności spoczynek, marsz, bieg, jazda rowerem, samochodem. Urządzenie ma w tej chwili sporo możliwości pozyskiwania pozycji prędkości: akcelerometr, GPS, GLONAS, lokalizacja na podstawie zasięgu GSM/WiFi i w zależności od potrzeb aplikacji wykorzystuje odpowiednio dokładne, szybkie i energochłonne sensory.

1 użytkowników online, w tym zalogowanych: 0, gości: 1