en
de

Fast & fully connected – Teil 2

Industrie 4.0, IoT und Prozessoptimierung sind Begriffe, die mit grossen Versprechen in den Medien umhergeistern. Die Anwendungsfälle werden meist auf hoher Flughöhe abgehandelt sowie selten wirklich konkret und anschaulich illustriert. Wir haben uns vorgenommen, dies zu ändern.

Was bisher geschah…

Zur Veranschaulichung von Prozessoptimierung basierend auf der Vernetzung von Anlangen und Produkten wollen wir den Steuerungsprozess eines Slot-Cars optimieren. Die Ziele dabei sind Fehlervermeidung, Effizienzmaximierung und Unabhängigkeit von Fachexperten. Wie im ersten Teil beschrieben, haben wir Slot-Cars mit Sensorik ausgestattet, welche sowohl Beschleunigung wie auch Magnetfeld- und Rotationsmessungen in drei Dimensionen liefern. Diese werden via Bluetooth in Echtzeit an die Akka-basierte Applikation geschickt. Die Aufgabe besteht darin, aus den Sensordaten eine möglichst effiziente Steuerung zu erlernen. Diese soll einen Autopiloten wie bei einem «Autonomous Car» ermöglichen: Auf einer beliebigen Strecke innerhalb weniger Minuten gute Rundenzeiten zu erzielen, ohne aus der Bahn zu fliegen.

Erlernen einer effizienten Steuerung basierend auf den Sensordaten

Die Herausforderung besteht darin, aus den laufend eintreffenden Sensordaten des Slot-Cars eine möglichst optimale Steuerung zu erlernen, welche auf einem noch nicht bekannten Streckenprofil erfolgreich ist. Die Steuerung ist naturgemäss von der vor dem Slot-Car liegenden Streckencharakteristik abhängig. Wir haben diese Aufgabenstellung in drei Schritte unterteilt:

  1. Rekonstruktion der Streckenführung
  2. Kontinuierliche Lokalisierung des Slot-Cars auf der Strecke
  3. Optimierung der Steuerungslogik
Slot Car Picture4

Abbildung 3

 1. Rekonstruktion der Streckenführung

Erste Analysen der Sensordaten zeigten schnell, dass die Rotationsmessungen mit Abstand am zuverlässigsten und aussagekräftigsten sind. Das Signal-Rausch-Verhältnis ist um Faktoren besser als bei den Beschleunigungs- und Magnetfeldmessungen und der direkte Zusammenhang der Rotation mit dem Streckensegmenttyp (Kurve/Gerade) vereinfacht die Analyse. Die folgenden Analysen fokussieren daher ausschliesslich auf den Rotationssensor um die Z-Achse.

Um eine Datenbasis für die Streckenrekonstruktion zu erhalten, lassen wir den Slot-Car mit konstanter Geschwindigkeit (korrekter: konstanter Spannung) seine Runden drehen. Nach einigen Runden zeigen sich in der Zeitreihe des Rotationssensors wiederkehrende Muster (s. Abbildung 4 links). Mittels der Autokorrelation lassen sich zuverlässig die einzelnen Runden in der Zeitreihe identifizieren. Um eine möglichst stabile Repräsentation der Strecke zu erhalten, werden nun die Zeitreihen der gefahrenen Runden gemittelt und das resultierende Rotationsprofil der Strecke in Kurven und Geraden unterteilt (s. Abbildung 4 Mitte). Unter der Annahme, dass sich die Kurvenwinkel über die gesamte Strecke auf 360 Grad summieren, lassen sich die einzelnen Kurvensegmente im Rotationsprofil in Kurvenwinkel umrechnen. Durch ein Runden auf die verfügbaren Standardsegmente der Slot-Car-Bahn, lässt sich ein korrektes Streckenprofil rekonstruieren.

Slot Car Picture5

Abbildung 4: Rekonstruktion der Strecke.

Der letzte Schritt der Streckenrekonstruktion basiert auf gewissen Annahmen (Winkelsumme ist 360, Standard-Kurvensegmente, etc.), ist jedoch nicht systemkritisch. Die im folgenden beschriebene Lokalisierung und Steuerungslogik basiert nur auf dem Rotationsprofil und die exakte Streckenrekonstruktion dient nur der Visualisierung der Geschehnisse.

2. Kontinuierliche Lokalisierung des Slot-Cars auf der Strecke

Im nächsten Schritt versuchen wir den Slot-Car auf dem berechneten Rotationsprofil der Stecke zu lokalisieren. Hierzu verwenden wir ein einfaches Modell, welches sich die Wahrscheinlichkeit des Slot-Cars für jeden Punkt auf dem Rotationsprofil merkt. Ein Update dieser Wahrscheinlichkeiten erfolgt nach den folgenden drei Schritten:

  1. Die Wahrscheinlichkeitsverteilung wird abhängig von der Slot-Car-Geschwindigkeit (korrekter: der gesendeten Spannung) in Fahrtrichtung verschoben.
  2. Um der Unsicherheit über die exakte Fahrtgeschwindigkeit Rechnung zu tragen, wird die Wahrscheinlichkeitsverteilung mittels einem «Gauss’schen Blur» geglättet.
  3. Die Messungen des Rotationssensors der letzten Sekunde werden mit dem Rotationsprofil der Strecke abgeglichen, um Evidenz über den derzeitigen Standort des Slot-Cars auf der Stecke zu erhalten. Dies wird anschliessend mit der Standortswahrscheinlichkeitsverteilung verrechnet.

Die Lokalisierung ist im Video illustriert. Oben sind jeweils die Messungen des Rotationssensors der letzten Sekunde dargestellt. Die Dicke der blauen Kreise auf der Strecke unten indiziert die Wahrscheinlichkeit des Slot-Cars an der jeweiligen Stelle. Der rote Kreis kennzeichnet die wahrscheinlichste Position. Wie ersichtlich ist, kann der Slot-Car nach ein bis zwei Kurven verlässlich lokalisiert werden.

Slot-Car Data Analytics

Abbildung 5

3. Optimierung der Steuerungslogik

In diesem letzten Schritt wird der «Pilot» durch eine «künstliche Intelligenz» zur optimalen Regelung der Spannung für den Slot-Car ersetzt. Wir verwenden hierzu ein neuronales Netzwerk und einen genetischen Algorithmus zur Parameterbestimmung. Die Eingabewerte ins neuronale Netzwerk sind die Streckencharakteristiken um die aktuelle Position des Slot-Cars, sprich, eine Handvoll Werte des Rotationsprofils nach, an und vor der aktuellen Position. Der Ausgabewert des neuronalen Netzwerks ist die Spannung, die an der Slot-Car-Bahn angelegt werden soll.

Slot Car Picture7

Um geeignete Gewichte für das neuronale Netzwerk zu finden, testet der genetische Algorithmus unterschiedliche Genome (Konfigurationen der Gewichte) und misst deren Güte anhand der erzielten Rundenzeit. Anhand von Selektion, Rekombination und Mutation sucht der Algorithmus nach Genomen, welche die Strecke möglichst effizient abfahren.

Ein Vorteil dieses Ansatzes ist, dass die gelernte, effiziente Steuerungslogik generalisierbar und streckenunabhängig ist. Dies bedeutet, dass auf einer neuen Strecke nur noch die genaue Streckenführung erlernt werden muss; eine effiziente Steuerung steht bereits in den Startlöchern.

Applikation zur Steuerung des Slot-Cars

Der letzte Schritt ist die Erstellung der eigentlichen Applikation, welche sowohl die Sensordaten verarbeitet, die Strecke und die Steuerung erlernt, als auch die Spannung des Slot-Cars regelt. Es müssen nebeneinander asynchrone Events abgearbeitet, Batch-Verarbeitungen ausgeführt und eine kontinuierliche Steuerung sichergestellt werden. Das heisst, der eigentliche Autopilot darf nicht temporär durch andere Aufgaben blockiert werden und muss immer angemessene Spannungswerte an die Slot-Car-Bahn senden.

Das Aktorenmodell von Akka erlaubt uns eine Architektur zu entwerfen, welche diese Anforderungen erfüllt. Einzelne Aktoren können die individuellen Aufgaben asynchron abarbeiten, ohne sich gegenseitig zu blockieren, und kommunizieren mittels Nachrichten untereinander. Die Hauptaktoren und deren Aufgaben in unserer Applikation sind:

  • SensorDataEnricher: Die Sensordaten des Slot-Cars werden initial an den SensorDataEnricher gesendet. Dieser führt einige Datenbereinigungsschritte aus und sendet die Sensorwerte weiter an den TrackBuilder, den Localizer und den AutoPilot.
  • TrackBuilder: Der TrackBuilder sammelt die Sensordaten für einige Sekunden und startet anschliessend die Rekonstruktion der Strecke. Sobald diese abgeschlossen ist, wird die Streckeninformation an den Localizer und den AutoPilot gesendet.
  • Localizer: Sobald die Streckeninformation vom TrackBuilder eingetroffen ist, startet der Localizer die Lokalisierung des Slot-Cars auf der Strecke. Dies wird alle 20ms ausgeführt und die Position des Slot Cars wird an den AutoPilot gesendet.
  • AutoPilot: Der AutoPilot sendet kontinuierlich Spannungswerte an die Slot-Car-Bahn. Initial wird ein konstanter Wert verwendet, um geeignete Daten für die Streckenrekonstruktion zu erzeugen. Sobald die Streckeninformation vom TrackBuilder und die Lokalisierung vom Localizer eingetroffen sind, wird die Steuerung über das neuronale Netz aktiviert. Der genetische Algorithmus im AutoPilot kann nun unterschiedliche Genome für die Steuerung einsetzen und eine optimale Steuerung erlernen.

Für die statistischen Verarbeitungen in der Streckenrekonstruktion und der Lokalisierung verwenden wir R. Die beiden Aktoren TrackBuilder und Localizer der Akka-Applikation senden ihre Anfragen direkt an eine RServe-Instanz. Diese führt die Berechnungen – im Falle der Lokalisierung alle 20ms – durch und sendet die Resultate zurück an die Aktoren.

Prozess optimiert

Wir haben uns vorgenommen, den Steuerungsprozess basierend auf der Vernetzung von Slot-Cars zu optimieren. Die Ziele waren (1) Fehlervermeidung, (2) Effizienzmaximierung und (3) Unabhängigkeit von Fachexperten. Was haben wir erreicht? Wenn das Genom für das neuronale Netzwerk des Autopiloten fixiert wird, können nahezu konstante Rundenzeiten ohne Fehler erzeugt werden. Der Autopilot schlägt damit einen durchschnittlichen Slot-Car-Fahrer zuverlässig. Zusätzlich ist er unabhängig von Fachexperten und erbringt die konstant qualitativ hochwertige Leistung über einen langen Zeithorizont.

Fazit

Uns hat das Projekt viel Freude bereitet. Neben dem Spassfaktor sehen wir jedoch bereits im kleinen Slot-Car-Umfeld konkret, wie alle vier Ebenen einer Data-Analytics-Lösung adressiert werden und zusammenspielen müssen, damit das Rennen gewonnen wird.

Kommentare (0)

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.

Erhalten Sie regelmäßige Updates zu neuen Blogartikeln

Jetzt anmelden

Oder möchten Sie eine Projektanfrage mit uns besprechen? Kontakt aufnehmen »