Catapultam habeo. Nisi pecuniam omnem mihi dabis, ad caput tuum saxum immane mittam.

/devolot #1: one does not simply trace position from acceleration czyli this is how I fail

Posted in /devolot by maciejewski on Marzec 8, 2012, 18:00

Na blogu dawno się nic nie działo, ponieważ zająłem się (wreszcie) poważniej nauką programowania w Javie (jakkolwiek dziwnie to wygląda wierzę, że należy to odmieniać właśnie w ten sposób). Ponaglony więc nieco przez dra Jakuba Milczarka, który w swoim comiesięcznym zestawieniu „Znajomi piszą” któryś raz z rzędu z uporem maniaka uwzględnia pierdoły, które raz na jakiś czas tu wrzucam – postanowiłem napisać ten tekst. Po części ku przestrodze.

Po napisaniu klasycznego „Hello World” (świat nie odpowiedział „Hello Kamil”, co było zresztą do przewidzenia) przyszedł czas na coś ciekawszego, zacząłem bawić się odczytywaniem danych z czujników i w mojej głowie narodził się pomysł na aplikację. A gdyby tak można zmierzyć długość przedmiotu przy pomocy smartfona? GPS nie ma wystarczającej dokładności ale mamy w telefonie trzyosiowy czujnik przyspieszenia. Z fizyki wiemy, że przyspieszenie jest pochodną prędkości, która jest pochodną położenia. Znamy przyspieszenie, które jest drugą pochodną drogi – wystarczy dwa razy scałkować (nie wiem czy analogicznie do drugiej pochodnej można mówić o drugiej całce) i będzie wynik. Testy z użyciem funkcji sinus [a dokładnie  f(x) = 1-cos(x)] jako niezłego przybliżenia rzutu pionowego potwierdziły poprawność algorytmu, niestety w praktyce mimo zastosowania przeróżnych metod poprawiania jakości pomiaru nie udało mi się uzyskać miarodajnego wyniku. Stosunek szumu do sygnału okazał się zbyt wysoki (nieruchome urządzenie notuje skoki przyspieszenia rzędu 1m/s co znacznie przekracza przyspieszenia jakie generujemy poruszając telefonem w ręce. Próby wygładzania pomiarów uczyniły go zupełnie bezużytecznym (stosunek szum/sygnał). Drugim istotnym czynnikiem jest fakt, że czujnik jest w stanie jedynie zmierzyć (z dość małą zresztą dokładnością) wartość średniego przyspieszenia od czasu poprzedniego pomiaru oraz czas między pomiarami, więc z każdym kolejnym pomiarem wynik jest obarczony coraz większym błędem.

Całą sytuację można porównać do prowadzenia samochodu z zawiązanymi oczami. Wychodząc z założenia, że w początkowym momencie teoretyczne auto porusza się po zadanym torze powinniśmy być w stanie utrzymać kierunek jazdy oraz wykonać na ślepo skręt oraz drugi w przeciwną stronę żeby wrócić na właściwy tor, ale oczywiste jest że nie widząc w którym kierunku jedziemy prędzej czy później wylądujemy w wyimaginowanym rowie lub na nieistniejącym drzewie (autor nie bierze żadnej odpowiedzialności za skutki eksperymentów – nie próbujcie tego w domu).

Prawdopodobnie za wynik odpowiedzialny jest kiepskiej jakości czujnik, miałem przez chwilę możliwość sprawdzić działanie aplikacji na Motoroli Droid i tam urządzenie leżąc nieruchomo nie raportowało wartości niezerowych, więc możliwe, że dałoby się uzyskać lepszy wynik, ale do czasu gdy będę dysponował nowszym urządzeniem temat idzie w odstawkę.

Już wkrótce natomiast wpis o kolejnej aplikacji, która dla odmiany udała się (spełnia swoje założenia) i ma szansę wyjść z wersji beta (w chwili obecnej beta 0.51) do wersji końcowej.

Reklamy

komentarze 2

Subscribe to comments with RSS.

  1. Jakub Milczarek said, on Marzec 9, 2012, 22:38 at 10:38 pm

    Cieszę się, że zaczynasz znów pisać – będę miał materiał do komentowani na mojej stronie, tylko czemu mnie tak tytułujesz, a w zasadzie stopniujesz? 🙂

    Co do całek, to jest coś takiego jak druga i kolejna całka – nie mylić z całką podwójną (całkami wielokrotnymi).

    PS. W linku jest błąd – zapewne nie dodałeś http://


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: