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

Pomiar prędkości poruszania się za pomocą telefonu
M0
  • Rejestracja:ponad 11 lat
  • Ostatnio:minuta
  • Postów:362
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.

66
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:53
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

ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 1x, ostatnio: ZrobieDobrze
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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

Zobacz pozostałe 3 komentarze
vpiotr
Poguglałem trochę i są różne (skrajne) opinie (po góralsku - albo się da, albo się nie da): https://www.quora.com/Is-it-possible-to-calculate-speed-using-an-accelerometer-on-Android-If-yes-how
SA
@vpiotr: skoro się poruszasz to kiedyś przyspieszyłeś, nie? Chyba, że nie przyszpieszyles i jednostajnie stoisz.
SA
I nadal brzmi to jak zły pomysł że względu na kumulację błędu.
fasadin
zgadza sie, jezeli poruszasz sie jednostajnie to a=0 ale zakladajac, ze podczas uruchomienia aplikacji v=0 to wtedy moznaby policzyc predkosc obiektu tylko na podstawie przyspieszenia i w jakim czasie dane przyspieszenie sie odbywalo. Teoria jest prosta, ale w praktyce bedzie dosc duze odchylenie (w zaleznosci od czestotliowosci update ktore sa wysylane z pomiarami)
vpiotr
@fasadin, zgadza sie, ale jak wlaczylem pomiar w czasie jazdy to o kant taki pomiar
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
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...


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 2x, ostatnio: ZrobieDobrze
M0
  • Rejestracja:ponad 11 lat
  • Ostatnio:minuta
  • Postów:362
0

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

piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Postów:3277
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.

somekind
Ale w samochodach to działa przecież?
SP
SP
  • Rejestracja:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:181
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.


Knowledge Distiller
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Postów:3277
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.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)