17. Februar 2019, 15:51:02
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Winkel mit gesetztem TCP im Koordinatensystem anfahren?


normal_post Autor Thema:  Winkel mit gesetztem TCP im Koordinatensystem anfahren?  (Gelesen 1633 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

10. August 2009, 13:04:35
Gelesen 1633 mal
Offline

dreadek


Hallo liebe Community,

Ich habe ein Problem zum Roboter “MELFA Mitsubishi RV-3SB„ und zwar möchte ich in einem Koordinatensystem bestimmte Winkel um den TCP fahren. Das seltsame ist, dass es mit einer Achse funktioniert und auf anderen überhaupt nicht.

Wie gesagt habe ich einen festen Punkt (TCP) in meinem Koordinatensystem um diesem möchte ich horizontal und vertikal (falls möglich auch diagonal) bestimmte Winkel abfahren.

Bislang habe ich es so gemacht:

10 TOOL(+550,+10.00,+72.00,+0.00,+0.00,+0.00)   ‘festlegung des TCP
20 OVRD 10                              ‘ geschwindikeit limitiert
30 PREC ON                              ‘ präzision ein
40 M2 = 0                              ‘ variable 2 null gesetzt
50 MOV P1                              ‘ startposition anfahren
60 DLY 2                              ‘ warten
70 OPEN "COM3:" AS #1                     ‘ tcp/ip schnittstelle init
80 INPUT #1,M1                           ‘ einlesen in variable 1
90 SELECT M1                           ‘ fälle abgleichen
100 CASE 2
110   IF P_CURR.A >= -90 THEN               ‘ abgleich für vorzeichen
120   M2 = M2 - 0.5                        
130   PRINT #1,"Eingegeben: -0.5[°]";" ---> "
140   PRINT #1,"Aktueller Wert:";M2;"[°]";CR$
150   P5 = (,,,,+0.50)                     ‘ positionsvariable
160   P6 = P_CURR                        ‘ aktuelle pos
170   P7 = P6 / P5                        ‘ paktuell – p5
180   MOV P7
190   ELSE
200   M2 = M2 - 0.5
210   PRINT #1,"Eingegeben: -0.5[°]";" ---> "
220   PRINT #1,"Aktueller Wert:";M2;"[°]"
230   P5 = (,,,,+0.50)
240   P6 = P_CURR
250   P7 = P6 * P5
260   MOV P7
270  ENDIF
280 BREAK
 
Dies funktioniert auch sehr gut für das abfahren auf einem Kreisbogen auf einer Achse. Allerdings möchte ich nun wie bereits erwähnt  nicht nur horizontal sondern vertikal den Arm bewegen können.

Theoretisch müsste ich dazu doch „nur“ die Positionsvariable P5 wie folgt definieren

P5 = (0,0,0,0,0,0.5) da ja (x,y,z,a,b,c) gilt oder?

Wenn ich dies ändere, passiert leider herzlich wenig aber warum?

Wenn ich manuell also im teach-modus „TOOL“ die verschiedenen Achsen abfahre ist für die horizontale B und für die vertikale C zu verändern.

Auch würde ich gern eine diagonal die Winkel abfahren dazu sollte ich doch einfach beide Werte für B und C erhöhen bzw. verringern z.B.

P5 = (0,0,0,0,0.5,0.5)


Vielen Dank im voraus

Grüße

dreadek
  • gefällt mir    Danke

Heute um 15:51:02
Antwort #1

Werbung

Gast

Heute um 15:51:02
Antwort #1

Werbung

Gast

10. August 2009, 17:59:00
Antwort #1
Offline

Urmel

Global Moderator
Hallo,

also ich habe gewisse Schwierigkeiten damit zu verstehen, was das Programm eigentlich für Bewegungen macht.

P_CURR * (,,,,+0.50) ist wenn ich die Kommas richtig zähle, eine Rotation um die Tool Y-Achse. (Man könnte ja vielleicht mal P5.B = 0.50 schreiben, dann sieht man wenigstens welcher Winkel da gesetzt wird, ohne das man die Kommas zählen muss.)

Aber P_CURR / (,,,,+0.50) ist doch das gleiche wie P_CURR * INV((,,,,+0.50)) oder  :denk:
Ist das jetzt eine andere Bewegung als P_CURR * (,,,,-0.50) ?  :kopfkratz:

Und allgemein P_CURR * (,,,,0.50,0.50) bedeutet: Er nimmt die aktuelle Position als Basiskoordinatensystem, dreht es um dessen Z-Achse und dann das resultierende System um dessen Y-Achse.  :denk:

Etwas verwirrte Grüße  :zwink:

  Urmel


« Letzte Änderung: 10. August 2009, 18:02:46 von Urmel »
  • gefällt mir    Danke

11. August 2009, 09:03:04
Antwort #2
Offline

dreadek


hmm das mit P5.B=0.5 ist ne gute idee werd sie gleich mal ausprobieren.

naja P_CURR*P5 ist ja die konvertierte bewegung in positive richtung auf der achse und P_CURR/P5 die negative... soweit ich das skript richtig verstanden habe =)

wenn ich nun ein simples koordinaten system habe und den arm nicht nur auf der x und y achse verschieben wollte sondern z.b. y=x (diagonal) wie müsste ich es den programmieren?  :-|

hier eine kleine skizze die nur eine achse darstellt:

ca46b456ee6251c49753e51dfb538cd3


danke und grüße

---------------------------- aktualisierung ^^

hmm das mit P5.B = 5 klappt zwar, daraufhin steht allerdings in P5 wenn ich es ausgeben lasse:

P5=(0,0,0,0,286,0,0,0) mit

P6=(0,0,0,0,0,0)
P7=P6+P5

kann es sein, dass es ein Problem mit der winkelumrechnung sein könnte?  :huh:

gekoppelt mit der fehlermeldung "illegal position data (dstn)" könnte daran liegen, dass der wert/winkel zu groß ist für die reichweite... aber warum ist 5 nicht gleich 5 ^^

-----------------------------------------------------------------

sooo habs endlich hinbekommen...

leider hat das mit der eleganteren Lösung P5.B=x nicht geklappt... da leider der wert immer falsch in die positionsvariable reingeschrieben wurde...

aber um ehrlich zu sein weiss ich nicht, was ich nun anders gemacht habe als bei dem vorläuferprogramm.... manchmal ists dann doch besser alles neu zu machen =)

vielen dank aber für die anregung!

grüße

dreadek  :roll:
« Letzte Änderung: 11. August 2009, 12:26:02 von dreadek »
  • gefällt mir    Danke


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