Genetischer Algorithmus zur Positionsbestimmung bei einer Parallelkinematik

4/9/2012

Technologien: .NET (C#), C++

Die Position und Orientierung eines Endeffektors in Bezug auf die Roboterbasis aufzufinden, bezeichnet man in der Robotik als „Direktes Kinematisches Problem“ (DKP). Während dies bei einer seriellen Kinematik sehr leicht zu bestimmen ist, führen sog. geschlossene kinematische Ketten bei einer parallelen Anordnung der mechanischen Komponenten dazu, das Berechnungen schnell sehr komplex werden. Um dieses Problem zu umgehen, bieten sich Näherungslösungen an, die sich der einfachen Lösbarkeit des umgekehrten, inversen kinematischen Problems (IKP) bedienen. Beschreibung der Funktionen IKP und DKP für diesen Fall:

  • IKP (leicht lösbar)
    • Eingabe: Raumkoordinaten X, Y, Z, Roll, Pitch, Yaw
    • Ausgabe: Antriebspositionen an der Basisplattform
  • DKP (schwer lösbar)
    • Eingabe: Antriebspositionen an der Basisplattform
    • Ausgabe: Raumkoordinaten X, Y, Z, Roll, Pitch, Yaw

Die Berechnung des DKP-Koordinatenvektors (6 Werte) mit Hilfe eines sog. Real-coded genetischen Algorithmus unter Zuhilfenahme des IKPs läuft wie folgt ab:

  • Rate eine Menge an zufälligen Raumkoordinaten unter sinnvoller Eingrenzung des Lösungsraums. Dies ist die Anfangspopulation des genetischen Algorithmus.
  • Die Anfangspopulation bildet zusammen mit einer Bewertungsfunktion (euklidische Distanz zweier Vektoren) die Eingabe für den Ablauf,der solange wiederholt wird, bis die Genauigkeit des besten Kandidaten ausreichend ist, oder eine maximale Iterationszahl erreicht wird:
    • Wähle x-mal zufällig zwei gute Kandidaten (Berechnung IKP, Vergleich mit Antriebspositionen und Bewertung) aus der Population aus, wobei x die Anzahl an Kandidaten ist. Bilde dabei x-mal einen Nachkommen durch Verschmelzen der zwei Kandidaten (Zusammenfügen von 12 Koordinaten zu 6 Koordinaten mit zufälligen Crossover.
    • Mutiere die Werte des Nachkommen (Entscheidung zufällig) und füge diesen in eine neue Kandidatenliste ein.
    • Prüfe das Ergebnis (Abbruchkriterium) und verwende die neue Liste gfs. für die nächste Iteration.

Eine besondere Optimierung ist die unterschiedlich starke Mutation der Koordinaten in jeder Iteration, eine heuristische Technik, die auch als Simulated Annealing („Simulierte Abkühlung“) bekannt ist. Der Algorithmus berechnet einen Koordinatensatz bestehend aus 6 Werten mit einer Genauigkeit von mind. 6 Dezimalstellen (nm) in deutlich unter 100ms (2,5 GHz CPU).


Leave Comment



Blog

NanoNet - simple Java neural network library
Using backpropagation and sigmoid activation function. | 4/14/2019

NanoNet is a very simple Java neural network library using backpropagation and sigmoid ... Read More

Java async/await nonblocking code library
Write sequential style nonblocking code using a fixed threadpool with Async-Complete for Java | 4/1/2019

Async-Complete (aka Async-Await) is a library for writing asynchronous code in a more ... Read More

SDCLib/J contribution fork
Contributing to IEEE 11073 SDC Family java webservice stack | 2/2/2019

As former main author of the official project in my last job at SurgiTAIX AG, I will maintain ... Read More

More Blog Entries