19. Januar 2019, 13:46:38
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Xmm auf der Bahn zurück fahren


normal_post Autor Thema: [offen] Xmm auf der Bahn zurück fahren  (Gelesen 4323 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

27. April 2018, 12:56:12
Gelesen 4323 mal
Offline

ManipulatorManipulierer


Hallo Leute,

ich stehe gerade etwas auf dem Schlauch: es gibt 2 Positionen p10 und p20, die irgendwo im Arbeitsbereich des Roboters geteacht sind. Der Roboter bewegt sich Linear von p10 nach p20. Wenn er p20 erreicht hat, soll er um einen bestimmten Weg in Richtung p10 zurück fahren.
wie bekomme ich das hin?!

Viele Grüße
Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung

Heute um 13:46:38
Antwort #1

Werbung

Gast

27. April 2018, 12:57:27
Antwort #1
Offline

padostms


Hallo!

Mit offset würde es gehen.
Satz nach p20 einfügen.
MoveL Offs(p10,10, 0,0), v100, z0, toxxxxx\WObj:=woxxxxx;

Wobei du schauen musst X,Y oder in Z richtung fahren musst.

MFG

Tamas
« Letzte Änderung: 27. April 2018, 13:00:29 von padostms »
  • gefällt mir    Danke

27. April 2018, 13:37:57
Antwort #2
Offline

ManipulatorManipulierer


:-) Ganz so einfach ist das nicht
Die X,Y oder Z-Richtung ist ja das Problem: in welche Richtung liegt denn P10?! Es wird irgendeine Mischung aus X,Y und Z sein, aber wie komme ich auf die Mischung?!

Gruß Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung

27. April 2018, 14:25:10
Antwort #3
Offline

padostms


Hallo!

Oja ist es einfach !Probieren im editor modus dann wieder auf die zeile springen.Habe auch so gemacht bei mir aber normaler weise laut koordinatensystem soll passen.
  • gefällt mir    Danke

27. April 2018, 14:56:18
Antwort #4
Offline

Robo_michl


Hallo!
ggf. mit Triggerbefehlen ...
hier lassen sich mm-Angaben machen!

VAR triggdata gunon;

...

TriggEquip gunon, 10, 0.1 \DOp:=gun, 1;

TriggL p1, v500, gunon, z50, gun1;
  • gefällt mir    Danke

Heute um 13:46:38
Antwort #5

Werbung

Gast

27. April 2018, 15:08:18
Antwort #5
Offline

padostms


Hallo!
Offset ist auch im mm.Wo deine Punkt befindet das kannst du schauen wenn du roboter händisch bewegst zum punk p20 oder dort hin wo du diese punkt haben willst, die diferenz zwischen p20 und neue punkt ist dein offset.
  • gefällt mir    Danke

27. April 2018, 15:15:13
Antwort #6
Offline

ManipulatorManipulierer


@Tamas: sorry, habe mich das wohn nicht deutlich genug ausgedrückt - ich möchte das nicht fix teachen. p10 und p20 heißen in Wirklichkeit pStart und pEnde und sind Übergabeparameter an eine Prozedur - heißt ich weiß aktuell noch nicht wo die später mal liegen. Daher brauch ich die Möglichkeit von pEnde 5mm zurück in Richtung pStart zu rechnen.
Das geht auch ganz sicher irgenwie mit den Vector-Berechnungen, aber ich bekomme es nicht auf die Reihe.

@Robi_michl: ja an so etwas in der Art habe ich auch schon gedacht (5mm vor erreichen der Zielposition einen Interrupt triggern und in der Traproutine die aktuelle Roboterposition auslesen, speichern und nach erreichen der Zielposition wieder zurück auf die gespeicherte Position fahren) - aber ganz Ehrlich: das muss auch rechnerisch gehen :-)

Viele Grüße
Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung

27. April 2018, 21:52:41
Antwort #7
Offline

Hermann


Alte Vektormathematik rauskramen: auf die Schnelle hinskizziert:
P10 invertieren (pose_inv, oder so ähnlich) und mit P20 multiplizieren (pose_mult, o.ä.) ergibt den Weg von P20 zu P10, dieses Ergebnis auf die 10mm normieren (also Wurzel aus x hoch 2 plus y hoch 2 plus z hoch 2 ist die Länge, dann X,Y und Z mit dem Verhältnis zu 10mm multiplizieren). Beim ersten Rechenschritt kann es auch sein, dass P10 und P20 getauscht sein müssen.
Klingt vielleicht etwas wirr, aber so ungefähr sollte es funktionieren.
  • gefällt mir    Danke

30. April 2018, 10:23:06
Antwort #8
Offline

Z750



Hi,
sollte so funktionieren ist aber natürlich ungetestet.
Bin mir aber nicht sicher bei der Deklaration von "TriggInt" die Variable zulässig ist. Wenns aber immer 5mm sein sollen dann kann man den Parameter für die Distanz auch weg lassen.

VAR intnum irStop;
VAR triggdata trigg1;

PROC myProcedure(VAR robtarget pStart,VAR robtarget pEnde,VAR NUM nDist)
    CONNECT irStop WITH trpStop;
    TriggInt trigg1,nDist \Start, irStop;

    MoveL pStart,v100,fine,tGripper;
    MoveL pEnde,v100,fine,tGripper;
    !X mm zurüch und Interrupt auslösen
    TriggL pStart,v100,trigg1,fine,tGripper;

    IDelete irStop;
ENDPROC

TRAP trpStop
    Stopmove;
ENDTRAP

Gruß Z
  • gefällt mir    Danke

Heute um 13:46:38
Antwort #9

Werbung

Gast

13. Mai 2018, 20:20:05
Antwort #9
Offline

ManipulatorManipulierer


Hi Leute,
sorry, habe jetzt erst bemerkt, dass meine letzte Antwort anscheinen nicht gespeichert wurde.
Für die mathematische Lösung bin ich anscheinen zu doof :-) egal wie ich die Rechnung umgestellt habe. Die berechnete Position lag nicht ansatzweise zwischen der Start- und Endposition :-/
Eine andere Lösung (Trigger, Interrupt, Suchfahrt und dergleichen) kommt für mich nicht un Frage - (würde ja nur zeigen, dass ich für die mathematische Lösung zu doof bin :-) )

Trotzdem Danke!
Gruß Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung

14. Mai 2018, 15:45:32
Antwort #10
Offline

Konstantin


Hallo Michael
Vielleicht geht Hermann vom gleichen Werkobjekt aus,
Gruß,
Konstantin
  • gefällt mir    Danke

14. Mai 2018, 22:15:52
Antwort #11
Offline

Hermann


Wen juckt's,  wenn's funktioniert?
Mir wäre das schon lieber als gar keine Lösung.
Im Prinzip heisst das, Du hast hier eine Frage gestellt, für die Du gar keine Antwort benötigst. So kann man seine Mitmenschen auch beschäftigen.

15. Mai 2018, 07:24:59
Antwort #12
Offline

ManipulatorManipulierer


Moin,
@Konstantin: die Positionen befinden sich im gleichen Werkobjekt
@Hermann: klar, richtig ist was am Ende geht und die Aufgabe erfüllt - ich würde aber schon gerne wissen wie ich es mathematisch lösen kann. Ob die Lösung letzten Endes wirklich zum Einsatz kommt sei mal dahingestellt, aktuell geht es darum für diesen Prozess verschiedene Szenarien am Ende der Bewegungsbahn auszuprobieren. Eines davon war eben das zurück Fahren um X-mm. Aktuell im Versuchs-Stadium habe ich das sogar mittels Trigger gelöst, sollte sich das als "die Lösung" herausstellen möchte ich das jedoch schon gerne berechnen.
Gruß Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung

Heute um 13:46:38
Antwort #13

Werbung

Gast

16. Mai 2018, 13:38:21
Antwort #13
Offline

Micky


Hallo,
ich habe mich einmal in der Berechnung der Position versucht und dabei folgenden Annahmen getroffen:
  • Alle Punkte liegen im gleichen Werkobjekt 
  • Alle Punkte werden mit dem gleichen Tool angefahren
  • Die Orientierung der beiden Punkte sind identisch bzw. muss nicht berücksichtigt werden

Die neue Position wird durche Verschiebung entlang des Richtungsvektors bezogen auf den Endpunkt berechnet.
Durch Verwendung einer positiven Distanz liegt der neue Punkt hinter dem Endpunkt und durch Verwendung einer negativen Distanz liegt der neue Punkt vor dem EndPunkt.

    Aufruf der Funktion:
    MoveL RelRtgVekt(p10,p20,-100),v1000,fine,tool0;
   
    FUNC robtarget RelRtgVekt(robtarget FromPoint, robtarget ToPoint, num Dist)
      VAR pos psDirection;
      VAR pos psDelta;
      VAR robtarget pNew;
      VAR num nLamda;      
      !Berechnung:  p3 = p2 - lamda * (p2-p1) 
      !mit Lamda = Dist/Länge des Richtungsvektors  
      !Richtungsvektor berechnen
      psDirection:= ToPoint.trans-FromPoint.trans;      
      !Skalierfaktor Lamda berechnen
      nLamda:=Dist/VectMagn(psDirection);      
      !Verschiebungskoordinaten berechnen
      psDelta:=nLamda*psDirection;
      !Neue Position berechnen
      pNew:=ToPoint;
      pNew.trans:=ToPoint.Trans+psDelta;

      RETURN pNew;
    ENDFUNC
Mfg
Micky
  • gefällt mir    Danke

18. Mai 2018, 13:27:18
Antwort #14
Offline

ManipulatorManipulierer


Hi Micky,
Du bis mein Held! :-)
Wenn man´s so sieht schaut es eigentlich ganz einfach aus - hatte mich da wohl an einer falschen Denkweise festgebissen...
Vielen Dank nochmals - so kann ich das bedenkenlos veröffentlichen :-)

Viele Grüße und ein schönes Pfingst-Wochenende
Michael
  • gefällt mir    Danke
Programmierung
Schulung
Wartung


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH