adp_laufrobotik:adp_2012_ws_group2:laufmodelle
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
adp_laufrobotik:adp_2012_ws_group2:laufmodelle [15.02.2013 18:24] – [Gemeinsame Subsysteme] Julian Sinz | adp_laufrobotik:adp_2012_ws_group2:laufmodelle [28.11.2022 00:11] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
- | test | + | Die Modellierung |
- | < | + | Unterkapitel 1 zeigt die gemeinsam genutzten |
- | < | + | Die darauffolgenden Unterkapitel beschreiben detailliert anhand von Bewegungsgleichungen und Blockschaltbildern |
- | ===== Gemeinsame Subsysteme ===== | + | Dieses Kapitel stellt die gemeinsamen Parameter, Variablennamen, |
- | + | ||
- | In diesem Kapitel werden die gemeinsamen Subsysteme | + | |
- | \\ \\ | + | |
- | + | ||
- | * Switch | + | |
- | * Rampe | + | |
- | * Systemenergien | + | |
- | * Abbruchbedingung | + | |
- | + | ||
- | \\ | + | |
- | + | ||
- | === Switch === | + | |
- | + | ||
- | Aus Übersichtsgründen und um Redundanzen zu vermeiden, | + | |
- | Das Subsystem „Switch“ überprüft also anhand eines Paramateres „modus“, | + | |
- | Dazu wurde in jedes Modell ein „Enable Port“ eingefügt, der zu Beginn auf der Option „Held“ | + | |
- | So ergibt der „modus“ 1 den Vektor [0 1 0], der über den Demux an die Ausgänge | + | |
- | + | ||
- | 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, | ||
- | 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 === | + | {{ :adp_laufrobotik:adp_2012_ws_group2:laufmodelle:fmlaeufer_erweiterung.png? |
- | Die Anfangsenergie | + | </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, | + | |
- | + | ||
- | Die Formel der kinetischen Energie lautet:\\ \\ | + | |
- | + | ||
- | Ekin = ½ * m * v^2.\\ \\ | + | |
- | + | ||
- | Die Anfangsgeschwindigkeit v0 ist ebenfalls als Vektor | + | |
- | + | ||
- | 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/ | ||
+ | \\ | ||
+ | Zur Vereinfachung des Modells wird der Mensch, wie in Abb. 1 gezeigt, als reine Punktmasse im [[biomechanik/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **Landewinkel** | ||
+ | \\ | ||
+ | Der Landewinkel ist der [[/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **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/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **Aktuator** | ||
+ | \\ | ||
+ | Der Aktuator fügt dem System während der Kontaktphase [[biomechanik/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **Serielle Feder** | ||
+ | \\ | ||
+ | Die serielle Feder (//SEE//) entspricht den Sehnen im Hill-Modell. | ||
+ | \\ | ||
+ | \\ | ||
+ | ===== Gemeinsame Parameter ===== | ||
+ | **Masse (**$m$**) des [[biomechanik/ | ||
+ | \\ | ||
+ | Die [[biomechanik/ | ||
+ | \\ | ||
+ | \\ | ||
+ | **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, | ||
+ | \\ | ||
+ | \\ | ||
+ | **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, | ||
+ | \\ | ||
+ | \\ | ||
+ | ===== 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, | ||
+ | \\ | ||
+ | \\ | ||
+ | **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 // | ||
+ | \\ | ||
+ | \\ | ||
+ | **Ein/ | ||
+ | \\ | ||
+ | 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/ | ||
+ | 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, | ||
- | 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“, | ||
- | 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“), | ||
- | |||
- | Bild\\ | ||
- | |||
- | \\ | ||
- | < | ||
- | < | ||
- | ===== Laufen ===== | ||
- | test | ||
- | < | ||
- | < | ||
- | ===== Gehen ===== | ||
- | test | ||
- | < | ||
- | < | ||
- | ===== Laufen (seriell) ===== | ||
- | test | ||
- | < | ||
- | < | ||
Zeile 118: | Zeile 138: | ||
- | {{indexmenu_n> | + | {{indexmenu_n> |
adp_laufrobotik/adp_2012_ws_group2/laufmodelle.1360949066.txt.gz · Zuletzt geändert: 28.11.2022 00:10 (Externe Bearbeitung)