MATLAB umożliwia analizę danych z czujników, w które wyposażone są nasze smartfony! W bardzo prosty sposób można zarejestrować sygnały przyspieszenia (akcelerometry), prędkości kątowej (żyroskopy), indukcji magnetycznej (magnetometr) oraz innych. Zobaczmy jak to zrobić!
Aby skorzystać z funkcji rejestracji sygnałów ze smartfona, musi być spełnione kilka warunków:
- należy posiadać aktywne konto na portalu MathWorks oraz ważną licencję,
- w MATLABie należy zainstalować MATLAB Support Package for Android Sensors – pakiet zawierający zestaw funkcji, dzięki którym będzie możliwa rejestracja sygnałów w czasie rzeczywistym,
- w telefonie należy zainstalować aplikację MATLAB Mobile – to z jej poziomu będziemy decydować o tym, które wielkości rejestrować, oraz w jakim przedziale czasowym.
Oprogramowanie zainstalowane na telefonie umożliwia dostęp do wszystkich czujników:
- Akcelerometru – pomiar przyspieszenia w 3 osiach,
- Żyroskopu – pomiar położenia i prędkości kątowej,
- GPS – dane z systemu lokalizacji satelitarnej,
- Magnetometru – pomiar indukcji magnetycznej,
- Mikrofonu.
Dane z czujników można zapisywać lokalnie w pamięci telefonu lub „streamować” na bieżąco do MATLABa za pośrednictwem MathWorks Cloud, czyli chmury. Tym samym nie jest wymagane przewodowe połączenie z komputerem. Można skonfigurować komputer na „nasłuch” danych z telefonu i zdalnie rejestrować sygnały. Aby to zrobić należy zainstalować wspomniane powyżej pakiety na telefonie i w MATLABie i skojarzyć je z tym samym kontem MathWorks. Następnie należy posłużyć się funkcją mobiledev, która tworzy obiekt przeznaczony do akwizycji danych ze smartfona. I w zasadzie, w najprostszym przypadku to wszystko..
m = mobiledev;
Telefon
Teraz należy przejść do aplikacji MATLAB Mobile. W zakładce Sensors możemy skonfigurować sposób akwizycji sygnału. Dane mogą być zapisywane lokalnie w plikach, lub wysyłane bezpośrednio do MATLABa. Ponadto można zdefiniować częstotliwość próbkowania sygnałów w zakresie od 1 do 100Hz. Nie jest to duża częstotliwość jednak do zastosowań „rekreacyjnych” wystarczająca.
Po wyborze zestawu wielkości, które chcemy mierzyć, wystarczy kliknąć Start. Dane są zapisywane w tle. Kiedy zdecydujemy o zakończeniu rejestracji, wracamy do MATLABa. Dostęp do danych uzyskujemy w taki sposób:
[Acc, t] = m.accellog; [Or, t] = m.orientlog; figure; subplot(211); plot(t, Acc); grid on; xlabel('Czas [s]'); ylabel('Przyspieszenie [m/s^2]') subplot(212); plot(t, Or); grid on; xlabel('Czas [s]'); ylabel('Położenie kątowe [^O]')
W efekcie otrzymujemy sygnały z czujników telefonu:
Jak widzicie sposób na akwizycję danych z telefonu jest banalny. Pomysłów na zastosowanie tego sposobu jest wiele: od prostego krokomierza po nawigację inercyjną. Macie jakieś doświadczenia w tej materii?