Stillstandszeiten am Roboter bei Wendepunkten

  • Wie sieht denn das Roboterprogramm aus das ausgeführt wird?

    PTP, LIN?

    Welche Überschleifarten?

    Kommen Meldungen wie z.B. Überschleifen nicht möglich?

    Müssen Achsen an den Umkehrpunkten reversieren?

    Fährst du durch Singularitäten?

    Meldungen während der Ausführung?

    ...


    Es ist schön, dass du beschreibst was du in Matlab/RoboDK machst, das interessiert aber den Roboter nicht. Dem seine Referenz ist nur sein Roboterprogramm und nur das kann erklären wie der Roboter sich verhält.


    Wie kommst du auf Interpolationstakt von 4 ms? KUKA hat 12 ms.


    Mich würde wundern wenn RoboDK die gleichen Verfahrzeiten wie der echte Roboter liefert. Ich glaube nicht dass da unter der Haube der gleiche Trajektorienplaner läuft, sondern eher etwas dass siche die RoboDK Leute ausgedacht haben.


    Ja es gibt Phänomene, dass du bei sehr kurzen aneinander gereiten Bewegungen nicht mehr auf Geschwindigkeit kommst, da die bei kurzen Bewegungen resultierenden Dreiecksprofile nicht mehr maximale Geschwindigkeit erreichen.


    Fubini

    8 Mal editiert, zuletzt von fubini ()

  • Schritt für Schritt zum Roboterprofi!
  • sowas macht man mit ganz vielen überschleiften LIN-Punkten.


    Sorry, hier trifft reine Mathematik aus der Simulation auf das richtige Leben in Stahl und Eisen. Da haben wir alten Knochen etwas Erfahrung, die wir auch gern mit Leuten teilen.


    Aber ich schränke da gern auch mal ein: Nur mit Grundlehrgang.... ;)

    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.

  • Hallo fubini,


    weiter unten siehst du das erstellte Roboterprogramm.

    Die Bewegungsart ist Linearbewegung, außer die erste, das ist eine PTP Bewegung. Ortsüberschleifung wird eingestellt.

    Beim letzten Punkt kommt die Fehlermeldung "Überschleifen nicht möglich", ansonsten läuft das Programm so durch.


    Das RSI gibt mir die Punkte in einem Takt von 0.004 Sekunden aus, ist das nicht der Interpolationstakt?


    Die Punkte die nah beieinander liegen, also in der Nähe des Wendepunkts, hab ich auch mal weg gelassen und einen Mindestabstand von z.B. 2mm festgelegt, aber der Versuchsansatz hat auch keine Früchte getragen. Im Anhang findest du ein Bild dazu.



    &ACCESS RVP
    &REL 1
    &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
    &PARAM EDITMASK = *
    DEF Wellensimulation ( )

    ; GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    ; INTERRUPT ON 3

    ;FOLD Initialise and set default speed
    BAS (#INITMOV,0)
    BAS (#VEL_PTP,100)
    BAS (#ACC_PTP,20)
    $VEL.CP=0.2
    BAS (#TOOL,0)
    BAS (#BASE,0)
    ;ENDFOLD

    ;;FOLD STARTPOS
    ;$BWDSTART = FALSE
    ;PDAT_ACT = PDEFAULT
    ;BAS(#PTP_DAT)
    ;FDAT_ACT = {TOOL_NO 0,BASE_NO 0,IPO_FRAME #BASE}
    ;BAS(#FRAMES)
    ;;ENDFOLD

    $ADVANCE = 5

    ;FOLD ---- Quickly skip BCO ----
    ; PTP $AXIS_ACT
    ;ENDFOLD

    ;FOLD ---- GO HOME ----
    ; PTP {A1 0.000, A2 -90.000, A3 90.000, A4 0.000, A5 0.000, A6 0.000, E1 0, E2 0, E3 0, E4 0, E5 0, E6 0}
    ;ENDFOLD

    ; Program generated by RoboDK v5.2.1 for KUKA KR 6 R700 sixx on 10/05/2021 09:29:44
    ; Using nominal kinematics.
    ; ---- Setting reference (Base) ----
    $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
    ; --------------------------
    ; ---- Setting tool (TCP) ----
    $TOOL = {FRAME: X 0.000,Y 0.000,Z 200.000,A 180.000,B -90.000,C 0.000}
    ; --------------------------
    $APO.CPTP = 0.000
    $APO.CDIS = 0.000
    PTP {A1 0.00000,A2 -45.00000,A3 90.00000,A4 0.00000,A5 -45.00000,A6 0.00000,E1 0.00000} C_PTP
    $VEL.CP = 0.05000
    LIN {X 810.581,Y 0.000,Z 386.896,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04991
    LIN {X 810.581,Y 0.000,Z 384.405,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04972
    LIN {X 810.581,Y 0.000,Z 381.927,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04941
    LIN {X 810.581,Y 0.000,Z 379.467,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04897
    LIN {X 810.581,Y 0.000,Z 377.033,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04842

    [...]

    LIN {X 810.581,Y 0.000,Z 415.526,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04218
    LIN {X 810.581,Y 0.000,Z 413.385,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04347
    LIN {X 810.581,Y 0.000,Z 411.182,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04465
    LIN {X 810.581,Y 0.000,Z 408.924,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04571
    LIN {X 810.581,Y 0.000,Z 406.614,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04666
    LIN {X 810.581,Y 0.000,Z 404.260,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04750
    LIN {X 810.581,Y 0.000,Z 401.867,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04821
    LIN {X 810.581,Y 0.000,Z 399.442,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04881
    LIN {X 810.581,Y 0.000,Z 396.990,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04928
    LIN {X 810.581,Y 0.000,Z 394.517,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04963
    LIN {X 810.581,Y 0.000,Z 392.030,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04985
    LIN {X 810.581,Y 0.000,Z 389.534,A 0.000,B 0.000,C 180.000,E1 0.00000} C_DIS
    $VEL.CP = 0.04997
    END

  • Und ich sag mal, typisch um das Potential von Spline-Bewegungen auszunutzen......

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Hallo SJX,


    den Fehler hab ich auch begangen: Das ist eine Hoch-Runter Bewegung in der Z-Achse, erst die Verknüpfung mit der Zeitachse (X-Achse) lässt es wie die typische Sinusbewegung aussehen. Splines funktionieren erst in einer 2D-Bewegung

  • Moment hab ich das jetzt richtig verstanden du fährst eine einzelne Komponente hoch und runter und erwartest er soll am Umkehrpunkt nicht stehen bleiben? Und wie soll das ohne Nulldurchgang in der Geschwindigkeit funktionieren?


    Du fährst mit voller Geschwindigkeit in eine Richtung und willst ohne die Geschwindigkeit zu reduzieren sofort mit voller Geschwindigkeit in die 180 Grad entgegengesetzte Richtung. Da spielt die Physik nicht mit. Stell dir mal vor du machst das gleiche mit deinem Auto. Ich glaub da geht das auch nicht. warum soll ein Roboter dass dann können?


    Du kannst schon einen Sinus generieren musst dich wie du selber sagst dann aber mindestens 2D bewegen und dann ist wie oben schon gesagt ein Splineblock das beste Mittel der Wahl. Nur so gibst du ihm Weg über die er die Geschwindigkeit ab und dann wieder aufbauen kann. Der Überschleifalgorithmus ist auch so implementiert, dass je spitzer der Winkel zwischen zwei Geradenstücken ist desto weiter die Geschwindigkeit reduziert wird bis du bei 180 Grad schließlich ganz stehen bleiben musst.


    Theoretisch könnte man sich schon einen Überschleifalgorithmus schaffen, der sich den notwendigen Weg durch Überschwingen hinter den Zielpunkt verschafft. Das ist aber gefährlich. Da könnte ja eine Säule oder eine Wand sein. Der Roboter versucht daher immer aus Sicherheitsgründen innerhalb der konvexen Hülle definiert durch die programmierten Zielposen zu bleiben.

    4 Mal editiert, zuletzt von fubini ()

  • Das ist eine Hoch-Runter Bewegung in der Z-Achse, erst die Verknüpfung mit der Zeitachse (X-Achse) lässt es wie die typische Sinusbewegung aussehen. Splines funktionieren erst in einer 2D-Bewegung

    Wenn ich ihn richtig verstehe, will er einen "Plotter" imitieren.

    Roboter fährt auf einer Achse mit Stift hin und her. Zeitkonstante ist wie Blattvorschub.

    Abgezeichnet soll seine Sinuslinie entstehen.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • Hallo fubini,


    Der Roboter fährt hoch und runter, aber kriegt für jeden Punkt eine neue Geschwindigkeit, sodass er an den Wendepunkten die Geschwindigkeit 0m/s erfährt. Die Sicherheit habe ich durch einen "unsichtbaren Raum" gegeben, in dem sich der Roboter bewegen darf.

  • Hast du auch den $FILTER bei deinen theoretischen Überlegungen bedacht? Der reduziert dir die realisierte Beschleunigung nochmal kräftig. Außerdem sorgt er bei Genauhalt dafür, dass der Roboter Sollwertig genau für Filterzeit steht. Steht er also bei jedem Umkehrpunkt mehrere Sekunden wie du oben schreibst oder addiert sich das über die gesamte Bewegung zu mehreren Sekunden auf? Hast du schon mal die Gesamtzeitverlust gegenüber der Theorie durch die Anzahl der Umkehrpunkte geteilt? Kommt da in etwa Filterlänge raus?


    Generell würde mal ein Trace der realisierten Geschwindigkeiten und Beschleunigungen nicht schaden.


    Fubini

    Einmal editiert, zuletzt von fubini ()

  • Tatsächlich summiert sich die Standzeit an den Wendepunkten zu dem Gesamtzeitverlust auf. Die tatsächlichen Geschwindigkeiten und Beschleunigungen sollte ich mir wirklich mal genauer ansehen, das ist ein guter Punkt.

    Was ich eher komisch finde, was man auch bei dem Detailbild, das ich hochgeladen habe, sehen kann, ist, dass er schneller abbremst, als nach dem Wendepunkt wieder beschleunigt. Sollte nicht wenigstens das gleich bzw. symmetrisch sein?

  • nur hoch und runter?

    Dann wird das nie was. Oben und unten auf 0 bremsen. Das kostet eben Zeit.

    "Roboter sollen sich nicht bewegen wie Michel Jackson, sondern fließende Bewegungen machen, wie ein Walzertänzer..." hat mal ein bekannter Roboterprogrammierer gesagt...

    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.

  • $TOOL = {FRAME: X 0.000,Y 0.000,Z 200.000,A 180.000,B -90.000,C 0.000}
    ; --------------------------
    $APO.CPTP = 0.000
    $APO.CDIS = 0.000

    $APO.CDIS auf 0.0 ? Sicher nicht optimal zum Überschleifen von Punkten.

    $ACC.CP ? Beschreibst Du über "initmove", dann vermutlich 2.3, oder. Wie sieht die Sache bei 10. 0 aus?

    $LOAD ? Für optimales Verhalten sicher nicht förderlich, wenn Du mit "Default" fährst.

    Y = 0 Lässt Du ihn auch gleich noch durch die Handachssingularität tanzen ?

    Punktdichte und Speeddaten an den Wendepunkten ist aus Deinem Ausschnitt nicht ersichtlich.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

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