Offlineberechnung einer Linearbewegung

  • Schönen guten Tag zusammen,


    ich versuche im Rahmen meiner Arbeit unter anderem eine Linearbewegung zu berechnen. Diese Bewegung ist durch die Parameter der Robotersteuerung vorgegeben (in meinem Fall $acc.cp = 2.3 und $vel.cp = 0.250) und besteht aus einem Start- und einem Zielpunkt, 980mm entfernt.


    Um einen Anhaltspunkt zu haben, habe ich einen Timer gesetzt, die Bahn abgefahren und über einen kleinen Code im Submitinterpreter zyklisch die Positionen gespeichert, wodurch sich das Bild im Anhang ergibt (links Y-Koordinate, oben Zeit).


    Jetzt zu meinem Problem:
    Das Berechnen der Geraden ist kein Problem, aber die Beschleunigungs- und Bremskurve stellt mich vor ein Rätsel. Ich habe durch Verschieben meiner Punkte in Excel zumindest mal eine Annäherung geschafft, aber dann ergab meine Rechnung eine Beschleunigung von 1,01m/s² statt 2,3m/s²...
    Was übersehe ich? Wird die Beschleunigungskurve von der Steuerung anders berechnet als mit den physikalischen Rechenregeln die ich kenne (s = 0,5 * a * t² usw...)?


    Hoffentlich hab ich mein Problem einigermaßen klar ausgedrückt :-| Weiß jemand Rat?


    Schöne Grüße, Ben

  • Schritt für Schritt zum Roboterprofi!
  • ich nehme an, Du orientierst nicht um ?

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Nein, zumindest nicht gewollt ;)
    Aber wenn ich so darüber nachdenke, bleibt zwar mein TOOL in der Orientierung wie es es anfangs hatte, aber der Roboter muss sich ja drum herum bewegen.


    Könnte es sein, das die beiden ORI-Parameter auch dann eine Rolle spielen, wenn sich die Orientierung des Tools vermeindlich nicht ändert?


    Grüße

  • ...die beschleunigungskurve...
    wird die überhaupt berechnet?
    ...oder ist sie durch die eingestellten motorströme, maximalen achsbeschleunigungen etc. nur begrenzt und daher gar nicht berechnet?

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Selbst wenn sie nicht berechnet wird und durch Anderes als eine Variable begrenzt wird, muss es möglich sein, mit 2,3 m/s² zu beschleunigen wenn 2,3m/s² vorgegeben sind.
    Oder irre ich mich hier?


    Alternativ wäre ich auch um Literaturvorschläge dankbar, die dieses Thema behandeln. Ich hab zwar einen Stapel an Schulungsunterlagen, aber die behandeln dieses Thema nicht.


    Es muss doch möglich sein, eine Linearbewegung zu berechnen!


    Grüße

  • Hallo,


    Zitat

    Selbst wenn sie nicht berechnet wird und durch Anderes als eine Variable begrenzt wird, muss es möglich sein, mit 2,3 m/s² zu beschleunigen wenn 2,3m/s² vorgegeben sind.
    Oder irre ich mich hier?


    Leider ist die Realität nie so einfach wie sie in akademischen Uni-Beispielen vorgegaukelt wird:


    Du vergisst z.B. den Filter. Ohne den Filter würdest du Knicke im Geschwindigkeitsprofil haben, was eine reale Mechanik nicht verträgt (unendlicher Beschleunigungssprung beim Übergang aus konstanter Beschleunigung in konstante Geschwindigkeit oder konstante Verzögerung, fehlende Ruckbegrenzung). Du hast aufgrund der Trapezprofilplanung über s=0.5*a*t^2 ja nur ein einmal stetig differenzierbares Geschwindigkeitsprofil. Man muss aber mindestens C2 sein. Daher werden bei KUKA die Sollachspositionen noch bevor sie an die Antriebe kommandiert werden durch einen Mittelwertfilter der Länge $Filter modifiziert. So ein Filter wirkt quadratisch auf die Beschleunigung. Also vor Filterung hat die Steuerung tatsächlich ein Trapezprofil, dass über s=0.5*a*t^2 definiert ist, geplant. Nach Filter kommt aber ein Profil mit weniger Beschleunigung raus.


    Ferner müssen die Profile für kartesische Geschwindigkeit und Orientierung noch synchronisiert werden. Hier gilt es zwei Arten zu Unterscheiden:


    1) zeitsynchron: alle Komponenten starten gleichzeitig und Beenden ihre Bewegung auch wieder gleichzeitig
    2) phasensynchron: alle Beschleunigungs- und Verzögerungsphasen über alle Komponenten starten zu den gleichen Zeitpunkten


    Erst wenn diese beiden Arten der Synchronität für ein Geschwindigkeitsprofil erfüllt sind, wird die gefahrenen Bahn unabhängig von den programmierten Profildaten.


    Ferner hat die KUKA-Steuerung noch Mechanismen die z.B. Anregungen von Schwingungen des Roboters in dessen Eigenfrequeenzbereich verhindern sollen. Hier werden die Vorschübe an die Antriebstechnik noch nachträglich in Abhängigkeit von Lastdaten über das Dynamikmodell modifiziert.


    Ferner: Ist man in der Nähe von Singularitäten würde auch langsamere Beschleunigungen rauskommen, da die Steuerung dann zusätzlich auf maximale Achsgeschwindigkeiten begrenzen muss um ein Durchfahren von Singularitäten zu ermögliche (siehe $CP_VEL_TYPE)


    ....


    ICh könnte jetzt hier noch viele andere Fälle aufzählen die Einfluss haben auf das beobachtete Ergebnis, aber ich glaube es wird klar, dass die Welt manchmal nicht so einfach ist.


    Als Einführungsbuch in alle diese Thematiken könnte ich John J.Craigs: Introduction to Robotics: Mechanics and Control (3rd Edition) empfehlen. Es gibt aber sicher noch viele anderer Einsteigerbücher.


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • Vielen Dank fubini,


    jetzt weiß ich, dass das wohl doch nicht ganz so trivial ist wie ich gehofft hatte.


    Ich hab mir jetzt Literatur zu Bahnplanung usw. besorgt und bin gerade am rechnen. Bis ich meine ersten Formeln verlgeichen kann dauert es noch ein bisschen, deswegen hier noch eine Frage:


    Fährt die Steuerung ein Rampen- oder Sinoidenprofil?


    Schöne Grüße, Ben

  • Hallo,


    wir sollten hier ein Rampenprofil (genauer ein 3 phasiges-trapezförmiges: konstant Beschleunigen, konstante Geschwindigkeit, konstant Verzögern) haben. Trägt man die Geschwindigkeit über den Weg an entsteht so ein Trapez:
    _______________
    / \
    / \
    / \


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • Hallo Komkonza,
    du beschleunigst mit 2.3 m/s*s auf eine Endgeschwindigkeit von 0.25 m/s. Theoretisch dauert der Beschleunigungsvorgang 108.7 ms, das sind also 'nur' 9 Ipo-Takte. Hier dürfte der von fubini erwähnte $FILTER das Ergebnis stark beeinflussen, zumal die Datenaufnahme im Submit-Interpreter bei dessen Taktung (mal 12ms, dann auch mal 24ms) zusätzlich die Messgenauigkeit verschlechtert.
    Warum wählst du nicht stattdessen eine Endgeschwindigkeit von z.B. 1.2 m/s. Dann würde dein Beschleunigungsvorgang 521 ms bzw. etwa 44 Ipo-Takte dauern und theoretisch sollte der TCP in der Zeit ca. 310 mm zurücklegen. Bei deiner Gesamtfahrstrecke von 960 mm bedeutet das, dass sich in etwa eine Streckenaufteilung von 1/3 Beschleunigung, 1/3 Konstantfahrphase und 1/3 Verzögerung ergeben sollte. Ich bin mir ziemlich sicher, dass dabei dann die gemessene Beschleunigung dem Grenzwert von 2.3 m/s*s deutlich näher kommen dürfte.

  • Hey Hinky,


    Den gleichen Gedankengang hatte ich letzte Woche auch, wollte aber zuerst die Ergebnisse interpretieren, bevor ich euch hier noch mal schreibe :mrgreen:


    Ich habe mehrere Testreihen gefahren, einige mit geringer Beschleunigung und Endgeschwindigkeit und einige mit hohen Werten (acc = 2,3 und vel = 1,0 bei einer Strecke von 2m um genau zu sein).
    Beim Nachrechnen der Werte bin ich tatsächlich auf 2,1m/s² gekommen, fubini hat bin seinen Vermutungen also wohl sehr richtig gelegen. Dieses Thema kann ich damit wohl vorerst mal abschließen.


    Mittlerweile bin ich soweit, mit Formeln die Kurven nachbilden zu können. ABER:
    fubini: Bist du sicher, dass ein Rampenprofil gefahren wird? Durch das sprungförmige Aufschalten der Beschleunigung wird doch ein immenser Ruck erzeugt, bist du dir sicher, dass die Steuerung nicht mit einem Sinoidenprofil fährt?
    Ich für meinen Teil könnte mir zumindest nicht vorstellen, warum so hochentwickelte Steurungen wegen den paar anderen Formeln einen höheren Verschleiß riskieren sollten?


    Nichts desto trotz, vielen Dank euch bis hierher :danke:

  • Hallo,


    danke für den Hinweis, dass unsere Steuerung hochentwickelt ist, aber ich bin mir sicher, dass es nicht Sinoid ist, da ein Sinus ja unendlich oft stetig differenzierbar wäre und man sich dann, dass ganze gefiltere ja sparen könnte. Die Ruckbegrenzung wird ja gerade durch die Filterung auf Achsebene erreicht.


    Selbst wenn man das mit heutigen Techniken und mehr Rechenpower auch besser kann (Hier ist übrigens ein Unterschied zum Spline, der nichtmehr so "veraltet" mit Trapezprofilen arbeitet) darf man leider so etwas im Nachinein leider nie wieder ändern, da uns sonst die BMWs, VWs und Daimlers dieser Welt immer lynchen, dass wir uns jetzt anders verhalten als früher. Was übrigens gerade immer wieder beim Spline passiert: Aus der Beobachtung, dass Splinebewegungen sich anders verhalten als der alte Bereich wird immer daraus geschlossen, dass der Spline sich falsch verhält und nicht, dass manche Lösungen von früher äusserst suboptimal waren. Man gewöhnt sich halt schnell an Sachen die eigentlich Mist waren und will die dann bis in alle Ewigkeit so beibehalten.


    Gruß
    Fubini

  • Hey fubini,


    An die Rechenkraft der (alten) Elektronik hatte ich überhaupt nicht gedacht, da hast du natürlich vollkommen recht. Ich kann mir vorstellen, dass es nicht so gern gesehen wird, wenn die altbewährte LIN-Bewegung in einer neuen Software anderes Verhalten aufzeigt.
    Ich meine, wie viele Menschen sind so: :huh: vor dem Windows 8 PC gesessen und haben den Startknopf gesucht und sind daran verzweifelt.


    Aber gut, vielen Dank für den Input, ich muss jetzt erstmal meine Formeln um ein paar Cos() erleichtern :mrgreen:


    Grüße aus Augsburg :danke:


    EDIT: Die Berechnung mit dem Rampenprofil war wesentlich einfacher als mit dem Sinoidenprofil, ich hätte vorher genauer fragen sollen, hätte ich mir gut Arbeit erspart :roll:
    Ich habe das vorläufige Ergebnis mal in den Anhang gepackt, wen es interessiert.

  • Hallo Komkonza,


    ich, und wahrscheinlich viele andere, würden ebenfalls gerne hinter die (komplexe) Offline-Berechnung einer Linearbewegung kommen. Du hattest erwähnt, daß du dir Bücher zum Thema Bahnplanung besorgt hast, kannst du eines empfehlen (möglichst deutschsprachig)?
    Hättest du die eventuell die Möglichkeit / Lust deine gefundenen Formeln + Ergebnisse hier im Forum zu posten?


    Viele Grüße,


    maeher

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden