Benutzer-Werkzeuge

Webseiten-Werkzeuge


adp_laufrobotik:adp_2012_ws_group2:laufmodelle

Dies ist eine alte Version des Dokuments!


Laufmodelle

test

Gemeinsame Subsysteme

In diesem Kapitel werden die gemeinsamen Subsysteme der drei Modelle für einbeiniges Laufen, zweibeiniges Gehen und einbeiniges serielles Laufen dargestellt und erklärt. Gemeinsame Subsysteme beschreiben alle Teile der Blockschaltbilder, die in gleicher oder ähnlicher Form in allen Modellen vorkommen. Diese werden genutzt, um bei der Notwendigkeit der Implementierung eines neuen Modell auf bereits vorhandene Teile anderer Modelle zurückzugreifen und somit Zeit einzusparen.

Die hier benutzten gemeinsamen Subsysteme teilen sich auf in:

  • Switch
  • Rampe
  • Systemenergien
  • Abbruchbedingung


Switch

Aus Übersichtsgründen und um Redundanzen zu vermeiden, wurde entschlossen alle drei Modelle in ein gemeinsamen Blockschaltbild zu integrieren. Aufgrund der Realisierung der drei Modelle in einem einzigen Blockschaltbild tritt das Problem auf, dass bei der Simulation eines Bereichs simultan auch die anderen beiden Bereiche simuliert, bzw. berechnet werden, was den Rechenaufwand der Simulation deutlich erhöht. Außerdem werden bei den drei Modellen zum Teil erheblich unterschiedliche Start-Parameter verwendet, die bei der gleichzeitigen Berechnung der anderen Modelle dazu führen könnten, dass diese nur noch mit erheblichem Rechenaufwand, bzw. gar nicht mehr durchführbar wären. Es ergibt sich somit kein Vorteil, alle drei Modelle gleichzeitig zu simulieren. Aus diesem Grund wurde ein Switch implementiert, der dafür sorgt, dass jeweils nur eine einzige Simulation/Berechnung gestartet wird.

Das Subsystem „Switch“ überprüft also anhand eines Paramateres „modus“, welches Modell betrachtet werden soll und aktiviert nur dieses in Simulink. Dazu wurde in jedes Modell ein „Enable Port“ eingefügt, der zu Beginn auf der Option „Held“ steht. Somit ist jedes System zunächst deaktiviert. Der „Switch“ (siehe Abbildung 1) erhält als Eingangssignal den Parameter „modus“ und beliebig viele „Data Ports“. Je nach Wert des Parameters wird der zugehörige „Data Port“ verwendet und an den Ausgang weitergeleitet. So ergibt der „modus“ 1 den Vektor [0 1 0], der über den Demux an die Ausgänge 1-3 und somit an die „Enable Ports“ der Modelle weitergeleitet wird. Hierbei bedeutet 0 eine Deaktivierung und 1 eine Aktivierung. In dem Beispiel wird also das Modell „Gehen“ aktiviert und die beiden anderen Modelle bleiben deaktiviert.

Bild


Rampe

Um eine Erhöhung der Laufgeschwindigkeit während einer Simulation berechnen zu können, wurde ein zusätzlicher Startparameter „Rampe “ implementiert. Dieser Parameter „Rampe“ ist ein Vektor und gibt an, in welchem „Zeitraum“ die Geschwindigkeit in X-Richtung erhöht werden soll. Der „Zeitraum“ wird dabei durch den Anfangs- und Endschritt, zwischen denen die Erhöhung stattfinden soll, festgelegt. Die dritte Komponente des Vektors ist die Steigung. Diese gibt an, wie schnell die Geschwindigkeitszunahme oder –abnahme realisiert werden soll. Veranschaulicht am Modell bedeutet dies, dass der Läufer innerhalb einer bestimmten Anzahl an Schritten (Endschritt – Anfangsschritt) linear mit der vorgegebenen Steigung beschleunigt.
In dem Integrator (siehe Abbildung 1), der in dem Kapitel 2.2.1 genauer beschrieben ist, wird die berechnete Veränderung der Geschwindigkeit in X-Richtung zu der integrierten Geschwindigkeit aus der Beschleunigung hinzuaddiert. Da die Geschwindigkeit in diesem Subsystem als Vektor, bestehend aus Geschwindigkeit in X- und Y-Richtung, angegeben ist, muss diese zunächst über einen sogenannten Demux aufgeteilt werden, sodass eine reine Addition zu dem X-Anteil ermöglicht wird. Anschließend werden die beiden Anteile über einen Mux wieder in einem Geschwindigkeitsvektor zusammengeführt.

Bild

In dem in Abbildung 2 dargestellten System wird mit Hilfe der vorgegebenen Rampe (Eingang 1) der Geschwindigkeitszuwachs VXPlus berechnet. Das Subsystem wird aktiviert, wenn eine Null oder ein positiver Wert für den den Anfangsschritt eingetragen wird. Somit kann durch den Eintrag -1 die Berechnung der zusätzlichen Geschwindigkeit ausgeschaltet werden. Überprüft wird nun, ob sich die Rampe in dem Bereich befindet, in dem das System aktiv ist. Genauer gesagt wird überprüft, ob sich die Vorgaben für Anfangs- und Endschritt, in der die Geschwindigkeitserhöhung vollzogen werden soll, innerhalb des Bereichs der insgesamt gelaufenen Schritte (Eingang 2) befinden. Um dies zu kontrollieren, wird mit Bool'schen Operatoren gearbeitet. Die Berechnung von VXPlus wird also nur gestartet, wenn die Bedingung „Anfangsschritt ⇐ Gesamtzahl der Schritte“ erfüllt ist. Für das Ende der Berechnung muss die Bedinung „Endschritt ⇐ Gesamtzahl der Schritte“ gelten . Das Ergebnis beider Bedingungen wird mit einem logischen UND verknüpft und in das Subsystem geleitet, das heißt also, dass die Berechnung nur aktiviert wird, wenn beide Bedingungen erfüllt sind. In dem so aktivierten Subsystem wird nun eine Beschleunigung in X-Richtung berechnet, die über den nachfolgenden Integrator zu der Zusatzgeschwindigkeit VXPlus integriert wird.

Systemenergien

Die Anfangsenergie des Systems setzt sich aus der potentiellen und der kinetischen Energie der Punktmasse zusammen. Für die Energiebetrachtung wird von einem geschlossenem System ausgegangen, das heißt, dass keine Energie verloren geht. Somit kann die gesamte Anfangsenergie direkt aus den Startparametern berechnet werden.

Die allgemeine Formel der potentiellen Energie lautet:

Epot = m*g*h=m*g*x0(y).

Die Masse m, die Erdbeschleunigung g, sowie die Höhe h sind in den Anfangsbedingungen festgehalten, wobei die Höhe h durch den Y-Anteil des Vektors x0 beschrieben wird. Im Vektor x0 sind der X- und Y-Wert der Startposition der Punktmasse eingetragen.

Die Formel der kinetischen Energie lautet:

Ekin = ½ * m * v^2.

Die Anfangsgeschwindigkeit v0 ist ebenfalls als Vektor mit x- und y-Komponente in den Anfangsbedingungen vermerkt. Um die kinetische Energie zu berechnen muss die resultierende Anfangsgeschwindigkeit ermittelt werden. Dies geschieht wie folgt:

v = sqrt(v0(x)^2 + v0(y)^2)

Somit ergibt sich die folgende Formel für die kinetische Anfangsenergie:

Ekin = ½ * m * (sqrt(v0(x)^2 + v0(y)^2))^2, = ½ * m * (v0(x)^2 + v0(y)^2)

Die gesamte Anfangsenergie des Systems berechnet sich also wie folgt:

Esys = Epot + Ekin = m*g*x0(y) + 0.5*m*(v0(x)^2+v0(y)^2).

Folgende Eingänge gehen in das Modell ein:

  • x0: Vektor der Position des Körperschwerpunkts (Punktmasse) zu Beginn
  • v0: Vektor der Geschwindigkeit des Körperschwerpunkts (Punktmasse) zu Beginn
  • m: Masse des Läufers
  • g: Erdbeschleunigung (9,81m/s²)

Abbildung 1 zeigt das Simulink-Blockschaltbild mit den vier oben erläuterten Eingängen. Diese werden mittels eines Demux in den Funtionsblock f(u) geleitet. In diesem geschieht die Berechnung nach obiger Formel.

Bild


Abbruchbedingungen

Da Simulink ausschließlich Werte berechnen, jedoch nicht überprüfen kann, ob diese Ergebnisse im Rahmen des Modells sinnvoll sind, müssen manuell Abbruchbedingungen eingefügt werden, die die Simulation stoppen, sobald die Bedingungen für das Laufen, Gehen, etc. nicht mehr erfüllt sind. Die erste Bedingung ergibt sich aus einer einfachen logischen Überlegungen. Sobald die y-Komponente der Punktmasse zu Null wird, bedeutet dies, dass das Modell mit dem Körperschwerpunkt (Punktmasse) auf dem Boden aufgekommen, somit also umgefallen ist. Da ein Aufstehen mit diesem Modell nicht möglich ist, muss die Simulation an dieser Stelle beendet werden.

Bild

Diese Bedingung wird im unteren Teil der Abbildung 1 überprüft. Zur Kontrolle muss also die y-Komponente des zweiten Eingang (Xxy) betrachtet werden. Der angeschlossene Simulink-Block „HitCrossing“ erkennt, wann die Höhe der Punktmasse die Bodenhöhe erreicht. Die Bodenhöhe wird als Offset im Hit-Crossing-Block eingetragen. Die „Hit-Crossing-Direction“, also die Richtung, in der die Bodenhöhe erreicht wird, wird auf die Einstellung „falling“ gesetzt, da ein Erreichen des Boden mit einer positiven Anfangshöhe der Masse (z.B. 1m) ausschließlich von oben nach unten, also in fallender Richtung geschehen kann. Wird der Offset nun aus einer positiven Richtung überschritten, so wird ein Signal erzeugt, welches über den Stop-Block die Simulation beendet.

Da es bei optimal gewählten Parametern dazu kommen kann, dass das Modell über eine sehr lange Simulationszeit stabil läuft, wurde eine weitere Abbruchbedingung in das Modell eingepflegt. Diese wird mit Hilfe eines Schrittzählers im Modell realisiert.

In Abbildung 2 ist die vertikale Geschwindigkeit der Punktmasse dargestellt. Um zu ermitteln, wann ein Schritt gelaufen wurde, soll zum Zeitpunkt, bei dem die Punktmasse die maximale Flughöhe erreicht ein Signal ausgegeben werden. Die maximale Flughöhe ist erreicht, wenn die vertikale Geschwindigkeit von einem positiven auf einen negativen Wert wechselt. Der Läufer befindet sich zu diesem Zeitpunkt also im Wechsel zwischen der Aufwärts- und der Abwärtsbewegung. Wie bereits für die erste Bedingung benutzt, wird auch hier wiederum ein „HitCrossing“-Block verwendet, der bei einer fallenden Null-Durchquerung ein Signal auslöst. Dieses aktiviert als sogenannter „Trigger“ das Subsystem „Weiterzählen“ und erhöht den Wert des Eingangs um eins. Der jeweils aktuelle Wert wird mit Hilfe eines „Memory“-Blocks bis zur nächsten Aktivierung des „Weiterzählen“-Systems gespeichert. Der im „Memory“-Block gespeicherte Wert stellt die momentan gelaufene Zahl der Schritte dar und wird über den Ausgang „Schritte“ an die Benutzeroberfläche zurückgeführt. Der Schrittzähler ist in Abbildung 3 dargestellt.

Nun muss noch die Abbruchbedingung implementiert werden. Hierzu wird von den bereits gelaufenen Schritten die maximale Schrittzahl („step_a“), die als Abbruchbedingung in den Anfangsparametern vermerkt ist, subtrahiert. Das Signal dieser Differenz ist somit anfänglich negativ und steigt in seinem Wert an. Erreicht das Signal den Wert Null, so wird die Simulation wiederum mit Hilfe eines „Hit-Crossing“-Blocks abgebrochen. Die zweite Abbruchbedingung ist im oberen Teil von Abbildung 1 zu sehen.

Bild




Laufen

test

Gehen

test

Laufen (seriell)

adp_laufrobotik/adp_2012_ws_group2/laufmodelle.1360949066.txt.gz · Zuletzt geändert: 28.11.2022 00:10 (Externe Bearbeitung)


Warning: Undefined variable $orig_id in /is/htdocs/wp1019470_OPI92FFHXV/www/wikiLehre/lib/plugins/openas/action.php on line 232