m7

unter CC-BY-SA 2.0 Lizenz von cwnewserpics @ flickr

Im neu erschienenen iOS7 ist erstmalig die CMMotionActivity Class vorhanden, welche Apps über den aktuellen Zustand des Telefons (der Person) informiert. Darin unterscheidet der neue M7 Motion Prozessor zwischen

  • stationary
  • running
  • walking
  • automotive
  • unknown

Zusätzlich gibt die Klasse eine „confidence“, also Sicherheit, aus, mit welcher die aktuelle Aktivität erkannt wurde. Doch wie macht der M7 Motionprozessor das?

Nagut, zugegeben, wir wissen auch nicht, wie es Apple macht. Aber wir können es uns denken. Daher ein kleiner Einblick in die Welt der Algorithmen zur Aktivitätenklassifizierung mit Hilfe von Beschleunigungs- und Drehratensensoren.

iPhone-CoreMotion-Koordinatensystem

Zur Veranschaulichung wurden verschiedene Aktivitäten mit dem iPhone ausgeführt und aufgezeichnet.

Aktivitäten

  • Joggen mit dem Telefon in der Hosentasche
  • Laufen mit Telefon in der Hand
  • Radfahren mit Telefon in der Hosentasche
  • Sitzen mit Telefon in der Hand

Die dabei aufgezeichneten Beschleunigungswerte in die Richtung der 3 Achsen des Beschleunigungssensors können nachfolgender Abbildung entnommen werden:

Beschleunigungen in alle 3 Richtungen (acceleration) während verschiedener Aktivitäten

Beschleunigungen (in g, wobei 1g=9.81m/s²) in alle 3 Richtungen während verschiedener Aktivitäten

Aus dieser Abbildung kann man eigentlich nur offensichtliches entnehmen. Nämlich, dass ruhiges Sitzen kaum eine Beschleunigung hervorruft und Joggen wildes Ausschlagen der Sensoren verursacht.

Algorithmus zur Charakterisierung

Eine einfach Möglichkeit eine grobe Unterscheidung zu realisieren liegt im Maximal- bzw. Minimalwert sowie dem Betrag der Beschleunigung.

Der Betrag der Beschleunigung errechnet sich aus den Beschleunigungswerten in alle 3 Raumrichtungen. Dies ist unabhängig von der Lage des iPhones im Raum. Es kann also am Arm, in der Hosentasche oder in der Handyhalterung im PKW verbaut sein.

\(|a|=\sqrt{a_x^2 + a_y^2 + a_z^2}\)

Weiterhin wird in einem bestimmten Zeitintervall (z.B. 0.5s) die Differenz zwischen maximal und minimal aufgezeichneter Beschleunigung berechnet.

\(\Delta a = a_\text{max}-a_\text{min}\)

Trägt man diese beiden Kennwerte aus dem Beschleunigungsverlauf zusammen in einem Diagramm auf, ist offensichtlich, dass eine Klassifizierung vorgenommen werden kann.

Klassifizierung von unterschiedlichen Aktivitäten mit Hilfe von Beschleunigungswerten

Klassifizierung von unterschiedlichen Aktivitäten mit Hilfe von Beschleunigungswerten

Der Betrag der Beschleunigung ist für ruhige Aktivitäten nahe an 1g, was die Erdbeschleunigung darstellt. Für dynamische Aktivitäten, wie z.B. Joggen, kommen die Beschleunigungen aus der schnellen Richtungsänderung des Smartphones hinzu (z.B. Aufsetzen der Füße auf dem Boden), wodurch insgesamt eine höhere resultierende Beschleunigung errechnet wird.

Außerdem ist die Differenz zwischen den Maximal- und Minimalwerten ein deutliches Indiz, dass eine Aktivität stattfindet. Alternativ könnte man auch die Varianz berechnen.

Etwas komplizierter wird es, wenn man Laufen und Radfahren auseinander halten möchte. Diese Aktivitäten weisen nur an Hand von Beschleunigungswerten kaum unterschiedliche Merkmale auf (siehe hellgrüne und dunkelgrüne Punkte im Diagramm oben). Hierzu benötigt man eine zusätzliche Information.

Drehraten

Auch die Drehraten weisen charakteristische Merkmale auf, wie in nachfolgender Abbildung zu sehen ist.

Drehraten um alle 3 Achsen (motionRotationRate) während verschiedener Aktivitäten

Drehraten um alle 3 Achsen (motionRotationRate) während verschiedener Aktivitäten

Gerade bei zyklischen Aktivitäten, wie z.B. Radfahren, hilft eine Drehrate enorm. Das iPhone war während der Fahrt in der Hosentasche verstaut, die Drehrate ist durch die Tretbewegung des Beins hervorgerufen. Bei periodischen Signalen kommt sofort ein berühmter Algorithmus in den Hinterkopf: Die Fourier-Analyse, welche Frequenzanteile aus Signalen berechnen kann. Soll dies effizient und in Echtzeit geschehen, so ist die Fast-Fourier-Transformation (kurz: FFT) der Standardalgorithmus.

Amplitudenspektrum

Das Ergebnis des FFT Algorithmus ist ein Amplitudenspektrum des Drehratensignals. Dieses sieht für die 4 aufgezeichneten Aktivitäten folgendermaßen aus:

Auch hier ist deutlich zu erkennen, dass zyklische Aktivitäten ein unterscheidbares Muster hervorrufen.

Aktivitätserkennung und Sicherheit

Beispielhafter Klassifikator für Aktivitätserkennung mit Hilfe einfacher Algorithmen und auf Grundlage von Beschleunigung und Drehrate

Beispielhafter Klassifikator für Aktivitätserkennung mit Hilfe einfacher Algorithmen und auf Grundlage von Beschleunigung und Drehrate

Allein mit Hilfe der Drehrate und Beschleunigung ist es relativ einfach möglich, grundlegende Aktivitäten zu unterscheiden. In wissenschaftlichen Veröffentlichungen wurde bestätigt, dass sogar eine Personenidentifizierung anhand der Beschleunigungs- und Drehratensignale vorgenommen werden kann (siehe: Gait-ID on the Move: Pace Independent Human Identification Using Cell Phone Accelerometer Dynamics).

Der hier aufgezeichnete und betrachtete Zeitraum war nur 8 Sekunden. Mit den Ergebnissen aus jeweils einer Periode (z.B. 0.5s) kann eine Wahrscheinlichkeit berechnet werden, welche Aktivität gerade vorliegt. Z.B. könnte aus der Analyse der Signale berechnet werden, dass gerade Fahrrad gefahren wird.

Kommt der Algorithmus zu dem Ergebnis „radfahren“, so wird die Wahrscheinlichkeit, dass gerade wirklich Rad gefahren wird, erhöht. So kann über das Bayes‘-Theorem mit vorhandener Wahrscheinlichkeit und neuer Erkenntnis eine „confidence“ berechnet und ausgegeben werden. Zusätzlich können Zustandsübergänge als Markoff Ketten mit Wahrscheinlichkeiten bestimmt werden. Ein Übergang von joggen zu laufen ist wahrscheinlicher, als ein Übergang von joggen zu radfahren.

Markoff Kette mit Übergangswahrscheinlichkeiten

Markoff Kette mit Übergangswahrscheinlichkeiten

Hidden Markov Model – schätzt die Aktivität

Vom Hidden Markov Modell geschätzter Zustand mit Uncertainty

Vom Hidden Markov Modell geschätzter Zustand mit Uncertainty

Zur Not hat Apple ja immer noch „unknown“ als Status…

Kontakt

Sie benötigen auch einen Algorithmus wie diesen?

Wir haben uns auf prototypische Algorithmen spezialisiert. Wenn Sie für Ihr Projekt einen speziell zugeschnittenen Algorithmus benötigen, können wir gern unterstützen.
Kontakt