Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
30. Juli 2010, 23:08:02
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: English and international Robotsupport now on Robot Forum. Also Supported by the Moderators of the roboterforum.de

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Stäubli Roboter (Moderator: titan72)  |  Thema: Frage zur Transformation 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Frage zur Transformation  (Gelesen 446 mal)
Roboman
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 389



« am: 29. Januar 2010, 14:17:30 »

Der Befehl
Code:
 pPickPos=compose(pReferenzPos,frTisch1,trKoordinaten)
bedeutet ja, daß der Position pPickPos die Koordinaten von pReferenzPos zugewiesen werden und das Frame um trKoordinaten verändert wird.
Gibt es zu compose ein Synonym das nicht die Koordinaten des Frames verschiebt/dreht sondern die des Tools?
Beispielsweise soll sich bei RZ+45 nicht das Frame um 45° drehen sondern der Greifer.
Oder muss ich dazu die Koordinaten einzeln zuweisen?
Gespeichert

-------------
Gruß
Roland
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 548


« Antworten #1 am: 29. Januar 2010, 15:40:25 »

Hallo,

hier lernt ja noch jemand Stäublisch  zwink

Bin auch seit etwa einem Jahr mit den Dingern befasst, komme allerdings von Mitsubishi und finde beide eigentlich sehr ähnlich.

Also compose brauche ich für solche Sachen sehr selten. Meistens komme ich mit simplen Multiplikationen aus.

Wenn man z.B. an einer Position pPunkt steht und von dort aus in Toolkoordinaten um pRelativ weiter will, schreibt man einfach pNeu = pPunkt * pRelativ. Das ist in beiden Sprachen gleich.

Deine Drehung sollte also irgendwie so gehen:

pNeu.trsf = pPunkt.trsf * { 0, 0, 0, 0, 0, 45.0 }


Hope that helps

  Urmel

Gespeichert
Roboman
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 389



« Antworten #2 am: 30. Januar 2010, 20:38:44 »

Stäublisch ist gut Mr. Green
Wenn ich es so mache wie von dir geschrieben, bekomme ich beim Anstarten des Programms
Code:
VAL3 Laufzeitfehler. Punkt basiert nicht auf einem Frame.
angezeigt.
Code:
  pPickPos.trsf=pReferenzPos.trsf*{nOffsetX,nOffsetY,0,0,0,nOffsetRZ}
  movej(appro(pPickPos,trApproZ),fStandart,mHighSpeed)
  movel(pPickPos,fStandart,mHighSpeed)
Mir ist nicht ganz klar wo/wie ich den frame angeben muss.
Bei der compose-Variante wird er ja bei der Transformation angegeben.
Gespeichert

-------------
Gruß
Roland
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 548


« Antworten #3 am: 31. Januar 2010, 10:04:08 »

Ok, du siehst, ich lerne auch noch.

Ich habe immer noch ein Problem mit dieser künstlichen Trennung in Point, Tool, Frame und Trsf. Bei Mitsubishi gibt es dafür nur einen Datentyp, die Bedeutung ergibt sich aus dem Kontext. Auch in der Mathematik sind die trsf erstmal nur Matrizen.

Aber zum Thema.

Geht es, wenn du vor deinen Dreizeiler noch ein
Code:
pPickPos = pReferenzPos
schreibst ?

Eine Position hat ja implizit ein Bezugskoordinatensystem. Das sollte dabei eigentlich mit übergeben werden.

Das ist auch der Knackpunkt an compose. Das braucht man eigentlich nur, wenn sich die Position, die transformiert wird, und die Transformation auf unterschiedliche Bezugskoordinatensysteme beziehen. D.h. das Ergebnis von compose übernimmt den frame des ersten Parameters, der zweite bildet nur den Bezug des dritten Parameters. So verstehe ich das jedenfalls. Sonst müsste man ja eine Formel mit allerlei +,* und ! Operationen schreiben, um beide trsf erstmal auf die selbe Basis zu bringen.

Grüße

  Urmel


Gespeichert
stgo
Neuling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 14


« Antworten #4 am: 31. Januar 2010, 10:59:28 »

Zitat
Gibt es zu compose ein Synonym das nicht die Koordinaten des Frames verschiebt/dreht sondern die des Tools?
Das wäre dann
Code:
point appro(point Position, trsf Transformation)
Der Fehler
Code:
VAL3 Laufzeitfehler. Punkt basiert nicht auf einem Frame.
kommt dann, wenn der Punkt z. B. kein Teachpunkt ist, sondern eine im Programm angelegte Variable. Man kann einem berechneten Punkt mit dem Befehl
Code:
trsf position(point Position, frame Koordinatensystem)
ein KS zuweisen. Also die Drehung um 45° sollte wie beschrieben mit dem * Operator oder auch so gehen:
Code:
movej(appro(pPickPos,{0,0,0,0,0,45}),ToolGripper,mdHighSpeed)
Der Punkt pPickPos muss natürlich einen Frame besitzen (Teachpunkt oder zuweisen im Programm). Der movej-Befehl erwartet nicht den Frame, sondern das Greifertool.
Gespeichert
Roboman
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 389



« Antworten #5 am: 31. Januar 2010, 12:05:13 »

Zitat
Der Fehler
Code:
VAL3 Laufzeitfehler. Punkt basiert nicht auf einem Frame.
kommt dann, wenn der Punkt z. B. kein Teachpunkt ist, sondern eine im Programm angelegte Variable.
Mahlzeit, es handelt sich schon um einen Teachpunkt.
Mit dem Vorschlag von Urmel klappt es jetzt. merci
Was für mich noch ein wenig gewöhnungsbedürfig ist, ist der *Operator.
Bei allen anderen Robotertypen die ich programmiere wird dafür der + oder - Operator verwendet.
Öfter mal was neues...sonst wird´s langweilig uglyhammer_2
Gespeichert

-------------
Gruß
Roland
Urmel
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 548


« Antworten #6 am: 31. Januar 2010, 12:24:50 »

Was für mich noch ein wenig gewöhnungsbedürfig ist, ist der *Operator.


Mathematisch betrachtet ist es eine Multiplikation. Entweder davon
http://de.wikipedia.org/wiki/Homogene_Koordinaten
oder (z.B. ABB) davon
http://de.wikipedia.org/wiki/Quaternionen

Da macht * schon Sinn, ist in C++ & Co ganz genauso ...

Grüße

  Urmel

Gespeichert
Roboman
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 389



« Antworten #7 am: 31. Januar 2010, 13:08:23 »

Ach du heiligs Blechle....das erspar ich mir lieber bzw. schiebe es solange es geht  icon_rofl
Gespeichert

-------------
Gruß
Roland
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  Stäubli Roboter (Moderator: titan72)  |  Thema: Frage zur Transformation « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
Prüfe XHTML 1.0 Prüfe CSS