IMUs: mehr Ruhezeiten für den Host durch integriertes maschinelles Lernen

Von Steve Leibson

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey

Trägheitsmesseinheiten (IMUs) sind weit verbreitet und liefern in Mehrachssystemen kontinuierlich Positionsdaten von Beschleunigungsmessern, Gyroskopen und weiteren Sensoren. Aufgrund der durch die vielen Freiheitsgrade erzeugten Daten können die zusammengeführten Datenströme von diesen Komponenten die Systemprozessoren durch konstante Auslastung strapazieren, während sie die IMU-Rohdaten sichten, um nützliche Gesten- und Standortinformationen zu extrahieren. Entwickler benötigen daher eine Lösung, die dem Hauptprozessor das Sichten dieser Datenmengen abnimmt. Maschinelles Lernen könnte hierfür die Antwort sein.

Im Anschluss an einen kurzen Überblick über die Verwendung von IMUs stellt dieser Artikel die 6DOF LSM6DSO von STMicroelectronics vor. Anschließend zeigt der Artikel anhand dieser Komponente, wie die Integration von maschinellem Lernen und Entscheidungsbäumen in IMUs den Host-Anwendungsprozessor entlasten kann, indem er nicht länger für die Echtzeitverarbeitung von Positions- und Bewegungsdaten zuständig ist, und wie diese Funktionen in realen Anwendungen verwendet werden können.

Ein kurzer Überblick über IMUs

IMUs kombinieren mehrere Bewegungssensoren in einer Komponente und können hochpräzise Positionsdaten liefern. Sie kommen in verschiedenen Anwendungen aus den Bereichen Verbraucherelektronik (Mobiltelefone), Medizin (Bildgebung), Industrie (Robotik) und Militär (Head-Tracking) zum Einsatz. Sie reagieren auf die Bewegung des Sensors und integrieren einen oder mehrere der folgenden Bewegungssensortypen:

  • Gyroskope messen Änderungen der Winkelposition, die üblicherweise in Grad pro Sekunde angegeben werden. Die Integration von Winkelgeschwindigkeiten in Abhängigkeit von der Zeit ergibt einen gemessenen Bewegungswinkel, der zur Verfolgung von Ausrichtungsänderungen verwendet werden kann. Gyroskope verfolgen die Relativbewegung unabhängig von der Schwerkraft. Fehler aufgrund der Bias des Sensors oder der Integration führen daher zu einem Positionsfehler, der als „Drift“ bezeichnet wird. Dieser Fehler kann mithilfe von Software kompensiert werden.
  • Beschleunigungsmesser messen lineare Beschleunigungen, inklusive Beschleunigungskomponenten, die durch eine Bewegung der Komponente verursacht werden, und der Beschleunigung durch die Schwerkraft. Die Beschleunigung wird in „g“ gemessen, wobei Folgendes gilt: 1 g = die Erdanziehungskraft = 9,8 Meter/Sekunde2. Beschleunigungsmesser sind mit einer, zwei oder drei Achsen erhältlich, die ein Koordinatensystem definieren.
  • Magnetsensoren messen die Magnetfeldstärke, die üblicherweise in der Einheit Mikrotesla (µT) oder Gauss (100 µT = 1 Gauss) angegeben wird. Am häufigsten kommt in elektronischen Mobilgeräten ein 3-achsiges Hall-Effekt-Magnetometer zum Einsatz. Indem der Winkel des detektierten Erdmagnetfelds berechnet und dieser gemessene Winkel mit der von einem Beschleunigungsmesser gemessenen Schwerkraft verglichen wird, kann die Ausrichtung einer Komponente in Bezug auf den magnetischen Nordpol mit hoher Genauigkeit gemessen werden.

Die Bewegungsverfolgung mit IMUs verwendet Sensorfusion, um ausgehend von einem bekannten Ausgangspunkt und einer bekannten Ausrichtung eine einzelne, hochpräzise Schätzung der relativen Ausrichtung und Position der Komponente abzuleiten. Bei der Sensorfusion kommt üblicherweise Software zum Einsatz, um die Ausgänge der verschiedenen Bewegungssensoren der IMU mithilfe komplexer mathematischer Algorithmen, die entweder vom Hersteller der IMU oder dem Anwendungsentwickler entwickelt wurden, zusammenzuführen.

Positionsberechnungen mittels Sensorfusion ermöglichen die Messung der folgenden Größen:

  • Schwerkraft: Gemessen wird speziell die Erdanziehungskraft ohne die Beschleunigung durch die Bewegung, die die Komponente erfährt. Ein Beschleunigungsmesser misst den Gravitationsvektor, wenn sich die IMU im stationären Zustand befindet. Wenn die IMU in Bewegung ist, müssen zur Messung der Schwerkraft die Daten von einem Beschleunigungsmesser und einem Gyroskop zusammengeführt und die durch die Bewegung verursachte Beschleunigung subtrahiert werden.
  • Lineare Beschleunigung: Entspricht der mit dem Beschleunigungsmesser gemessenen Beschleunigung der Komponente, wobei jedoch der Gravitationsvektor mithilfe von Software subtrahiert wurde. Über die lineare Beschleunigung der IMU kann eine Bewegung im dreidimensionalen Raum gemessen werden.
  • Ausrichtung (Drehlage): Die in Grad gemessenen Eulerschen Winkel inklusive Gierwinkel (Azimutwinkel), Nickwinkel und Rollwinkel.
  • Rotationsvektor: Abgeleitet aus einer Kombination der Daten von Beschleunigungsmesser, Gyroskop und Magnetometer. Der Rotationsvektor repräsentiert einen Drehwinkel um eine bestimmte Achse.

Fehlerquellen bei IMUs

Gyroskope messen über Änderungen der Winkelgeschwindigkeit die Ausrichtung, wobei es im Lauf der Zeit jedoch zu einer Drift kommen kann, da ausschließlich Änderungen ohne einen festen Bezugsrahmen gemessen werden. Durch Daten eines Beschleunigungsmessers zusätzlich zu den Gyroskopdaten kann die Bias-Drift des Gyroskops mithilfe von Software minimiert werden, wodurch sich eine exaktere Standortschätzung ergibt. Beschleunigungsmesser messen Richtungsänderungen in Bezug auf die Gravitation und diese Daten können zur Ausrichtung eines Gyroskops verwendet werden.

Beschleunigungsmesser sind genauer bei statischen (im Gegensatz zu dynamischen) Berechnungen. Gyroskope eignen sich besser zur Bestimmung der Ausrichtung, wenn sich das System bereits bewegt. Da Beschleunigungsmesser schnell reagieren, ergeben Jitter und Rauschen einen additiven Fehler, wenn ausschließlich diese Daten verwendet werden. Zudem tendieren Beschleunigungsmesser zu einer Verfälschung der gemessenen Werte aufgrund von externen Kräften (z. B. Gravitationskräften), die sich im System ebenfalls als Rauschen akkumulieren. Durch eine Filterung dieser Daten wird die Genauigkeit verbessert.

Kombiniert man die kurzfristige Genauigkeit eines Gyroskops mit der langfristigen Genauigkeit eines Beschleunigungsmessers, erhält man präzisere Ausrichtungswerte, indem man auf die Stärken der einzelnen Sensoren vertraut, die Schwächen des jeweils anderen Sensors zu kompensieren oder zumindest zu verringern. Die zwei Sensortypen ergänzen sich gegenseitig, um Fehler zu reduzieren. Hierfür gibt es jedoch auch andere Möglichkeiten.

Fusionierte Filterung zur Reduzierung von Fehlern

Die IMU-Software verwendet Filter, um die Positionierungsfehler der IMU-Daten zu minimieren. Zur Fusionierung von Sensordaten stehen mehrere Filtermethoden zur Verfügung, die sich alle hinsichtlich ihres Komplexitätsgrads unterscheiden. Bei einer komplementären Filterung werden ein Hochpassfilter für das Gyroskop und ein Tiefpassfilter für den Beschleunigungsmesser kombiniert. Das hochfrequente Rauschen in den Beschleunigungsmesserdaten wird daher kurzfristig herausgefiltert und von den Gyroskopdaten geglättet.

Die Rechenleistung, die zur Auswertung, Filterung und Fusionierung der Sensordaten erforderlich ist, verbraucht Energie. Dies kann bei batteriebetriebenen Systemen insbesondere dann zu Problemen führen, wenn die IMU-Daten nicht als kontinuierlicher Datenstrom benötigt werden. Für viele eingebettete Anwendungen kann der Stromverbrauch erheblich verringert werden, wenn die IMU einen Interrupt erzeugen kann. Dieser Interrupt holt den Host-Prozessor aus dem Ruhemodus, damit er die Verarbeitung der Daten initiieren oder anderweitig aktiv werden kann. Um dies zu ermöglichen, haben einige IMU-Anbieter damit begonnen, Funktionen zur Verarbeitung und Entscheidungsfindung in ihre IMUs zu integrieren.

Überlassen Sie das Denken der IMU

Die 6DOF LSM6DSO von STMicroelectronics ist eine solche IMU. Sie besteht aus drei MEMS-Gyroskopen sowie drei MEMS-Beschleunigungsmessern und kann ohne Kontrolle oder Unterstützung durch einen Host-Prozessor nur mit der eigenen Rechenleistung Ausrichtungsänderungen und Gesten erkennen. Die IMU verbraucht bei höchster Leistung 0,55 Milliampere (mA).

In diesem Modus kann die LSM6DSO die eigene Drehlage und Bewegung im Raum kontinuierlich überwachen und bei einer vorgegebenen Bedingung einen Interrupt erzeugen, der den Host-Prozessor aus dem Ruhemodus holt, um bei der Verarbeitung der Sensordaten zu helfen. Die Verwendung einer IMU mit geringem Stromverbrauch, die immer in Betrieb bleiben kann, ist von Vorteil, da der Host-Prozessor nur dann aus dem Ruhemodus geholt werden muss, wenn er auch wirklich benötigt wird. Hierbei handelt es sich um eine bewährte Methode, um in batteriebetriebenen Systemen Energie zu sparen.

Zusätzlich zu den Gyroskopen und Beschleunigungsmessern bietet die LSM6DSO-IMU einen Block zur Signalaufbereitung und Filterung, eine Finite-State-Maschine (FSM), die 16 Programme ausführen kann (alle mit einer gemeinsamen, konfigurierbaren Ausgangsdatenrate), und einen Kern, der maschinelles Lernen beherrscht. Gemeinsam können diese Ressourcen Interrupts für folgende Ereignisse erzeugen:

  • Freier Fall
  • Wakeup
  • 6D-Orientierung
  • Erfassung von Einzel- und Doppel-Taps
  • Erkennung von Aktivität/Inaktivität
  • Detektieren von Ruhezustand und Bewegung

Der Block zur Signalaufbereitung wendet in seinen Registern gespeicherte Umrechnungsfaktoren an, um die Rohdaten von den Sensoren zu skalieren. Anschließend wandelt er die Rohdaten von den IMU-Sensoren in ein 16-Bit-Fließkomma-Halbpräzisionsformat um, das von der FSM verstanden wird. Die MEMS-Sensoren (die Beschleunigungsmesser und Gyroskope) der IMU sowie die zwei Analog-Digital-Wandler (ADCs) und die vier Filterblöcke sind in Abbildung 1 zu sehen. Die Filterblöcke werden verwendet, um die analogen MEMS-Sensorsignale in gefilterte digitale Datenströme umzuwandeln.

Schaltbild für die LSM6DSO-IMU von STMicroelectronics

Abbildung 1: Die LSM6DSO-IMU verwendet zwei ADCs, um analoge Signale von den internen MEMS-Beschleunigungsmessern und -Gyroskopen in digitale Datenströme umzuwandeln. Den ADCs nachgeschaltet sind vier digitale Filter, um die Signale zur Entscheidungsfindung für die interne FSM, den Kern und den Host-Prozessor aufzubereiten. (Bildquelle: STMicroelectronics)

Die programmierbare FSM besteht aus einem Konfigurationsblock und 16 Programmblöcken. Der Konfigurationsblock der FSM konfiguriert und steuert die gesamte FSM. Jeder der 16 Programmblöcke der FSM besteht aus einem Eingangsauswahlblock und einem Code-Block (Abbildung 2). Beide Blöcke werden von Werten gesteuert, die in Register in der IMU geschrieben sind.

Schaltbild der 16 Programmblöcke der FSM in der LSM6DSO-IMU von STMicroelectronics

Abbildung 2: Jeder der 16 Programmblöcke der FSM in der LSM6DSO-IMU besteht aus einem Eingangsauswahlblock und einem Code-Block. (Bildquelle: STMicroelectronics)

Der Eingangsauswahlblock leitet die ausgewählten Eingangsdaten von einem der internen Sensoren der IMU oder von einem externen Sensor, der mit dem Sensorknoten der IMU verbunden ist, zum Code-Block. Der Sensorknoten der IMU ist für vier zusätzliche externe Sensoren wie etwa Magnetometer geeignet, die über einen I2C-Port mit der IMU verbunden werden.

Der Code-Block der FSM enthält ein Programm für die Finite-State-Maschine. Der feste Teil des Datenbereichs im Programmblock umfasst sechs Byte, die für das Programm die Anzahl der Schwellenwerte sowie die Hysterese-, Masken- und Timer-Einstellungen definieren. Der variable Datenbereich des Programmblocks enthält die tatsächlichen Schwellenwert-, Hysterese-, Masken- und Timer-Einstellungen für die einzelnen Programme gemäß Definition durch die im festen Teil des Datenbereichs gespeicherten Werte.

Der feste Teil des Datenbereichs definiert außerdem die Größe des variablen Teils des Speicherbedarfs des Code-Blocks, einen programmierbaren Rücksetzvektor sowie einen Programmzähler. Da es sich hierbei ausschließlich um 8-Bit-Werte handelt, ist jedes FSM-Programm auf 256 Byte beschränkt.

Der Anweisungsbereich des Programmblocks enthält das eigentliche FSM-Programm. Die Programmanweisungen enthalten Opcodes zum Vergleichen der Sensoreingänge mit den Schwellenwerten, zur Überprüfung auf Nulldurchgänge und zur Überprüfung von Timer-Werten für Timeout-Vergleiche. Die Opcodes legen die Bedingungen fest, die für den Wechsel vom aktuellen FSM-Zustand in den nächsten erfüllt sein müssen. Zusätzlich gibt es Befehls-Opcodes. Sie dienen zur Auswahl von im variablen Bereich des Programms gespeicherten Schwellenwerten und Masken, zur Einstellung des Multiplexers des IMU-Sensorknotens für eine Verbindung zu einem der vier möglichen externen Sensoren und zur Aktivierung eines Interrupts.

Jedes FSM-Programm kann einen Interrupt erzeugen und den Inhalt eines entsprechenden Registerwerts basierend auf dem ausgewählten Eingangssignal ändern. Diese Registerwerte werden verwendet, um Daten von der IMU an den Host-Prozessor weiterzugeben.

Es ist hilfreich, sich die FSM als einen Mikroprozessor ohne die arithmetische Logikeinheit vorzustellen. Die FSM kann Auswahlen vornehmen, Vergleiche durchführen und basierend auf diesen Vergleichen Entscheidungen zu ihrem nächsten Zustand treffen. Sie berechnet keine anderen Werte als die booleschen Ergebnisse aus den Vergleichen.

Bei der FSM handelt es sich nicht um einen Mikroprozessor. Sie kann Vergleiche durchführen und basierend auf diesen Vergleichen einfache Änderungen am Programmfluss vornehmen. Da sie eine einfache Maschine ist, wird sie direkt über die FSM-Opcodes programmiert. Für die FSM gibt es keinen Hochsprachen-Compiler. In der Regel sind die Programme jedoch so einfach strukturiert, dass kein Compiler benötigt wird.

Verwenden der FSM

Die FSM der LSM6DO-IMU ist so programmierbar, dass sie Interrupt-Signale erzeugt, die durch vordefinierte Bewegungsmuster aktiviert werden. Die FSM kann ganze 16 voneinander unabhängige Programme gleichzeitig ausführen, um Bewegungen zu detektieren. Jedes FSM-Programm besteht aus einer Abfolge von If-Then-Else-Schritten und verwendet die Sensordaten von den Beschleunigungsmessern und Gyroskopen der LSM6DSO als Eingänge. Falls eines der FSM-Programme eine Übereinstimmung mit seinem vorprogrammierten Muster erkennt, kann die FSM einen Interrupt zum Host-Prozessor erzeugen.

Jedes der 16 möglichen FSM-Programme enthält drei Speicherbereiche für feste Daten, variable Daten und Anweisungen. Abbildung 3 zeigt ein Blockdiagramm für ein einzelnes FSM-Programm.

Schaltbild der FSM in der LSM6DSO-IMU von STMicroelectronics

Abbildung 3: Die FSM in der LSM6DSO-IMU von STMicroelectronics umfasst 16 Code-Blöcke, von denen jeder drei Speicherbereiche für feste Daten, variable Daten und Anweisungen enthält. (Bildquelle: STMicroelectronics)

Die Struktur eines einzelnen Programms in einem Code-Block besteht aus den folgenden drei Bereichen in einem Speicherblock:

  • Fester Datenbereich: Dieser Bereich ist für alle FSM-Programme gleich groß.
  • Variabler Datenbereich: Die Größe dieses Bereichs kann variieren.
  • Anweisungsbereich: Dieser Bereich enthält Bedingungen und Befehle.

Die Programmierung jedes einzelnen FSM-Code-Blocks umfasst das Laden der drei Speicherbereiche mit Programmierwerten, die das Verhalten der FSM festlegen. Die zum Download verfügbare Unico-Entwicklungssoftware für die Evaluierung und Entwicklungsumgebung von STMicroelectronics beinhaltet ein Tool für die FSM-Programmierung. Die Unico-Entwicklungswerkzeuge beinhalten außerdem verschiedene FSM-Beispielprogramme, um sich mit der Programmierung der FSM vertraut zu machen. Diese Beispielprogramme zeigen unter anderem folgende IMU-basierten Interrupt-Szenarien:

  • Einen einfachen Schrittzähler
  • System im freien Fall
  • Eine einfache Bewegungserkennung
  • Aufnehmen des Systems
  • Schütteln des Systems
  • Stoppen der Bewegung des Systems (Ruhezustand)
  • Neigung des Handgelenks

Die FSM-Beispielprogramme demonstrieren die Verwendung verschiedener FSM-Funktionen. Jedes dieser Beispielprogramme kann auf einer IMU-Demonstrationsplattform wie der Evaluierungskarte STEVAL-MKI109V3 eMotion STM32 installiert werden. Diese Karte verfügt über eine 28-polige Buchse, mit der die Adapterkarte STEVAL-MKI197V1 für die LSM6DSO-IMU verbunden werden kann. Zur Programmierung der STEVAL-MKI 109V3 mit einem der Beispielprogramme sind nur wenige Klicks in der Unico Entwicklungsumgebung erforderlich.

Die LSM6DSO bietet jedoch mehr, als auf den ersten Blick ersichtlich ist.

Der Kern für maschinelles Lernen

Die LSM6DSO-IMU verfügt außerdem über eine anspruchsvollere und programmierbare Engine zum Mustervergleich, die als Kern für maschinelles Lernen bezeichnet wird. Diese Engine kann mithilfe der Datenströme von den verschiedenen internen Sensoren der IMU und sämtlichen angeschlossenen externen Sensoren Bewegungskategorien identifizieren. Beispiele für solche Kategorien sind Ruhezustand, Gehen, Joggen, Fahrradfahren und Autofahren. Die Kategorisierung erfolgt über Entscheidungsbäume im Kern für maschinelles Lernen.

Der Kern für maschinelles Lernen umfasst drei Blöcke: den Sensordatenblock, den Berechnungsblock und den Entscheidungsbaum (Abbildung 4). Der Kern für maschinelles Lernen aggregiert die Datenströme von den internen Beschleunigungsmessern und Gyroskopen der IMU sowie von jeglichen externen Sensoren, die über die I2C-Schnittstelle mit der IMU verbunden sind. Der Berechnungsblock filtert die Sensordaten mithilfe von vordefinierten Filterparametern und berechnet verschiedene Statistiken (z. B. Mittelwert, Varianz, Spitze-zu-Spitze-Amplitude, Minimum, Maximum und Nulldurchgänge) für die Sensordaten. Der Entscheidungsbaum vergleicht die berechneten Statistiken zu den Sensordaten mit Schwellenwerten, um die Eingangsdaten zu klassifizieren.

Schaltbild des Kerns für maschinelles Lernen in der LSM6DSO-IMU von STMicroelectronics

Abbildung 4: Der Kern für maschinelles Lernen in der LSM6DSO-IMU von STMicroelectronics besteht aus den folgenden drei Blöcken: einem Sensordatenblock, der die Datenströme von den internen und externen Sensoren aggregiert, einem Berechnungsblock, der die Sensordaten filtern und Statistiken zu diesen Sensordaten berechnet, und einem Entscheidungsbaum, der Ereignisse basierend auf den berechneten Statistiken klassifiziert. (Bildquelle: STMicroelectronics)

Wie für die FSM der LSM6DSO auch wird zur Programmierung des Kerns für maschinelles Lernen der IMU ein entsprechendes Tool in der Unico Entwicklungsumgebung verwendet.

Die Finite-State-Maschine und der Kern für maschinelles Lernen können auch in Verbindung mit einem Host-Prozessor verwendet werden, um komplexere Algorithmen zur Positionsverfolgung zu implementieren. Das Softwarepaket X-CUBE-MEMS1 von STMicroelectronics, das für das Entwicklungssystem STM32Cube des Unternehmens heruntergeladen werden kann, umfasst die folgenden Beispielroutinen:

  • Erkennung von Aktivitäten: Liefert Informationen zur Art der vom Benutzer ausgeführten Aktivität, inklusive Stillhalten, Gehen, schnelles Gehen, Joggen, Fahrradfahren oder Autofahren. Dieser Algorithmus wird üblicherweise in einem Mobiltelefon oder in Wearables verwendet.
  • Erkennung der Bewegungsdauer: In Kombination mit einem Schrittzähler kann die Erkennung der Bewegungsdauer verwendet werden, um festzustellen, wie viele Sekunden ein Benutzer aktiv ist. Dieser Algorithmus wird üblicherweise in Wearables im Fitness- oder Gesundheitsbereich verwendet.
  • Erkennung der Vibrationsstärke oder Bewegungsintensität: Liefert Informationen zur Intensität der Bewegung eines Benutzers und kann Bewegungsintensitäten in einem Bereich von 0 (Stillstand) bis 10 (Sprinten) unterscheiden. Dieser Algorithmus wird üblicherweise in einem Mobiltelefon oder in Wearables im Fitnessbereich verwendet.
  • Erkennung der Tragehaltung: Liefert Informationen zur Tragehaltung und kann zwischen Folgendem unterscheiden: auf einem Schreibtisch, in einer Hand, in einer Hemdtasche, in einer Hosentasche, in einer Jackentasche und in einem schwingenden Arm. Dieser Algorithmus wird üblicherweise in einem Mobiltelefon oder in anderen Mobilgeräten zur Erkennung von Aktivitäten verwendet.

Fazit

Bei batteriebetriebenen Designs kann es aufgrund des relativ hohen Stromverbrauchs des Host-Prozessors schwierig sein, eine feste Position beizubehalten und anhand von IMU-Daten Bewegungen und Gesten zu erkennen, da der Host-Prozessor hierfür immer in Betrieb sein müsste. Eine neue Generation von IMUs mit niedrigem Stromverbrauch und ausreichend integrierter Rechenleistung für maschinelles Lernen kann dieses Problem jedoch lösen, indem der Host-Prozessor in einem Modus mit geringer Leistungsaufnahme verweilen kann, bis er benötigt wird.

 
DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Image of Steve Leibson

Steve Leibson

Steve Leibson war Systemingenieur für HP und Cadnetix, der Chefredakteur für EDN und Microprocessor Report, ein Tech-Blogger für Xilinx und Cadence (u.a.) und er diente als Technologieexperte für zwei Folgen von „The Next Wave with Leonard Nimoy“. Er hilft Entwicklern seit 33 Jahren, bessere, schnellere und zuverlässigere Systeme zu entwickeln.

Über den Verlag

Nordamerikanische Fachredakteure von DigiKey