Hallo
ich habe hier im Anhang ein SubVI hochgeladen, das Teil einer Robotersteuerung für einen 6-achsigen Knickarmroboter auf LV basierend ist.
Um den Sachverhalt evtl nachvollziehen zu können, beschreibe ich kurz, was das SubVI macht:
Das VI hat folgende Eingaben:
6xn Matrix beta (in radiant): 6 Gelenkstellungen des Roboters zu jedem der n berechneten Zeitpunkte (i.d.R. 1000<n<20000)
6xn Matrix y_d: Translationsgeschwindigkeiten und Orientierungsänderungsgeschwindigkeiten der Kardanwinkel des Endeffektors zu jedem der n berechneten Zeitpunkte
DH-Parameter: Devanit-Hartenberg Parameter.. einfach hinnehmen. Sie sind zur weiteren Berechnung notwendig.
Ausgang:
6xn Matrix beta_d: Winkelgeschwindigkeiten der 6 Gelenke
In dem Skriptknoten ist nun zu erst die Jacobimatrix in der symbolischen Form definiert. (vorher in Matlab berechnet)
Nun werden zu erst die DH-Parameter substituiert.
Anschließend substituiert die Schleife für jeden Zeitschritt die aktuelle Spalte der beta-Matrix in die Jacobimatrix und rechnet anschließend die entsprechende Spalte der beta_d-Matrix aus. (beta_d = Jacobi^-1 * y_d, bzw beta_d = Jacobiy_d).
So werden nach und nach in der for-Schleife alle Spalten von beta_d berechnet.
Das Problem ist, dass diese Schleife alleine je nach Eingaben zwischen 50 und 500 sekunden rechnet und das ist leider nicht akzeptabel für die Anwendung in welcher das SubVI gebraucht wird.
Hat jemand eine Idee, wie man die Berechnung beschleunigen könnte?
LV Version 8.5.1
für y_d, beta und DH sollten Beispielwerte gespeichert sein
Danke schon mal, falls jemand bis hier gelesen hat.
Gruß
Fiinrod