Warning: Undefined array key "DW68700bfd16c2027de7de74a5a8202a6f" in /is/htdocs/wp1019470_OPI92FFHXV/www/wikiLehre/lib/plugins/translation/action.php on line 237

Warning: Trying to access array offset on value of type null in /is/htdocs/wp1019470_OPI92FFHXV/www/wikiLehre/lib/plugins/translation/action.php on line 237

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp1019470_OPI92FFHXV/www/wikiLehre/lib/plugins/translation/action.php:237) in /is/htdocs/wp1019470_OPI92FFHXV/www/wikiLehre/inc/actions.php on line 38
WP1703 Robotik [Institut für Sportwissenschaft]

Benutzer-Werkzeuge

Webseiten-Werkzeuge


biomechanik:projekte:ws2017:wp1703

WP1703 Robotik

Modul-Icon icon.jpg
Modul-Titel Robotik und BioBiped
Veranstaltung PS Biomechanik
Autor Christian Ritter
Bearbeitungsdauer ca. 60 Minuten
Empfohlene Vorkenntnisse Grundlagenwikis: Kinematik & Dynamik
Lineare Algebra: Matrizenrechnung & Determinante
Präsentationstermin 24.01.2018
Zuletzt geändert 15.04.2018


Einleitung

In der heutigen Zeit wird die Robotik immer relevanter. Die Industrie verwendet Roboter in der Fertigung, sie sind Teil der Forschung und einige haben zu Hause einen Roboter, der ihnen den Boden sauber hält. Immer komplexere Aufgaben können von Robotern gelöst werden. So gibt es beispielsweise autonome Fahrzeuge oder intelligente Prothesen, die den Menschen Arbeit abnehemen.
Bei dem Wort Roboter denken die meisten allerdings eher an Science Fiction. So spielen sie eine wichtige Rolle in Filmen wie „Star Wars“ oder „I, Robot“.
Aus diesem Grund möchte ich in diesem Wiki etwas mehr Aufschluss darüber geben, wie Roboter technisch aufgebaut sind und was sie aktuell leisten können. Als aktuelles Forschungsprojekt werde ich das BioBiped vorstellen, das aus einer Kooperation von Informatik und Biomechanik an der TU Darmstadt entstanden ist.

Im Laufe des Wikis werde ich immer wieder auch die englischen Terme zu Fachbegriffen nennen, so dass bei Interesse das Verständnis der englischen Fachliteratur leichter fällt.

Anmerkung: Dieses Wiki orientiert sich stukturell und thematisch an der Vorlesung „Grundlagen der Robotik“ der TU Darmstadt (siehe hierzu von Stryk, 2016). Dabei wird versucht einen möglichst breiten Überblick für Einsteiger zu schaffen, die nur über die Kenntnisse der Grundlagenwikis verfügen.

Da das Wiki sehr umfangreich ist, sind nicht prüfungsrelevante Teile als Spoiler versteckt.


Begriff und Definitionen

Im folgenden Abschnitt möchte ich euch zeigen, woher der Begriff Roboter kommt und einige wichtige Begriffe definieren.
In dem Drama „Rossum's Universal Robots“ (1920) des tschechischen Schriftstellers Karel Čzapek wird erstmals der Term robot, aus dem slawischen: Fronarbeit, für Androide (künstliche Menschen) verwendet (vgl. Hockstein et al., 2007).
Isaac Asimov machte später, zwischen 1938 und 1942, die Roboter in mehreren Kurzgeschichten bekannt. Dabei schuf er auch drei Gesetze, die für alle Roboter gelten sollten und die heute noch, vor allem für autonome, intelligente Roboter, relevant sind (übersetzt aus: Asimov, 1950, S. 40):

  1. Ein Roboter soll kein menschliches Wesen verletzen oder durch Untätigkeit zulassen, dass ein Mensch zu Schaden kommt.
  2. Ein Roboter muss die Befehle von Menschen befolgen, außer es steht im Widerspruch zum ersten Gesetz.
  3. Ein Roboter muss seine eigene Existenz schützen so lange dies nicht im Widerspruch zum ersten oder zweiten Gesetz steht.


In der Fachliteratur gibt es mehrere Definitionen für Roboter. So schreibt beispielsweise das Robot Institute of America (RIA):
„A [robot is a] reprogrammable, multifunctional manipulator designed to move material, parts, tools, or specialized devices through various programmed motions for the performance of a variety of tasks“ (vgl. Dowling, 1995, Kapitel 1.1)
„Ein [Roboter ist ein] programmierbarer, multifunktionaler Manipulator zum Bewegen von Material, Teilen, Werkzeugen or besonderen Geräten durch verschiedene vordefinierte Bewegungen zur Durchführung einer Vielzahl an Aufgaben“

Der Verein Deutscher Ingenieure (VDI) bezeichnet Industrieroboter als „universell einsetzbare Bewegungsautomaten mit mehreren Achsen, deren Bewegungen hinsichtlich Bewegungsfolge und Wegen bzw. Winkeln frei (d.h. ohne mechanischen bzw. menschlichen Eingriff) programmierbar und gegebenenfalls sensorgeführt sind. Sie sind mit Greifern, Werkzeugen oder anderen Fertigungsmitteln ausrüstbar und können Handhabungs- und/oder Fertigungsaufgaben ausführen“ (VDI-Richtlinie 2860, 1990).

Zuletzt noch ein Beispiel aus dem Oxford English Dictionary:
„A machine resembling a human being and able to replicate certain human movements and functions automatically“ (s. Oxford English Dictionary: robot)
„Eine Maschine, die ein menschliches Wesen darstellt und in der Lage ist, bestimmte menschliche Bewegungen und Funktionen automatisch nachzuahmen“

Wie man sehen kann, sind sich die Definitionen nicht in jedem Punkt einig, gerade wenn es um Autonomie und Aussehen der Roboter geht. In diesem Wiki wird der Begriff Roboter für mechanische Systeme verwendet, die programmierbar sind und eine Aktorik und Sensorik besitzen.
Ein Aktor (engl. „Actuator“) dient der Interaktion von berechnender Einheit (Logik / KI des Roboters) und seiner Umwelt durch Aufbringen von Leistung oder Energie (Janocha, 2004,S. 1). Ein Beispiel für einen Aktor ist ein Greifer am Ende eines Roboterarms, der es erlaubt Objekte zu bewegen. Allgemein wird ein solcher Aktor am Ende eines Roboterarms oft als Endeffektor (engl. „end effector“) bezeichnet (Monkman et al., 2007, S. 5).
Ein Sensor (engl. „sensor“) wandelt physikalische Größen in elektrische Signale um (Wilson, 2005, S. 1). Es gibt viele Arten von Sensoren, beispielsweise Temperatursensoren, Photosensoren (Kameras, Lichtschranken), Kraftsensoren oder Positions-, Geschwindigkeits- und Beschleunigungssensoren. In der Robotik finden fast immer Positionssensoren in den Gelenken Anwendung, die zur Bestimmung des Winkels (engl. „joint angle“) eines Drehgelenks, bzw. der Verschiebung (engl. „joint offset“) eines Schubgelenks dienen. In modernen Robotern sind aber häufig Kombinationen von vielen Sensoren zu finden, um möglichst komplexe Aufgaben lösen zu können.

Wer Interesse an einer detaillierten Beschreibung der Geschichte der Robotik hat, die über 2000 Jahre zurückgeht, dem empfehle ich den Wikipedia Artikel History of robots (englisch, sehr detailliert) oder eine kürzere deutsche Fassung (Robotik).

Aufbau eines Roboters

Nachdem definiert wurde, was ein Roboter ist, möchte ich euch zeigen, wie er aufgebaut ist. Allgemein kann man einen Roboter als Mehrkörpersystem betrachten in dem einzelne starre Glieder (engl. „links“) mit Gelenken (engl. „joints“) verbunden sind. Dabei gibt es zwei mögliche Typen von Gelenken: Drehgelenke (engl. „revolute joints“) und Schubgelenke (engl. „prismatic joints“) (vgl. Craig, 2005, S. 62f.).
Erstere erlauben dabei eine rein rotatorische Bewegung und sind analog zu vielen Gelenken des Menschen, wie zum Beispiel der Ellbogen oder das Knie. Kugelgelenke, wie sie in der Schulter oder Hüfte vorkommen, lassen sich über zwei Drehgelenke ermöglichen, deren Achsen senkrecht zueinander stehen.
Schubgelenke verursachen eine rein translatorische Bewegung in eine Richtung. Für sie gibt es kein analoges Gelenk im Menschlichen Körper.
Eine Besonderheit der beiden verwendeten Gelenke ist, dass jedes genau einen Freiheitsgrad (engl. „Degree of Freedom“, DoF) hat (s. Was ist ein starrer Körper?, „Exkurs: Freiheitsgrade“). Somit ist die Anzahl der Freiheitsgrade des Roboters maximal so groß, wie die Zahl der Gelenke, abhängig von ihrer Art und Anordnung. Sind zum Beispiel zwei Schubgelenke in gleicher oder entgegengesetzter Richtung (also 0° oder 180°) miteinander verbunden, hat man nur einen DoF. (Craig, 2005, S. 5)
Zusätzlich können Roboter noch mit anderen Bewegungsmechanismen wie Rädern (Fahrzeuge) oder Propellern (Drohnen) ausgestattet sein, diese werden hier jedoch nicht behandelt.


Kinematik und Dynamik

Abb.1: Übersicht über die Zusammenhänge der einzelnen Größen und der Kinematik, Jakobimatrix und Dynamik (vgl. von Stryk, 2016, S.94).

Um effizient mit einem Roboter arbeiten zu können, ist es nötig dessen Kinematik und Dynamik zu verstehen. Im Folgenden möchte ich euch beides näher bringen. Wichtig ist hier vor allem zu verstehen, mit Hilfe welcher Methoden man bestimmte Größen in Zusammenhang setzen kann. Bekannt sind dabei oft nur die aktuellen Werte der Gelenkvariablen und deren Ableitungen, nicht aber die gewünschten Positionen, Orientierungen, Geschwindigkeiten und Drehmomente. Abbildung 1 zeigt dazu, wie die einzelnen Größen mit den Gelenkvariablen und deren Ableitungen, über Roboterkinematik und -dynamik, in Verbindung stehen.

In der Literatur gibt es verschiedene Bezeichnungen für die verwendeten Variablen und Größen. Soweit möglich folgt dieses Wiki den Benennungen, die in der Vorlesung „Grundlagen der Robotik“ an der TU Darmstadt eingeführt wurden.

Roboterkinematik

Es gibt bereits eine kurze Einführung zur Roboterkinematik im Wiki Exoskelett. Der Vollständigkeit halber wird sie hier aber nochmals ausführlicher besprochen.

In der (direkten) Roboterkinematik geht es darum, für einen Roboter aus bekannten Gelenkwinkeln $\theta_i$ bzw. -translationen $d_i$ (für $1 \leq i \leq n$, bei $n$-gelenkigem Roboter) die Position und Orientierung der einzelnen Gelenke und des Endeffektors in Bezug auf ein Weltkoordinatensystem (WKS) (einen festen, vorbestimmten Ursprung) zu berechnen. Dabei wird jedem Gelenk und dem Endeffektor ein eigenes Koordinatensystem zugewiesen (vgl. Craig, 2005, S. 73ff.). (Anmerkung: Es existiert immer nur entweder $\theta_i$ oder $d_i$, da man entweder ein Drehgelenk (rein rotatorisch) oder ein Schubgelenk (rein translatorisch) hat, zusammengefasst bezeichnen wir sie als Gelenkvariable $q_i$). Mit Methoden der Kinematik lässt sich eine homogene Transformationsmatrix $T$ berechnen, mit Hilfe derer, basierend auf den $q_i$, die Transformation vom WKS zum jeweiligen Gelenk- oder Endeffektorkoordinatensystem (EKS) dargestellt werden kann.
Allgemein hat $T$ die Form (vgl. Paul, 1981, S. 41; vgl. von Stryk, 2016, S. 24): $$ ^aT_b = \left(\begin{array}{c|c} ^aR_b(\alpha, \beta, \gamma) & ^a\pmb{r}_b \\ \hline \pmb{0} & 1 \end{array}\right), $$ wobei $^aT_b$ eine 4×4-Matrix ist (wenn man den dreidimensionalen Raum betrachtet), bestehend aus der 3×3-Matrix der Rotation $^aR_b(\alpha, \beta, \gamma)$ (basierend auf drei einfachen Rotationen, z.B. Eulerwinkel) und dem 3×1-Vektor der Translation $^a\pmb{r}_b$. Die Notation $^aX_b$ bedeutet dabei, dass etwas aus dem Koordinatensystem b im Koordinatensystem a dargestellt wird, also zum Beipiel ist $^{WKS}T_{EKS}$ die Transformationsmatrix um Koordinaten des EKS ins WKS zu übertragen.

Diese Matrix erlaubt es, für jede beliebige Konfiguration von Gelenkvariablen die Position und Orientierung des Endeffektors (und auch der einzelnen Gelenke) zu berechnen. Man weiß also auch ohne Kamera oder ähnliches, in welcher Position sich der Roboter zur Zeit befindet. Auf ähnliche Art und Weise weiß z.B. auch ein Tennisspieler, wie er seinen Arm und den Schläger hält, ohne hinzusehen.
Da es sich um eine homogene Transformation handelt, müssen alle Berechnungen in homogenen Koordinaten durchgeführt werden. Anders als in den klassischen kartesischen Koordinaten ist es so möglich, neben der Rotation auch die Translation als Matrixmultiplikation abzubilden. Eine genaue Beschreibung der homogenen Koordinaten findet sich hier: Homogene Koordinaten

Oft ist allerdings die inverse Kinematik noch interessanter. Hierbei wird eine Lösung auf die Frage „Welche Winkel / Translationen müssen in den Gelenken eingestellt werden, damit sich der Endeffektor an der gewünschten Position in der gewünschten Orientierung befindet?“ gesucht. Ein großes Problem dabei ist die Mehrdeutigkeit. Während es für eine Konfiguration von Gelenkvariablen nur eine Endeffektorposition gibt, kann es für eine gewünschte Endeffektorposition mehrere Konfigurationen geben. (vgl. Goldenberg et al., 1985, S. 14)
Abhilfe kann hier die Einführung von Beschränkungen (engl. „constraints“) schaffen, wie es beispielsweise beim menschlichen Arm der Fall ist (man kann den Ellbogen nur in eine Richtung knicken) (vgl. Chiacchio, 1991).

Ein weiteres Feld der Kinematik beschreibt die Berechnung der linearen Geschwindigkeit ($v$) und der Rotationsgeschwindigkeit ($\omega$) des Endeffektors relativ zum WKS, abhängig von den Gelenkvariablen. Dazu bestimmt man die Jakobimatrix des Manipulators (engl. „Jacobian“), welche die folgende Gleichung erfüllt (vgl. Yoshikawa, 1985, S. 3; vgl. von Stryk, 2016, S. 65): $$ \begin{pmatrix} \pmb{v}\\ \pmb{\omega} \end{pmatrix} = J(\pmb{q}) * \pmb{\dot q}, $$ wobei $\pmb{v}, \pmb{\omega} \in \mathbb{R}^3$ und $\pmb{\dot q} \in \mathbb{R}^n$, für einen $n$-gelenkigen Roboter im Dreidimensionalen.
Die Berechnungen sind analog zur linearen Geschwindigkeit (Schubgelenk), Tangentialgeschwindigkeit (Drehgelenk) und Winkelgeschwindigkeit (Drehgelenk). Mit Hilfe der Jakobimatrix kann man schnell erkennen, welchen Einfluss die einzelnen Gelenke auf die Bewegung des Endeffektors haben. Ist z.B. eine Zeile der Matrix $\pmb 0$, so ist keine Bewegung in die jeweilige Richtung bzw. keine Rotation um die jeweilige Achse möglich.
Das folgende Beispiel zur Kinematik ist optional, es sollte aber helfen, die einzelnen Methoden besser zu verstehen.

<spoiler | Rechenbeispiel zur Kinematik>

Abb. 2: Ebener Greifer mit zwei Drehgelenken.

In dem folgenenden Beispiel möchte ich anhand eines ebenen Greifers (s. Abbildung 2) mit zwei Rotationsgelenken ($q_1 = \theta_1$ und $q_2 = \theta_2$) zeigen, wie man ein Kinematikmodell aufstellen kann. Die Länge der einzelnen Glieder bezeichnen wir als $l_1$ und $l_2$. Die Achsen des WKS sind in der unteren linken Ecke eingezeichnet (wobei die z-Achse aus der Ebene hinauszeigt), sein Ursprung befinde sich im ersten Drehgelenk ($r_1 = (0, 0, 0)^T$). Ursprung und Achsen des Endeffektorkoordinatensystems (EKS) sind blau.

Wir wollen nun zunächst die Position des Endeffektors in Abhängigkeit der Gelenkvariablen $\theta_{1/2}$, sowie der Längen $l_{1/2}$ berechnen. Die Position des zweiten Gelenks $r_2$ ist dabei nur abhängig vom ersten Gelenkwinkel $\theta_1$. <spoiler | $r_2$> $r_2 = (-l_1 * \sin \theta_1, l_1 * \cos \theta_1, 0)^T$. </spoiler> Die Position des Endeffektors $r_{ee}$ setzt sich aus der Position des zweiten Gelenks und der Verschiebung um $l_2$ mit dem Winkel $\theta_2 + \theta_1$ zusammen, ist also von beiden Gelenkwinkeln abhängig. <spoiler| $r_{ee}$> $r_{ee} = r_2 + (-l_2*\sin (\theta_2 + \theta_1), l_2 * \cos (\theta_2 + \theta_1), 0)^T = (-(l_1*\sin \theta_1 + l_2*\sin (\theta_2 + \theta_1)), l_1 * \cos \theta_1 + l_2 * cos(\theta_2 + \theta_1), 0)^T$ </spoiler>
Die Rotation $^{E}R_{W}$ der Achsen des EKS, ausgehend vom WKS, (hier kurz: $W$ und $E$) hängt ebenfalls von beiden Gelenkwinkeln ab. <spoiler|$^{E}R_{W}$> $$^{E}R_{W}=\begin{pmatrix} \cos(\theta_1 + \theta_2) & -\sin(\theta_1 + \theta_2) & 0\\ \sin(\theta_1 + \theta_2) & \cos(\theta_1 + \theta_2) & 0\\ 0 & 0 & 1 \end{pmatrix}$$ </spoiler>
Aus $r_{ee}$ und $^{E}R_{W}$ kann nun die Transformationsmatrix $^{E}T_{W}$ vom WKS zum EKS bestimmt werden. <spoiler|$^{E}T_{W}$> $$ ^{E}T_{W} = \begin{pmatrix} \cos(\theta_1 + \theta_2) & -\sin(\theta_1 + \theta_2) & 0 & -(l_1*\sin \theta_1 + l_2*\sin (\theta_2 + \theta_1)) \\ \sin(\theta_1 + \theta_2) & \cos(\theta_1 + \theta_2) & 0 & l_1 * \cos \theta_1 + l_2 * cos (\theta_2 + \theta_1) \\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{pmatrix} $$ </spoiler> Damit ist es möglich, für jede beliebige Stellung des Roboterarms über $\theta_1$ und $\theta_2$, Punkte vom WKS ins EKS und umgekehrt zu transformieren. <spoiler| Transformation> $^{E}p = ^{E}T_{W} * {^{W}p}$ bzw. $^{W}p = (^{E}T_{W})^{-1} * {^{E}p}$, wobei $^Ap$ den Punkt $p$ dargestellt im Koordinatensystem $A$ bezeichnet. </spoiler>

Abb. 3: In beiden gezeigten Fällen erreicht der Endeffektor die gleiche Position, obwohl unterschiedliche Gelenkwinkel anliegen (Ellbogen rechts und Ellbogen links).

Zusätzlich kann über geometrische Methoden das inverse Modell aufgestellt werden, mit dem die Winkel $\theta_{1/2}$ berechnet werden können, die für eine gewünschte Endeffektorposition $(x, y)^T$ nötig sind. <spoiler|Inverses Modell> Als inverses Modell ergibt sich (adaptiert nach Gordon (2011, S. 16f.)): $$ \theta_1 = \arctan \frac{x}{y} - \arctan \frac{l_2 * \sin \theta_2}{l_1 + l_2 * \cos \theta_2} \\ \theta_2 = \pm 2 \arctan \sqrt{\frac{(l_1 + l_2)^2 - (x^2 + y^2)}{(x^2 + y^2) - (l_1 - l_2)^2}} $$ </spoiler> Das inverse Modell zeigt, dass es immer zwei mögliche Lösugen für $\theta_2$ gibt (einmal positiv und einmal negativ). Für jedes $\theta_2$ gibt es ein zugehöriges $\theta_1$, so dass es für fast alle Zielpositionen $(x, y)^T$ immer zwei mögliche Lösungen gibt (Ausnahme ist $\theta_2 = \pm 0 = 0$). Das inverse Modell ist also nicht eindeutig. Dabei ist der „Ellbogen“ einmal links und einmal rechts. Im Beispiel (Abbildung 3) ist $(\theta_1, \theta_2)$ auf der linken Seite $(45°, -90°)$ und auf der rechten Seite $(-45°, 90°)$, die Endeffektorposition ist jedoch identisch.

Zuletzt noch zur Berechnung der Jakobimatrix. Die Jakobimatrix setzt sich aus zwei Teilen zusammen $J(\pmb q) = \begin{pmatrix} J_v(\pmb q) \\ J_\omega(\pmb q) \end{pmatrix}$, die jeweils für lineare Geschwindigkeit und die Winkelgeschwindigkeit zuständig sind. $J_v(\pmb q)$ kann über die partiellen Ableitungen der Endeffektorposition nach den Gelenkvariablen berechnet werden. Dabei wird jede der beiden Formeln aus $r_{ee}$ einmal nach $\theta_1$ und einmal nach $\theta_2$ abgeleitet und zu einer Matrix zusammengesetzt. <spoiler|$J_v(\pmb q)$> $$ J_v(\pmb q) = \begin{pmatrix} \frac{\partial x}{\partial \theta_1} & \frac{\partial x}{\partial \theta_2} \\ \frac{\partial y}{\partial \theta_1} & \frac{\partial y}{\partial \theta_2} \\ \frac{\partial z}{\partial \theta_1} & \frac{\partial z}{\partial \theta_2} \end{pmatrix} = \begin{pmatrix} -l_1 * \cos\theta_1 - l_2 * \cos(\theta_1 + \theta_2) & -l_2 * \cos(\theta_1 + \theta_2)\\ -l_1 * \sin\theta_1 - l_2 * \sin(\theta_1 + \theta_2) & -l_2 * \sin(\theta_1 + \theta_2)\\ 0 & 0 \end{pmatrix} $$ </spoiler> Für $J_\omega(\pmb q)$ benötigt man zunächst die Rotation $\pmb\omega$. Da beide Drehgelenke um die z-Achse rotieren, ist die Rotation um die anderen beiden Achsen $0$ und um die z-Achse $\theta_1 + \theta_2$. <spoiler|$\pmb\omega$> $$ \pmb\omega = \begin{pmatrix} 0\\ 0\\ \theta_1 + \theta_2 \end{pmatrix} $$ </spoiler> $J_\omega(\pmb q)$ ergibt sich nun analog zu $J_v(\pmb q)$ durch partielles Ableiten nach $\theta_{1/2}$. <spoiler|$J_\omega(\pmb q)$> $$ J_\omega(\pmb q) = \begin{pmatrix} \frac{\partial \omega_x}{\partial \theta_1} & \frac{\partial \omega_x}{\partial \theta_2} \\ \frac{\partial \omega_y}{\partial \theta_1} & \frac{\partial \omega_y}{\partial \theta_2} \\ \frac{\partial \omega_z}{\partial \theta_1} & \frac{\partial \omega_z}{\partial \theta_2} \end{pmatrix} = \begin{pmatrix} 0 & 0\\ 0 & 0\\ 1 & 1 \end{pmatrix} $$ </spoiler> Die Jakobimatrix des Endeffektors $J(\pmb q)$ kann jetzt aus den beiden einzelnen Matrizen zusammengesetzt werden. <spoiler|$J(\pmb q)$> $$ J(\pmb q) = \begin{pmatrix} -l_1 * \cos\theta_1 - l_2 * \cos(\theta_1 + \theta_2) & -l_2 * \cos(\theta_1 + \theta_2)\\ -l_1 * \sin\theta_1 - l_2 * \sin(\theta_1 + \theta_2) & -l_2 * \sin(\theta_1 + \theta_2)\\ 0 & 0\\ 0 & 0\\ 0 & 0\\ 1 & 1 \end{pmatrix} $$ </spoiler> Aus der Jakobimatrix kann man verschiedene Informationen ablesen. So wird hier deutlich, dass keine Bewegung in z-Richtung, sowie keine Rotationen um die x- oder y-Achse möglich sind, da die jeweiligen Zeilen $0$ sind. Außerdem kann man sehen, dass die lineare Geschwindigkeit in x- und y-Richtung abhängig von der Stellung des Roboterarms ist, da sowohl $\theta_1$ als auch $\theta_2$ in der jeweiligen Zeile enthalten sind. </spoiler>

Roboterdynamik

Nachdem die Roboterkinematik abgehandelt ist, wird nun die inverse Roboterdynamik beschrieben. Diese ist wichtiger als die direkte Roboterdynamik, da man sie für die Steuerung des Roboters benötigt (man gibt einem Drehgelenk zum Beispiel ein Drehmoment und nicht eine Zielposition, um eine gewünschte Position zu erhalten)(vgl. Craig, 2005, S. 263). In der inversen Roboterdynamik werden die Kräfte und Drehmomente $\tau_i$ der Gelenke berechnet, die nötig sind, um die gewünschten Gelenkvariablen $q_i$ sowie deren Ableitungen $\dot q_i$ und $\ddot q_i$ zu erhalten. Man sucht allgemein eine Lösung für $\tau = M(q)\ddot q + V(q, \dot q) + G(q)$, wobei $M(q)$ aus Masse und Trägheitstensor resultiert. $V(q, \dot q)$ sind Kräfte, wie Reibung oder die Coriolis-Kraft, und $G(q)$ sind statische Kräfte, wie die Schwerkraft (vgl. Craig, 2005, S. 185). Zur Berechnung der inversen Dynamik gibt es verschiedene Ansätze, zwei davon möchte ich kurz vorstellen.
Die Newton-Euler-Iteration berechnet iterativ (also durch Wiederholung gleicher Berechnungen), basierend auf Kräften und Drehmomenten in den Gliedern, die nötigen Kräfte und Drehmomente in den Gelenken. Dabei erhält man oft lange Gleichungen. Allerdings ist das Abarbeiten des Algorithmus leicht auf einem Computer umzusetzen. (vgl. Craig, 2005, S. 171-176; vgl. von Stryk, 2016, S.98-109)
Dahingegen betrachtet der Ansatz der Lagrange-Gleichung die Energie des Systems. Dazu werden die Gleichungen für die kinetische Energie $E_{kin}$ und die potentielle Energie $E_{pot}$ der einzelnen Gelenke aufgestellt und daraus die Lagrange-Gleichung $L$ aufgestellt (vgl. Craig, 2005, S. 182f.; vgl. von Stryk, 2016, S. 119-122). Es gilt: $$ L = E_{kin} - E_{pot}\\ \tau = \frac{d}{dt} \frac{\partial L}{\partial \pmb{\dot q}} - \frac{\partial L}{\partial \pmb{q}} $$ Die so erhaltenen Lösungen sind oft kürzer und somit schneller auf den schwachen Prozessoren eines realen Roboters umzusetzen. Es ist allerdings schwieriger, sie zu berechnen.
Unabhängig vom der gewählten Methode enthält man ein äquivalentes Modell, das zur Steuerung verwendet werden kann.

Schwierigkeiten

Neben Kinematik und Dynamik gibt es in der Robotik noch viele andere komplexe Schwierigkeiten, mit denen man sich befassen muss, um einen funktionsfähigen Roboter zu erhalten. Hier möchte ich zwei Probleme vorstellen und zeigen, wie man sie lösen bzw. umgehen kann.

Singularitäten

Eine Singularität (engl. „singularity“) beschreibt einen Zustand, in dem die Bewegung des Roboters eingeschränkt ist. Sie kann als plötzlicher Verlust eines Freiheitsgrades gesehen werden. Grund dafür sind Probleme bei der Berechnung von Inversen. Es kann entweder keine Lösung für eine gewünschte Bewegung gefunden werden, oder unendlich viele (vgl. Craig, 2005, S. 152). Dabei können verschiedene Effekte auftreten. So können extrem hohe Kräfte und Drehmomente von den Gelenken gefordert werden, die Steuerung könnte versagen oder es kann sich die Steifigkeit des Roboter ändern. Im schlimmsten Falle kann dies zu Schäden am Roboter oder seiner Umwelt führen.
Um Singularitäten zu ermitteln, kann man nach Gelenkkonfigurationen suchen, in denen ein oder mehrere Freiheitsgrade verloren gehen. Hierbei hilft die Jakobimatrix. Ihr Rang (also die Zahl linear unabhängiger Zeilen und Spalten) gibt an, wie viele DoFs der Endeffektor des Roboters hat (maximal 6). Ein fallender Rang (und damit ein Verlust an DoFs) liegt vor, wenn die Jakobimatrix singulär wird. Häufig finden sich Singularitäten am Rand des Arbeitsraums (der vom Endeffektor erreichbare Bereich). Um Fehler durch Singularitäten zu vermeiden, kann man beispielsweise die jeweiligen Konfigurationen verbieten oder ein besonderes Verhalten in diesen festlegen (z.B. Geschwindigkeit halten), sodass man die Singularität sicher durchfahren kann. (vgl. Donelan, 2010, S. 401ff.)

Betrachtet man die Jakobimatrix aus dem Beispiel, kann man die Singularitäten des vorgestellten Roboters ermitteln. Für die meisten Konfigurationen ist der Rang der Matrix 2, der Roboter hat also 2 DoFs. Eine Matrix ist unter anderem dann singulär, wenn ihre Determinante $0$ ist (vgl. Craig, 2005, S. 152). <spoiler|Berechnung der Determinanten> Wir betrachten die vereinfachte Jakobimatrix (nach Entfernen der trivialen Zeilen): $$ J = \begin{pmatrix} -l_1 * \cos\theta_1 - l_2 * \cos(\theta_1 + \theta_2) & -l_2 * \cos(\theta_1 + \theta_2)\\ -l_1 * \sin\theta_1 - l_2 * \sin(\theta_1 + \theta_2) & -l_2 * \sin(\theta_1 + \theta_2) \end{pmatrix} $$ $$ \Rightarrow det(J) = (-l_1 * \cos\theta_1 - l_2 * \cos(\theta_1 + \theta_2)) * (-l_2 * \sin(\theta_1 + \theta_2)) \\ - (-l_1 * \sin\theta_1 - l_2 * \sin(\theta_1 + \theta_2) * (-l_2 * \cos(\theta_1 + \theta_2)) $$ $$ = l_1 * l_2 * \cos\theta_1 * \sin(\theta_1 + \theta_2) + l_2^2 * \cos(\theta_1 + \theta_2) * \sin(\theta_1 + \theta_2) \\ - l_1 * l_2 * \sin\theta_1 * \cos(\theta_1 + \theta_2) - l_2^2 * \sin(\theta_1 + \theta_2) * \cos(\theta_1 + \theta_2) $$ $$ = l_1 * l_2 * (\cos\theta_1 * \sin(\theta_1 + \theta_2) - \sin\theta_1 * \cos(\theta_1 + \theta_2)) $$ $$ = l_1 * l_2 * \sin(\theta_1 + \theta_2 - \theta_1) $$ $$ \Rightarrow det(J)=l_1 * l_2 * \sin(\theta_2) $$ </spoiler> Damit nun die Determinante $0$ wird, gibt es zwei Möglichkeiten. Entweder ist mindestens eine der Armlängen 0 (trivial) oder der Winkel im zweiten Gelenk beträgt $0°$ oder $180°$. Das heißt der Roboter befindet sich immer dann in einer Singularität, wenn sein Arm ausgestreckt oder nach hinten geklappt ist. Im ersten Fall ist ein Verlängern des Arms unabhängig von der Eingabe nicht mehr möglich (maximale Reichweite), im zweiten kann der Arm nicht weiter verkürzt werden (minimale Reichweite).

Auch im menschlichen Körper gibt es Singularitäten. Drückt man beide Knie durch, wird es viel schwieriger die Balance zu halten, da man sich nun nicht mehr nach vorn oder hinten lehnen kann, ohne dabei eine Abwärtsbewegung zu machen. Deshalb stehen Surfer oder Skateboarder immer mit leicht angewinkelten Beinen auf ihren Brettern.

Unsicherheiten & Regelung

Bei der Interaktion mit der realen Welt gibt es verschiedene Einflüsse, die zu Unsicherheiten im System führen können. Dazu zählen Ungenauigkeiten in den einzelenen Sensoren und Gelenken. Zudem können äußere Einwirkungen, wie Wärme, Kollisionen oder Änderungen des Gewichts am Endeffektor (Greifen oder Loslassen eines schweren Objektes), oder auch innere Effekte, wie Verschleiß und Reibung, Unsicherheiten begünstigen.
Um dennoch einen funktionierenden und der Aufgabe entsprechenden Roboter zu erhalten, ist eine Regelung (engl. „control“) vonnöten. Hierbei werden die gemessenen Informationen aus Sensoren und Gelenken zurückgeführt („closed-loop-control“, „feedback-control“) und beeinflussen die Steuersignale, die an die Gelenke gesendet werden. (vgl. Nerode et al., 1992, S. 204)
Es gibt dabei eine Vielzahl an möglichen Reglern, die verschiedene Vor- und Nachteile für unterschiedliche Anwendungsfälle haben.
So benötigt man bei Industrierobotern beispielsweise eine hohe Positionsgenauigkeit, um mikrometergenau Bauteile miteinander zu verbinden. Die dafür benötigte Regelung macht den Roboter aber oft steif (unnachgiebig gegenüber äußeren Einflüssen), was den Arbeitsbereich des Roboters gefährlich für Menschen macht (trifft der Arm eines Industrieroboters einen Menschen am Kopf, kann dies zu schweren Verletzungen führen) (vgl Cui et al., 2014, S. 1ff.).
Auch der Mensch verwendet Regelungen. Bei schnellen Bewegungen wiederholt man oft bekannte Bewegungen, so beispielsweise bei Schlägen im Tennis. In der Technik nennt man das Steuerung (engl. „open-loop-control“, „feedforward-control). Müssen allerdings präzise Bewegungen ausgeführt werden, zum Beispiel die eines Chirurgen bei einer Operation, macht man langsam. Man überprüft die Bewegung und passt sie dem, was man sieht oder fühlt an. Das entspricht einer Regelung.
Mehr Informationen zur Regelungstechnik findet ihr hier

Beispiel: BioBiped

Einleitung zum BioBiped

In den folgenden Abschnitten möchte ich das BioBiped vorstellen. Dabei handelt es sich um einen zweibeinigen Roboter (engl. „bipedal robot“), der Erkenntnisse der Biomechanik nutzt und so Vorteile gegenüber konventionellen Robotern erhält. Das BioBiped entstand aus einer Kooperation der SIM Group und des Lauflabors an der TU Darmstadt zwischen 2009 und 2015 (hier geht es zur Website des Projekts). Ziel war es, menschliche Fortbewegungsformen (also vor allem Rennen und Laufen) auf einen Roboter zu übertragen und dabei ähnlich gute Ergebnisse zu erreichen wie der Mensch. Herkömmliche Roboter waren (und sind) oft starr, d.h. die Gelenke, Motoren und Glieder sind fest miteinander verbunden. Das ermöglicht eine genaue Kontrolle über die einzelnen Gelenkstellungen, macht den Roboter in der Bewegung aber ineffizient und anfällig für Stöße. Im Gegensatz dazu verwendet das BioBiped ein elastisches Konzept, in dem Kraft über Federn ausgeübt und aufgenommen werden kann. (vgl. Scholz, 2016, S. 1)

Das folgende Video zeigt, wie das BioBiped eine Sprungbewegung ausführt. Auch wenn diese für einen Menschen einfach erscheint, ist sie für einen herkömmlichen (starren) Roboter sehr schwierig.



Aufbau

Abb. 4: Elasitisches Konzept des BioBiped (aus Radkhah et al., 2010, S. 700). a) Frontalansicht mit beiden Beinen. b) Detailansicht eines einzelnen Beines mit Federn.

Die Besonderheiten im Aufbau des BioBiped sind eine Kombination von aktiv angetriebenen und passiven Federn. Abbildung 4 zeigt den Aufbau, wie er von Radkhah et al. (2010, S. 700) vorgestellt wird. Dabei hat das Bein vier Drehgelenke (rot), entsprechend der Hüfte (zwei Gelenke), dem Knie und dem Fußgelenk. Dazu zwei aktiv angetriebene Federn (grün), die über einen Motor kontrahiert werden können und sechs passive Federn, die für Stabilität und Dynamik sorgen.

Durch einen solchen Aufbau entstehen aber auch neue Probleme. Es lassen sich nicht mehr direkt die Drehmomente in den einzelnen Gelenken steuern, sondern nur die Spannung, die auf die aktiven Federn übertragen wird. So fällt die direkte Beziehung zwischen Steuerung und den jeweiligen Gelenken weg. Damit benötigt man eine viel komplexere Regelung, die zu jedem Zeitpunkt für jeden Aktor und jeden Sensor die entsprechend nötigen Ausgaben erzeugt. (vgl. Scholz, 2016, S. 12f.)
Zudem ist das dynamische Modell des BioBiped hoch nichtlinear, was ein analytisches Berechnen erschwert. Hierbei hat es sich als hilfreich erwiesen, das inverse Dynamikmodell aus Testläufen mit Methoden des Maschinellen Lernens zu erlernen, anstatt es explizit zu berechnen (vgl. Scholz, 2011, S. 3)

Erfahrungen aus dem BioBiped

Anmerkung: Das folgende Fazits entspricht meiner eignenen Meinung, nicht der der Mitarbeiter am BioBiped-Projekt.

Bei dem Projekt BioBiped wurde einiges anders gemacht, als es in der traditionellen Robotik der Fall ist. Deshalb hat es auch einige neue Erkenntnisse gebracht, von denen ich einige hier nennen möchte:

  • Klassische (humanoide) Roboter sind nur bedingt zu schnellen, dynamischen Bewegungen fähig. Hier ist eine elastische Konstruktion ein großer Vorteil.
  • Die Verwendung von passiven Federn ermöglicht die Aufnahme von Energie (z.B. bei der Landung nach einem Sprung), die wieder abgegeben werden kann. Dies bietet für bestimmte Bewegungen (Rennen, Springen) eine bessere Energieeffizienz, als es bei steifen Robotern der Fall ist (es erlaubt dem Roboter den Katapulteffekt zu nutzen).
  • Konzepte aus der Biomechanik lassen sich erfolgreich auf die Robotik übertragen, sind in der Implementierung aber komplizierter.

Außerdem hat das Projekt gezeigt, wie effektiv der Aufbau des menschlichen Körpers und insbesondere dessen Muskeln ist.

Interessante Projekte

In diesem Abschnitt möchte ich kurz ein paar andere interessante Roboterprojekte vorstellen. <spoiler | Interessante Projekte>

  • Boston Dynamics ist eine US-amerikanische Entwicklerfirma, die sich auf Roboter für komplexe Aufgaben spezialisiert haben. Dazu zählen humanoide Roboter für das Gelände, aber auch vierbeinige Roboter, die dem Menschen als Helfer zur Seite stehen.
  • Das deutsche Unternehmen Festo forscht unter anderem an Robotern, die verschiedenen Tieren nachempfunden sind. So finden sich auf ihrer Homepage Kängurus, Ameisen oder Schmetterlinge, die sich ganz wie ihre natürlichen Vorbilder fortbewegen.
  • Als Spin-Off der TU Darmstadt hat die darmstädter Firma Bionic Robotics einen elastischen Roboterarm BioRob (ähnlich dem BioBiped) entwickelt, der als Industrieroboter eingesetzt werden soll. Oberstes Ziel ist es dabei, die Gefahr für Menschen bei der Arbeit mit Robotern zu minimieren.

</spoiler>

Fazit und Ausblick

Ziel dieses Wikis war es, einen Einblick in die technische Seite der Robotik zu gewähren. Dazu wurde der Begriff Roboter, sowie einige andere grundlegende Terme definiert. Dann wurden die Themen Kinematik, Jakobimatrix und Dynamik, sowie deren Inversen besprochen. Diese bilden den Grundstock zur Steuerung eines jeden Roboters. Zudem ist das BioBiped als aktuelles Beispiel für einen biomechanisch inspirierten Roboter vorgestellt worden.
Da das Feld der Robotik sehr groß ist und es auch Überschneidungen mit den Interessen der Biomechanik gibt, sind noch weitere vertiefende Wikis vorstellbar. Unter anderem:

  • Humanoide Roboter: Was können sie bisher leisten? Wo liegen Gemeinsamkeiten und Unterschiede zum Körper des Menschen?
  • Bionische Robotik: Welche Vorteile entstehen, wenn Bewegungen oder Prinzipien von Tieren auf Roboter übertragen werden?
  • Intelligente Prothetik: Wie kann Maschinelles Lernen und die moderne Robotik die Prothetik verändern?
  • Projekte aus Kooperation von Robotik und Biomechanik: Welche aktuellen Projekte entstehen aus gemeinsamer Arbeit von Biomechanik und Robotik?


Abschließend möchte ich sagen, dass die Robotik ein sich rasant entwickelndes Forschungsgebiet ist, das viele verschiedene Anwendungsfälle abdeckt. In Zukunft werden Roboter in der Chirurgie helfen, Leben zu retten und sie werden den Menschen im Haushalt und bei der Arbeit behilflich sein. Außerdem können sie in gefährlichen Situationen wie Naturkatastrophen eingesetzt werden oder fremde Planeten erkunden.

Fragen

<spoiler| Frage 1: Warum ist die inverse Kinematik wichtiger als die direkte Kinematik und was ist das größte Problem der inversen Kinematik?> Die direkte Kinematik ermöglicht, aus bekannten Gelenkkonfigurationen $q_i$ Position und Orientierung der einzelnen Gelenke und des Endeffektors zu berechnen. Bei der Steuerung eines Roboters hat man aber oft eine Zielposition, die man erreichen möchte, und benötigt die zugehörigen Konfigurationen. Dazu braucht man die inverse Kinematik. Das größte Problem dabei sind Mehrdeutigkeiten, d.h. für eine Zielposition gibt es mehrere Lösungen. Es ist also nötig, solche Fälle gesondert abzudecken. </spoiler> <spoiler| Frage 2: Was ist eine Singularität und was kann man tun, um sie zu vermeiden?> Eine Singularität ist eine Gelenkkonfiguration, in der die Bewegung des Roboters eingeschränkt wird (Verlust eines Freiheitsgrads). Es kann berechnet werden, wo Singularitäten auftreten, z.B. mit Hilfe der Jakobimatrix. Kennt man die jeweiligen kritischen Konfigurationen, kann man sie entweder meiden / verbieten oder man kann ein gesondertes Verhalten vorgeben, bis der Roboter die Singularität verlässt. </spoiler> <spoiler| Frage 3: Was ist der Vorteil bei der Verwendung passiver Federn im BioBiped?> Die passiven Federn im BioBiped geben einerseits eine zusätzliche Stabilisierung, andererseits erhöhen sie aber auch die Dynamik des Roboters. Dank ihnen kann Energie aufgenommen und wieder abgegeben werden (Katapulteffekt), wodurch die Effizienz des Roboters gesteigert wird. </spoiler> <spoiler| Frage 4: Warum wird zur Steuerung / Regelung eines Roboters die inverse Dynamik benötigt? Warum reicht hier nicht die inverse Kinematik?> Die einzelnen Gelenke eines Roboters werden für gewöhnlich über Kräfte und Drehmomente ($\tau$) und nicht über Positionen angesteuert. Deshalb ist die inverse Dynamik notwendig. Die inverse Kinematik ist dabei nötig, um die gewünschten Gelenkkonfigurationen $q_i$ zu berechnen, die an das Dynamikmodell übergeben werden. </spoiler> <spoiler| Frage 5: Was kann man am Rang der Jakobimatrix ablesen? Wozu kann sie noch verwendet werden?> Der Rang der Jakobimatrix entspricht der Zahl der Freiheitsgrade eines Roboters. Dabei hat ein Roboter maximal 6 DoFs, da $J$ eine 6xn-Matrix ist. Zusätzlich kann die Jakobimatrix dazu verwendet werden, Singularitäten zu finden und sie gibt Aufschluss über die generellen Bewegungsrichtungen eines Roboters (Nullzeilen bedeuten, dass in der jeweiligen Dimension keine Bewegung möglich ist). </spoiler>

Verwendete Bilder

Sofern eine Abbildung nicht entsprechend gekennzeichnet ist, wurde sie von mir persönlich erstellt und unterliegt der gleichen Lizenz wie dieses Wiki.

Modul-Icon: https://pixabay.com/en/robot-robot-arm-strong-machine-3010511/

Abbildung 1: Basierend auf Abb. 5.1 in von Stryk (2016, S. 94).

Abbildung 4: Kombination aus Radkhah et al. (2010, S. 700) Figure 6 und Figure 7.

Literatur

Asimov, I. (1950). Runaround. I, Robot (hardcover). New York City: Doubleday. ISBN 0-385-42304-7.

Chiacchio, P.; Chiaverini, S.; Sciavicco, L. & Siciliano, B. (1991). Closed-loop inverse kinematics schemes for constrained redundant manipulators with task space augmentation and task priority strategy. The International Journal of Robotics Research. S. 410-425.

Craig, J. J. (2005). Introduction To Robotics: Mechanics And Control. Upper Saddle River, NJ: Pearson Education.

Cui, G; Zhang, D; Rosen, M. (2014). Robotics Safety: An Engineering Teaching Module. Verfügbar: hier.

Donelan, P. (2010). Kinematic Singularities of Robot Manipulators. In: Hall, E. (Ed.) (2010). Advances in Robot Manipulators. InTech. S. 401-416.

Dowling, K. (1995). Robotics: comp.robotics Frequently Asked Questions. Available as a hypertext document at https://www.cs.cmu.edu/Groups/AI/html/faqs/ai/robotics/part1/faq.html. Zuletzt aufgerufen am 29.12.2017.

Goldenberg, A.; Benhabib, B. & Fenton, R. (1985). A complete generalized solution to the inverse kinematics of robots. IEEE Journal on Robotics and Automation. S. 14-20.

Gordon, D. (2011). Robotics: Forward and Inverse Kinematics. Slides verfügbar unter https://www.slideshare.net/DamianGordon1/forward-kinematics. Zuletzt aufgerufen am 29.12.2017.

Hockstein, N. G.; Gourin, C. G.; Faust, R. A. & Terris, D. J. (2007). A history of robots: from science fiction to surgical robotics. Journal of Robotic Surgery. S. 113-118.

Janocha, H. (2004). Actuators: Basics and Applications. Berlin, Heidelberg: Springer-Verlag.

Monkman, G. J.; Hesse, S.; Steinmann, R. & Schunk, H. (2007). Robot Grippers. Weinheim: Wiley-VCH.

Nerode, A. & Kohn, W. (1992). An autonomous systems control theory: an overview. Napa, CA: IEEE Symposium on Computer-Aided Control System Design. S. 204-210.

Paul, R. (1981). Robot manipulators: mathematics, programming, and control: the computer control of robot manipulators. Cambridge, MA: MIT Press.

Radkhah, K.; Maus, M.; Scholz, D.; Seyfarth, A. & von Stryk, O. (2010). Towards Human-Like Bipedal Locomotion with Three-Segmented Elastic Legs. In: 41st International Symposium on Robotics (ISR)/ 6th German Conference on Robotics (ROBOTIK). S. 696-703.

Scholz, D. (2016). On the Design and Development of Musculoskeletal Bipedal Robots. Darmstadt: tuprints.

Scholz, D.; Kurowski, S.; Radkhah, K. & von Stryk, O. (2011). Bio-inspired motion control of the musculoskeletal BioBiped1 robot based on a learned inverse dynamics model. In: Proc. 11th IEEE-RAS Int. Conf. on Humanoid Robots (HUMANOIDS).

von Stryk, O. (2016). Grundlagen der Robotik: Skriptum. Ausgabe Wintersemester 2016/17.

VDI-Fachbereich Produktionstechnik und Fertigungsverfahren. (1990). Montage- und Handhabungstechnik; Handhabungsfunktionen, Handhabungseinrichtungen; Begriffe, Definitionen, Symbole. VDI-Gesellschaft Produktion und Logistik.

Wilson, J. S. (2005). Sensor Technology Handbook. Oxford: Elsevier.

Yoshikawa, T. (1985). Manipulability of robotic mechanisms. The international journal of Robotics Research. S. 3-9.

indexmenu_n_30

biomechanik/projekte/ws2017/wp1703.txt · Zuletzt geändert: 28.11.2022 00:58 von 127.0.0.1


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