Benutzer-Werkzeuge

Webseiten-Werkzeuge


adp_laufrobotik:adp_2012_ws_group2:laufmodelle

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
adp_laufrobotik:adp_2012_ws_group2:laufmodelle [15.02.2013 18:24] – [Gemeinsame Subsysteme] Julian Sinzadp_laufrobotik:adp_2012_ws_group2:laufmodelle [28.11.2022 00:11] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Laufmodelle ====== +====== Modellierung ====== 
-test +Die Modellierung der drei verschiedenen Bewegungsmodelle wurde mit Simulink realisiert. Grundlage bildete hierbei das Tutorium "Modellierung des Laufens"welches uns im Rahmen der Veranstaltung zur Verfügung gestellt wurde und die Diplomarbeit von Elmar Dittrich (2005). 
-<html><br></html> +Unterkapitel 1 zeigt die gemeinsam genutzten Subsysteme, die um Redundanzen zu vermeiden, ausgelagert wurden und somit nur einmal beschrieben werden. 
-<html><br></html> +Die darauffolgenden Unterkapitel beschreiben detailliert anhand von Bewegungsgleichungen und Blockschaltbildern die einzelnen Modelle. Es werdenaufbauend auf dem Modell //Laufen// nur die unterschiedlichen Modellierungen aufgezeigt und besprochen
-===== Gemeinsame Subsysteme ===== +Dieses Kapitel stellt die gemeinsamen ParameterVariablennamen, sowie Eingänge und Ausgänge der Modelle darEbenso werden alle relevanten Begriffe der einzelnen Systeme erklärt.
- +
-In diesem Kapitel werden die gemeinsamen Subsysteme der drei Modelle für einbeiniges Laufenzweibeiniges Gehen und einbeiniges serielles Laufen dargestellt und erklärtGemeinsame 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öhtAuß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 Vorteilalle 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ügtder 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 wirdHierbei bedeutet 0 eine Deaktivierung und 1 eine AktivierungIn 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.\\ 
 \\ \\
- +<imgcaption image1|Erweiterungen des Masse-Feder-Modells> 
-=== Systemenergien === +{{ :adp_laufrobotik:adp_2012_ws_group2:laufmodelle:fmlaeufer_erweiterung.png?nolink&600 |}} 
-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.\\ +</imgcaption>
- +
-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 Xund 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\\ +
 \\ \\
 +Die linke Erweiterung zeigt den Feder-Dämpfer-Aktuator-Komplex. In der Mitte ist das Modell //Laufen seriell// mit der seriellen Feder unterhalb des Komplexes abgebildet. Rechts ist in <imgref image1> das //Gehen// mit zwei Beinen in der Zwei-Kontakt-Phase zu sehen.
 +\\
 +\\
 +===== Begriffserklärung =====
 +Anhand Abb. 1 werden nun die wichtigsten Begriffe erklärt.
 +\\
 +\\
 +**[[biomechanik/dynamik/dyn05#koerperschwerpunkt|Körperschwerpunkt (KSP)]]**
 +\\
 +Zur Vereinfachung des Modells wird der Mensch, wie in Abb. 1 gezeigt, als reine Punktmasse im [[biomechanik/dynamik/dyn05#koerperschwerpunkt|Körperschwerpunkt]] modelliert. Bei dem Modell //Laufen// und //Laufen seriell// verbindet das Bein den masselosen Fuß mit dem [[biomechanik/dynamik/dyn05#koerperschwerpunkt|KSP]]. Im Gegensatz dazu werden bei dem Modell //Gehen// zwei Beine betrachtet. Das restliche System ist masselos.
 +\\
 +\\
 +**Landewinkel**
 +\\
 +Der Landewinkel ist der [[/biomechanik/kinematik/kin02#winkel|Winkel]], der durch den Boden und das Bein bei der Landung gebildet wird. Dieser ist fest eingestellt und beeinflusst maßgeblich die Bewegungsausführung. In der rechten Erweiterung der Abb. 1 wird dieser Winkel durch die vordere Feder und den Boden gebildet. Während eines Schrittes vergrößert sich der Winkel alpha so lange, bis die Feder vom Boden abhebt und ein neuer Schritt beginnt.
 +\\
 +\\
 +**Parallele Feder**
 +\\
 +Im Hill-Modell stellt die parallele Feder (//PEE//) das Bindegewebe der Muskeln dar. Dieses Bindegewebe reduziert die Leistung des Muskels.
 +\\
 +\\
 +**Dämpfer**
 +\\
 +Der Dämpfer entzieht dem System [[biomechanik/dynamik/dyn03#energie|Energie]] und soll somit Reibung innerhalb des Muskels simulieren.
 +\\
 +\\
 +**Aktuator**
 +\\
 +Der Aktuator fügt dem System während der Kontaktphase [[biomechanik/dynamik/dyn03#energie|Energie]] hinzu und soll dem Aktin-Myosin des reales Muskels entsprechen.
 +\\
 +\\
 +**Serielle Feder**
 +\\
 +Die serielle Feder (//SEE//) entspricht den Sehnen im Hill-Modell.
 +\\
 +\\
 +===== Gemeinsame Parameter =====
 +**Masse (**$m$**) des [[biomechanik/dynamik/dyn05#koerperschwerpunkt|Körperschwerpunkts]] [**$kg$**]**
 +\\
 +Die [[biomechanik/dynamik/dyn02#masse|Masse]] des gesamten Systems ist in dem [[biomechanik/dynamik/dyn05#koerperschwerpunkt|Körperschwerpunkt]] als Punktmasse konzentriert. Das restliche System wird als masselos angesehen. Schwingungen der einzelnen Komponenten in der Luft werden aufgrund der Masselosigkeit nicht betrachtet.
 +\\
 +\\
 +**Erdbeschleunigung (**$g$**) [**$\frac{m}{s^2}$**]**
 +\\
 +Die Erdbeschleunigung wird konstant mit $9,81 \frac{m}{s^2}$ angenommen.
 +\\
 +\\
 +**step_a** 
 +\\
 +Dieser Paramater gibt die maximale Schrittanzahl an, nach der die Simulation abgebrochen wird.
 +\\
 +\\
 +**Anfangsgeschwindigkeit (**$v_0$**) [**$\frac{m}{s}$**]**
 +\\
 +$v_0$ ist die initiale Geschwindigkeit, die die Punktmasse zu Beginn der Simulation hat. Dieser Parameter ist als Vektor angegeben und gibt die [[/biomechanik/kinematik/kin01#geschwindigkeit|Geschwindigkeit]], in X- und Y-Komponente getrennt, an.
 +\\
 +\\
 +**Startposition (**$x_0$**) [**$m$**]**
 +\\
 +$x_0$ ist die Anfangsposition der Punktmasse als Vektor mit x- und x-Komponente. Hier können durch eine Differenz zu der Ruhelänge des Beines $L_0$ verschiedene Startbedingungen simuliert werden.
 +\\
 +\\
 +**Beinlänge (**$L_0$**) [**$m$**]**
 +\\
 +Ruhelänge des Beines.
 +\\
 +\\
 +**Federsteifigkeit (**$k$**) [**$\frac{N}{m}$**]** 
 +\\
 +Über diesen Parameter wird die Federsteifigkeit definiert.
 +\\
 +\\
 +**Dämpfungskonstante (**$b$**) [**$\frac{N}{\frac{v}{s}}$**]** 
 +\\
 +Angabe der Dämpfung.
 +\\
 +\\
 +**Aktuatorkraft (**$F$**) [**$N$**]** 
 +\\
 +Dieser Parameter gibt an, mit welcher Kraft der Aktuator während der Kontaktphase wirkt.
 +\\
 +\\
 +**Rampe [Anfangsschritt Endschritt Steigung]**
 +\\
 +Mittels dieses Parameters kann eine Geschwindigkeitsänderung während der Simulation realisiert werden. Angegeben wird hierbei der Anfangschritt, also nach wie vielen Schritten das System [[biomechanik/kinematik/kin01#beschleunigung|beschleunigen]] soll und bei wie vielen Schritten das System wieder eine konstante [[biomechanik/kinematik/kin01#geschwindigkeit|Geschwindigkeit]] annehmen soll (Endschritt). Die Steigung gibt hierbei die Geschwindigkeitszunahme an.
 +\\
 +\\
 +===== Spezielle Parameter für serielles Laufen =====
 +Für die Modelle //Laufen// und //Gehen// genügen die oben angegebenen Parameter.
 +Das serielle Laufen hat die Besonderheit, dass zwei Federn eingesetzt werden, die separat eingestellt werden können.
 +\\
 +\\
 +**Ruhelängen (**$L_1, L_2$**) [**$m$**]**
 +\\
 +Anstelle des Parameters L0 werden nun die Ruhelängen der parallelen und seriellen Feder definiert. Aus der Summe dieser beiden Federn wird in Simulink die reale Beinlänge ermittelt.
 +\\
 +\\
 +**Federsteifigkeiten (**$k_1, k_2$**) [**$\frac{N}{m}$**]**
 +\\
 +Ebenso wie bei der Länge der Federn kann die Federsteifigkeit separat eingestellt werden. 
 +\\
 +\\
 +**Erklärungen zu Umsetzungen mit Simulink**
 +\\
 +Um die Blockschaltbilder übersichtlich zu gestalten, wurden alle festen Parameter als Konstanten direkt in die jeweiligen Subsysteme integriert. Somit wurde zum Beispiel die Kraft des Aktuators nicht aus dem Hauptblockbild in die Systeme //Berechnung//,  //Laufen// und schließlich in //Kraft parallel// geführt, sondern direkt in dem, in der Hierarchie am niedrigsten, System eingefügt.
 +\\
 +\\
 +**Ein/Ausgänge**
 +\\
 +Nachfolgend sollen wiederkehrende Bezeichnungen der Ein- und Ausgänge der Blockschaltbilder aufgezeigt und deren Bedeutung kurz skizziert werden, sodass ein schnelles Einarbeiten und Verstehen der nachfolgenden Blockschaltbilder gewährleistet ist.
 +Die Ein- und Ausgänge wurden, soweit möglich, mit den gängigen Abkürzungen benannt. So steht $x$ für die Position, $v$ für die Geschwindigkeit und $a$ für die [[biomechanik/kinematik/kin01#beschleunigung|Beschleunigung]]. Der Suffix $xy$ bedeutet hierbei, dass in dem Kanal ein Vektor enthalten ist, in dem sowohl die $x$- als auch $y$-Komponente enthalten ist. Da Simulink kontinuierlich über die Zeit rechnet, wurde bei dem Hautpschaltbild noch ($t$) angehängt, um dies zu verdeutlichen.
 +Analog gilt dies für die oben vorgestellten Parameter. Wird von dieser Konvention abgewichen, so geschieht dies, um zum Beispiel die Kraftkomponente der Feder des rechten Beins von dem des linken Beins zu trennen. Dennoch wurde versucht mit der Bezeichnung nahe an der Konvention zu bleiben bzw. die Variablen selbsterklärend zu bezeichnen.
  
-===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\\ 
- 
-\\ 
  
  
-<html><br></html> 
-<html><br></html> 
-===== Laufen ===== 
-test 
-<html><br></html> 
-<html><br></html> 
-===== Gehen ===== 
-test 
-<html><br></html> 
-<html><br></html> 
-===== Laufen (seriell) ===== 
-test 
-<html><br></html> 
-<html><br></html> 
  
  
Zeile 118: Zeile 138:
  
  
-{{indexmenu_n>2}}+{{indexmenu_n>1}}
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