Forum: PC-Programmierung Theoretische Frage zur Positionierung im Raum


von Daniel K. (daniel_k80)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich weiß nicht ob das Thema in dieses Forum rein passt, aber ich probier 
es mal.

Ich schreibe mir gerade auf Basis von C# und Helix3D eine Anwendung, die 
ein Model eines Industrieroboters einließt und darstellt. Dieses Model 
will ich dann mit Hilfe von Slidern etc. um seine Achsen bewegen können 
(siehe Bild "Anwendung).
Jetzt möchte ich gerne das Koordinatenkreuz, welches man auf dem Bild 
sieht, bei einer Bewegung der Arme immer an der selben Stelle halten.
Dafür habe ich die Position im Raum bestimmt. Das sind die Koordinaten 
(25, -630, 1070). Für die neue Position benötige ich dann eine 
entsprechende Drehmatrix für die jeweilige Achse.
Wenn ich den Roboter also um seine Base drehen will, wäre das die 
z-Achse (gelber Pfeil), mit der Drehmatrix
Für die Drehung um die z-Achse klappt das schon wunderbar. Sobald ich 
den Roboterarm drehe, wandert das Koordinatenkreuz mit.
Wie mache ich das jetzt, wenn ich den Arm schwenke? Das wäre ja eine 
Rotation um die x-Achse (roter Pfeil).
Wenn ich da dann auch wieder die Drehmatrix aufstelle
und diese Matrix mit meinem, um einen bestimmten Winkel verschobenen 
Punkt, (25, -630, 1070) multipliziere, erhalte ich einen Punkt der an 
einer falschen Stelle liegt (siehe Bild "Falsche Position).
Wo steckt in der Überlegung der Fehler? In beiden Fällen ändere ich erst 
einmal nur eine Achse und nicht beide gleichzeitig.

Vielen Dank für die Hilfe!

: Bearbeitet durch User
von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Daniel K. schrieb:
> Jetzt möchte ich gerne das Koordinatenkreuz, welches man auf
> dem Bild sieht, bei einer Bewegung der Arme immer an der selben
> Stelle halten.

Relativ wozu?

von apr (Gast)


Lesenswert?

Johann L. schrieb:
> Relativ wozu?

Na zum Roboterkoordinatensystem (ROS nennt den base_link). :)


Zum Problem eine Linkliste:
https://en.wikipedia.org/wiki/Forward_kinematics
https://de.wikipedia.org/wiki/Denavit-Hartenberg-Transformation
https://en.wikipedia.org/wiki/Affine_transformation
https://en.wikipedia.org/wiki/Homogeneous_coordinates

PS: Dein TCP ist gewöhnungsbedürftig gedreht…

von Daniel K. (daniel_k80)


Lesenswert?

Hallo,

ja genau, die Koordinatenverschiebung ist relativ zur Basis und die 
Basis ist am Punkt 0, 0, 0.
Der TCP ist bisher so "Komisch" gedreht, da ich in der Transformation 
noch keine Koordinatentransformation rein gebracht habe, da ich erst 
einmal schauen wollte, dass das Koordinatensystem immer richtig 
ausgerichtet ist.
Ich bin gerade erst dabei die Koordinatentransformation zu 
verinnerlichen und diese kleine Spielerei soll bisschen dabei helfen ^.^
Die Links lese ich mir direkt mal durch und falls Fragen auftreten 
schreibe ich morgen noch mal was :)

von Daniel K. (daniel_k80)


Lesenswert?

Hallo zusammen,

ich habe mal einen Blick auf die Links geworfen und wenn ich es richtig 
verstanden habe, muss ich eine DH-Transformation für den Arm 
durchführen, sprich ich lege für jedes Gelenk eine Translations- und 
eine Rotationsmatrix fest?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.