WP1210 Armkinematik


Modul-Infos

Projekt Armkinematik Wurf WP1209 - Armkinematik
Namen R. Lioutikov
Veranstaltung PS Grundlagen der Biomechanik
Semester WS 2012
Voraussetzung Grundlagen der Veranstaltung PS Biomechanik
Zitationsrichtlinien nicht vollständig

Hallo, es tut mir furchtbar Leid, dass wieder eine Woche vergangen ist und ich es immer noch nicht geschafft habe dieses Modul meinen Wünschen entsprechend zu gestalten. Noch viel mehr tut es mir Leid, dass ihr euch daher nicht anständig vorbereiten konntet. Ich habe daher Professor Seyfarth den Vorschlag unterbreitet, dass der Fragebogen morgen, falls einer ausgeteilt wird, lediglich als Bonus gewertet wird und nicht zu den 100% zählt. Ich habe diesbezüglich noch kein Feedback erhalten, kann also dazu keine verpflichtende Aussage machen. Sollte ein Fragebogen ausgeteilt werden, werden sich die Fragen nur auf die ersten drei Abschnitte beziehen, die bereits heute Mittag online waren (Beschreibung des Roboterarms,Freiheitsgrade und Joint und Task Space) . Wer den Text seit dem einmal überflogen hat sollte problemlos in der Lage sein die Fragen zu beantworten.

Bitte entschuldigt nochmals die Umstände.


Einleitung

Ziel dieses Moduls ist die Einführung in die Grundlegenden Konzepte der Robotik. Zunächst wird ein Vokabular geschaffen, das es ermöglicht einen Roboterarm zu beschreiben. Anschließend wird auf die Bedeutung von Freiheitsgraden eingegangen. Die Begriffe Task- und Joint Space werden vorgestellt und abgegrenzt. Die Transformationen zwischen den beiden Repräsentationen wird anhand von Vorwärts- und Inverse Kinematik erläutert, bevor dann im Dynamik Abschnitt die Berechnung der Drehmomente bei gegebenen Gelenkparametern und vice versa skizziert wird.

Beschreibung des Roboterarms

Um diese Konzepte zu veranschaulichen wird ein einfacher 2 DOF Roboterarm genutzt. DOF steht für „Degrees Of Freedom“, zu deutsch „Freiheitsgrade“, und beschreibt die Anzahl voneinander unabhängiger, frei wählbarer Bewegungsmöglichkeiten. Bevor wir weiter auf Freiheitsgrade eingehen, soll zunächst ein Basisvokabular zur Beschreibung des Roboters eingeführt werden.

Beschreibung des Roboters

  • Die Basis bildet einen Endpunkt des Roboters und bezeichnet die Stelle an der er montiert ist. Betrachtet man einen menschlichen Arm entspricht dies der Schulter.
  • Endeffektor auch TCP (Tool Center Point) genannt bezeichnet den anderen Endpunkt des Roboters, hier können verschiedene Apparaturen befestigt werden um zu Beispiel mit der Umwelt zu interagieren. Beim Menschen wäre die Hand ein typischer Endeffektor.
  • Gelenke ermöglichen es dem Robotor sich zu bewegen. Verschiedene Werte für die Gelenkwinkel resultieren in unterschiedlichen Konfigurationen des Roboters.
  • Segmente sind Starrkörper die einzelne Gelenke miteinander oder mit den Endpunkten des Roboters verbinden. In dieser Hinsicht entsprechen sie den Knochen des menschlichen Armes.

Freiheitsgrade

Im vorherigen Abschnitt war zu erkennen, dass der Roboterarm anhand seiner Freiheitsgrade klassifiziert wurde. Wie bereits erwähnt handelt es sich dabei um die Anzahl der frei wählbaren Bewegungsmöglichkeiten. Dabei kann ein einzelnes Gelenk mehrere Freiheitsgrade besitzen. Ein einfaches Scharniergelenk zum Beispiel besitzt lediglich einen Freiheitsgrad. Ein Kugelgelenk hingegen kann bis zu drei Freiheitsgrade besitzen. Betrachtet man beispielsweise dem menschlichen Arm, kann man 7 Freiheitsgrade identifizieren.

  • 3 in der Schulter
  • 1 im Ellbogen
  • 3 im Handgelenk

Erwähnenswert ist, dass man 6 Freiheitsgrade benötigt um eine beliebige Orientierung des Endeffektor an einer beliebigen Position im 3-dimensionalen Raum zu erhalten. Vorausgesetzt natürlich die mechanischen Einschränkungen lassen dies zu. Der zusätzliche Freiheitsgrad des menschlichen Armes erweitert die Anzahl der Konfigurationen mit der dies erreicht werden kann.

Redundanz

Sind zwei auf einander folgende Gelenke so angebracht, dass ihre Gelenksachsen in dieselbe Richtung zeigen, werden diese als redundant bezeichnet und die Anzahl der Freiheitsgrade erhöht sich damit nicht. Die Gelenkachse bezeichnet bei einem rotatorischem Gelenk die Achse um die sich das Gelenk dreht und bei einem translatorischem Gelenk die Achse entlang der die Bewegung stattfindet.

Singularität

Wichtig im Bezug auf Freiheitsgrade ist auch, dass ihre Anzahl über eine Bewegung hinweg betrachtet nicht zwangsläufig konstant ist. Ist zum Beispiel der Ellbogen voll ausgestreckt, verliert man einen Freiheitsgrad. Dieser Verlust wird als Singularität bezeichnet. Um sich die mechanische Auswirkung einer Singularität zu verdeutlichen kann man sich vorstellt, dass der Ellbogen fixiert wird und man nun versucht nach verschiedenen Objekten zu greifen. Ist man sich der Bewegungseinschränkung nicht bewusst, reagiert darauf nicht angemessen oder nicht rechtzeitig kann es zu Verletzungen beziehungsweise Beschädigungen kommen. Aus diesem und weiteren Gründen die hier nicht weiter erläutert werden versucht man im allgemeinen Singularitäten zu vermeiden.

Joint und Task Space

Im Abschnitt Beschreibung des Roboterarms wurden bereits die Begriffe Konfiguration und Zustand im Bezug auf den Roboterarm erläutert. Soll der Roboter nun eine bestimmte Konfiguration beziehungsweise einen bestimmten Zustand einnehmen, lassen sich die Gelenkprameter definieren. Soll hingegen der Endeffektor positioniert werden oder eine vorgegebene Trajektorie abgefahren werden ist es wünschenswert dies im Welt-Koordinatensystem anzugeben, und somit lediglich die gewünschten Endeffektorparameter anzugeben.

Joint Space

Arbeitet man nun mit den Winkelparametern entsprechen diese den Elementen eines Vektors, wobei der Vektor selbst der Konfiguration beziehungsweise dem Zustand des Roboters entspricht. Die Gesamtheit der verschiedenen Vektoren bildet einen Vektorraum, der als Joint Space bezeichnet wird. Jeder Vektor im Joint Space stellt also eine eindeutige Konfiguration beziehungsweise einen eindeutigen Zustand dar. Mit Hilfe der Kinematik kann man nun die Endeffektorparameter aus den Winkelparametern bestimmen. Wobei jeder Vektor im Joint Space genau einem Vektor im Task Space entspricht. Ein Problem bei Angaben im Joint Space ist die hohe Dimensionalität. Die Anzahl der Parameter entspricht $3N_{dof}$ wobei $N_{dof}$ die Anzahl der Freiheitsgrade darstellt. Dies gilt unter der Vorrausseztzung, dass keine Redundanzen vorkommen. Die Dimensionalität wächst hier also linear mit den Freiheitsgraden. Der Mensch agiert im Joint Space, wenn das Verhalten der Gelenke und nicht die Positionierung des Endeffektors im Vordergrund steht. So zum Beispiel beim Gewichtheben oder auch beim Tanzen.

Task Space

Analog zum Joint Space lässt sich nun auch der Vektorraum definieren der sich aus den Vektoren der Endeffektorparameter zusammensetzt. Dieser Wird als Task Space bezeichnet. Jeder Vektor im Task Space entspricht einer eindeutigen Positionierung und Orientierung des Endeffektors. Die Umwandlung von Endeffektorparameter in Winkelparameter wird als Inverse Kinematik bezeichnet. Anders als bei der direkten Kinematik ist diese Transformation nicht eindeutig. Es gibt also nicht zu jedem Vektor im Task Space nur einen Vektor im Joint Space. Dies wiederum bedeutet, dass ein Ziel das der gleiche Zustand des Endeffektors durch verschiedene Zustände restlichen Roboters erreicht werden kann. Ein weiterer Unteschied zum Joint Space liegt in der Dimensionalität. Die Anzahl der Parameter entspricht hier nun $3N_{pos}+3N_{ori}$ wobei $0 \leq N_{pos} \leq 3$ der Anzahl der Dimensionen entspricht in der sich der Endeffektor bewegen kann und $0 \leq N_{ori} \leq 3$ die Anzahl der Dimensionen darstellt in der sich der Endeffektor orientieren kann .

Da $N_{pos}$ und $N_{ori}$ von $N_{dof}$ abhängen und die Beziehung $N_{pos}+N_{ori} \leq N_{dof}$ immer zutrifft ist ersichtich, dass die Dimensionalität des Task Spaces immer niedriger oder gleich der des Joint Spaces ist. Außerdem gilt immer $N_{pos} + N_{ori} \leq 6$, was bedeutet das, im Gegensatz zum Joint Space, der Task Spaces in seiner Dimensionalität nach oben beschränkt ist. Das Standardbeispiel einer Aktion im Task Space ist das Greifen nach einem Gegenstand. Der Mensch kennt die Position des Gegenstandes im Task Space und bewegt seine Hand dieser Position entgegen.

Kinematik

In diesem Abschnitt wird nun sowohl die Vorwärts- als auch die Inverse Kinematik für den eingangs vorgestellten Roboterarm beschrieben.

Vorwärtskinematik

Wie bereits in Joint und Task Space erwähnt ermöglicht es die Vorwärts Kinematik Gelenkparameter in Endeffektorparameter umzuwandeln. Dadurch lassen sich zum Beispiel Konfigurationen bestimmen die zu einer Kollision des Endeffektors mit einem Hinderniss führen würden. Für den hier beschriebenen Roboterarm berechnet sich die Endeffektor Position $(x,y)$ wie folgt aus den beiden Gelenkwinkeln $(\theta_1, \theta_2)$


\begin{align*}
x &= l_1 \cos(\theta_1) + l_2 \cos(\theta_1 + \theta_2)\\
y &= l_1 \sin(\theta_1) + l_2 \sin(\theta_1 + \theta_2)
\end{align*}

Da die Geschwindigkeit und die Beschleunigung als erste und zweite Ableitung der Position nach der Zeit definiert sind, erhält man die entsprechenden Transformationen wenn man die Formeln ebenfalls nach der Zeit ableitet.


\begin{align*}
\dot{x} &= -l_1 \sin(\theta_1)\dot{\theta}_1 - l_2 \sin(\theta_1 + \theta_2)(\dot{\theta}_1 + \dot{\theta}_2)\\
\dot{y} &= l_1 \cos(\theta_1)\dot{\theta}_1 + l_2 \cos(\theta_1 + \theta_2)(\dot{\theta}_1 + \dot{\theta}_2)\\
\ddot{x} &= -l_1 \cos(\theta_1)\dot{\theta}^2_1 -l_1 \sin(\theta_1)\ddot{\theta}_1 - l_2 \cos(\theta_1 + \theta_2)(\dot{\theta}_1 + \dot{\theta}_2)^2 - l_2 \sin(\theta_1 + \theta_2)(\ddot{\theta}_1 + \ddot{\theta}_2)\\
\ddot{y} &= -l_1 \sin(\theta_1)\dot{\theta}^2_1 + l_1 \cos(\theta_1)\ddot{\theta}_1 - l_2 \sin(\theta_1 + \theta_2)(\dot{\theta}_1 + \dot{\theta}_2)^2 + l_2 \cos(\theta_1 + \theta_2)(\ddot{\theta}_1 + \ddot{\theta}_2)
\end{align*}

Inverse Kinematik

Befindet man sich im Task Space und möchte nun die Gelenkparamter bestimmen, erreicht man dies indem man die obigen Formeln nach auflöst. Die daraus entstehenden Transformationen bezeichnet man als Inverse Kinematik. Für den hier betrachteten Roboterarm sehen diese Transformationen nun wie folgt aus


\begin{align*}
\theta_2 &= \cos^{-1}\left(\dfrac{x^2 - y^2 -l_1^2 - l_2^2}{2 l_1 l_2} \right)\\
\theta_1 &= \tan^{-1}\left(\dfrac{y}{x}\right) - \tan^{-1}\left(\dfrac{l_2 \sin(\theta_2)}{l_1 + l_2 \cos(\tehta_2)}\right)
\end{align*}

Die Winkelgeschwindigkeiten und - Beschleunigungen können nun wieder über die Ableitungen nach der Zeit bestimmt werden. Aus den Formeln lässt sich erkennen, dass mehrere Lösungen möglich sind und dadurch die oben bereits erwähnte mehrdeutige Beziehung entsteht. Sollte, anders als bei dem hier aufgeführten Beispiel, keine analytische Lösung existieren, nutzt man in der Regel numerische Verfahren um die Lösung zu approximieren.

Dynamik

Steuert man den Roboterarm nur entsprechend der bisher betrachteten kinematischen Gleichungen fällt auf, dass die berechnete und die tatsächliche Konfiguration voneinander abweichen. Dies liegt daran, dass bei der Kinematik keine Kräfte betrachtet werden, es allerdings eine Vielzahl von sowohl äußeren als auch inneren Kräften gibt, die auf den Roboter wirken. Die Betrachtung dieser Kräfte wird als Dynamik bezeichnet.

Inverse Dynamik

Die Bewegungen der Gelenke und damit des Roboters werden eingeleitet indem Drehmomente auf die einzelnen Gelenke gegeben werden. Die Berechnung dieser Drehmomente die auch als „motor commands“ bezeichnet werden wird durch die Inverse Dynamik beschrieben. Die Transformation ist allgemein gegeben als


\begin{align*}
\mathbf{u} &= \mathbf{M}(\boldsymbol{\theta})\boldsymbol{\ddot{\theta}}+\mathbf{C}(\boldsymbol{\theta},\boldsymbol{\dot{\theta}})+\mathbf{G}(\boldsymbol{\theta})
\end{align*}

Bewertung des Wiki-Moduls

Kategorie Lioutikov Anmerkungen
Inhalt (max. 10) 7 Pkt
Form (max. 5) 2 Pkt Zitation, Quellen und Literaturverzeichnis fehlen.
Bonus (max. 2) 0 Pkt
Einzelbewertung 9 Pkt 15 Punkte = 100%
Gesamtbewertung 9/15 Punkte = 60,0%
biomechanik/projekte/ws2012/armkinematik.txt · Zuletzt geändert: 29.11.2014 14:41 von Andre Seyfarth
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0