BWP-SS19-01/Grob Design: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen
Zeile 57: Zeile 57:
   
 
==== Energy Management System ====
 
==== Energy Management System ====
  +
  +
  +
''Allgemein:''
   
 
Das Energy Management System verwendet den Coulomb-Counter zur Messung der Energie und beinhaltet Mechanismen, die den Energie-Eintrag und den Energie-Verbrauch überwachen.
 
Das Energy Management System verwendet den Coulomb-Counter zur Messung der Energie und beinhaltet Mechanismen, die den Energie-Eintrag und den Energie-Verbrauch überwachen.
Zeile 62: Zeile 65:
 
Dabei soll sowohl der Akku-Stand überwacht werden als auch der Energie-Verbrauch der einzelnen Roboter-Bewegungen und Einzel-Berechnungen der jeweils anderen Module aufgezeichnet werden.
 
Dabei soll sowohl der Akku-Stand überwacht werden als auch der Energie-Verbrauch der einzelnen Roboter-Bewegungen und Einzel-Berechnungen der jeweils anderen Module aufgezeichnet werden.
   
  +
Dieses Aufzeichnen der Berechnungen und Bewegungen soll im späteren Verlauf dazu verwendet werden können, um zu lernen wie viel Energie ein einzelner Ausführungs-Schritt benötigt,
 
  +
''Funktionsweise:''
  +
  +
Das Energy Management System wird als Energiemessungs-Simulation realisiert. Hierfür werden 4 Pins verwendet. Von diesen 4 Pins werden zwei mit jeweils einer GPIO-Callback Funktion verbunden, die jeweils ein Register hochzählt. Der Trigger für das Hochzählen ist das Auftreten einer High Edge an dem jeweiligen Pin.
  +
Die anderen Zwei Pins werden von an einen gemeinsamen Timer getoggelt. Dabei wird innerhalb des Timers, abhängig von dem aktuellen State des Systems, entschieden, wie groß die Periodendauer des Signals ist.
  +
  +
Die Kommunikation zwischen Haupt-Steuerung und Energy Management System läuft über einen globalen Pointer auf eine Daten Struct, in der die momentane Aufgabe für das Energy Management System steht.
  +
  +
  +
''Vorausberechnung als mögliche Erweiterung des Projektes:''
  +
 
Dieses Aufzeichnen der Berechnungen und Bewegungen soll im späteren Verlauf (Nicht Teil des Projektes) dazu verwendet werden können, um zu lernen wie viel Energie ein einzelner Ausführungs-Schritt benötigt,
 
womit dann der Energieverbrauch von Ausführungs-Ketten im Voraus berechnet werden kann.
 
womit dann der Energieverbrauch von Ausführungs-Ketten im Voraus berechnet werden kann.
   

Version vom 22. August 2019, 14:19 Uhr

Hardware

Im Folgenden wird der Aufbau der Hardware als Block-Definition Diagramm dargestellt.

SysML Diagramm
Sysml_diagramm

Software

Allgemein

Als Software wird Zephyr OS mit folgenden Tasks verwendet. Sequenz-Diagramme:

Sequenz-Diagramm Main Control
Sequenzdiagramm Main Control
Sequenz-Diagramm Coulomb Counter
Sequenzdiagramm Coulomb Counter
Sequenz-Diagramm IMU
Sequenzdiagramm IMU
Sequenz-Diagramm Laser-/Ultraschallsensoren
Sequenzdiagramm Laser/Ultraschall
Sequenz-Diagramm Engine
Sequenzdiagramm Engine

Einzelmodule

Im folgenden werden die Einzelmodule grob beschrieben.

Energy Management System

Allgemein:

Das Energy Management System verwendet den Coulomb-Counter zur Messung der Energie und beinhaltet Mechanismen, die den Energie-Eintrag und den Energie-Verbrauch überwachen.

Dabei soll sowohl der Akku-Stand überwacht werden als auch der Energie-Verbrauch der einzelnen Roboter-Bewegungen und Einzel-Berechnungen der jeweils anderen Module aufgezeichnet werden.


Funktionsweise:

Das Energy Management System wird als Energiemessungs-Simulation realisiert. Hierfür werden 4 Pins verwendet. Von diesen 4 Pins werden zwei mit jeweils einer GPIO-Callback Funktion verbunden, die jeweils ein Register hochzählt. Der Trigger für das Hochzählen ist das Auftreten einer High Edge an dem jeweiligen Pin. Die anderen Zwei Pins werden von an einen gemeinsamen Timer getoggelt. Dabei wird innerhalb des Timers, abhängig von dem aktuellen State des Systems, entschieden, wie groß die Periodendauer des Signals ist.

Die Kommunikation zwischen Haupt-Steuerung und Energy Management System läuft über einen globalen Pointer auf eine Daten Struct, in der die momentane Aufgabe für das Energy Management System steht.


Vorausberechnung als mögliche Erweiterung des Projektes:

Dieses Aufzeichnen der Berechnungen und Bewegungen soll im späteren Verlauf (Nicht Teil des Projektes) dazu verwendet werden können, um zu lernen wie viel Energie ein einzelner Ausführungs-Schritt benötigt, womit dann der Energieverbrauch von Ausführungs-Ketten im Voraus berechnet werden kann.

Diese Vorausberechnung soll wie folgt funktionieren:

  • Jede Bewegung und jede Berechnung wird einem State einer State-Maschine zugeordnet
  • Jedem State wird ein Mittelwert und eine Zähler-Variable gegeben
  • Bei der Ausführung eines States wird der Mittelwert mit folgender Formal aktualisiert und die Zähler-Variable wird hochgezählt
 MW_neu_ = (MW_alt_ * N + X) / (N+1)
  • Nun kann die Motorsteuerung eine Ausführungs-Kette bei dem Energie Management System anfragen und erhält die zusammenaddierten Mittelwerte zurückgeliefert
  • Zusammen mit dem Akku-Stand kann daraus errechnet werden, ob der Roboter noch genug Energie führt eine bestimmte Aufgabe hat.

Odometrie

BLE und Logging