Wie konvertiere ich Verbindungsparameter und Winkel (in der Kinematik) in Transformationsmatrizen in der Programmierlogik?

10

Ich mache als Student Robotikforschung und verstehe die konzeptionelle Mathematik größtenteils. Wenn es jedoch darum geht, Code zur Berechnung der Vorwärtskinematik für meinen Roboter tatsächlich zu implementieren, stecke ich fest. Ich verstehe einfach nicht, wie das Buch oder die Websites, die ich gefunden habe, es erklären.

Ich möchte das XYZ berechnen , die Verbindungsparameter gegebene Winkel (Denavit-Harte Parameter), wie beispielsweise die folgenden :

ichαich- -1einich- -1dichθich1000θ12- -9000θ230ein2d3θ34- -90ein3d4θ459000θ56- -9000θ6

Ich verstehe nicht, wie man diese Wertetabelle in die richtigen Transformationsmatrizen , die benötigt werden, um , die kartesische Position und die Drehung des letzten Links zu erhalten. Von dort aus hoffe ich, dass ich die XYZ-Winkel beim Lesen meines Buches herausfinden kann, aber jede Hilfe wäre willkommen.0T.N.

Anmut
quelle

Antworten:

6

Der DH Matrix- Abschnitt der DH-Seite auf Wikipedia enthält die Details.

Grundsätzlich möchten Sie die Informationen in Ihrer Tabelle verwenden, um eine Reihe homogener Transformationsmatrizen zu erstellen. Wir tun dies, weil homogene Transformationen multipliziert werden können, um die Beziehung zwischen Frames zu finden, die von einem oder mehreren anderen getrennt sind. Zum Beispiel repräsentiert 0 T 1 die Transformation von Frame 1 zu Frame 0, während 1 T 2 die Transformation von Frame 2 zu Frame 1 darstellt. Durch Multiplizieren erhalten wir die Transformation von Frame 2 zu Frame 0, dh 0 T 2 = 0 T. 1 1 T 2 .0T.11T.20T.2=0T.11T.2

Eine einfache Möglichkeit, jede der Transformationen zu erstellen, besteht darin, für jede Spalte in der Tabelle eine homogene Transformation oder eine homogene Rotationsmatrix zu erstellen und diese miteinander zu multiplizieren. Zum Beispiel ist die Transformation von 1 nach 0 (zB i - 1 T i , i = 1 )ich- -1T.ich,ich=1

0T.1=T.reinns(d1)R.Öt(θ1)T.reinns(ein2)R.Öt(α2)

wo

T.reinns(d1)=[10000100001d1=00001]],

R.Öt(θ1)=[cos(θ1)- -Sünde(θ1)00Sünde(θ1)cos(θ1)0000100001]],

T.reinns(ein2)=[100ein2=0010000100001]],

R.Öt(α2)=[10000cos(α2=0)- -Sünde(α2=0)00Sünde(α2=0)cos(α2=0)00001]]

In diesem Fall

0T.1=R.Öt(θ1)

Sobald Sie alle Ihre Transformationen haben, multiplizieren Sie sie zusammen, z

0T.N.=0T.11T.2...N.- -1T.N.

0T.N.d=[0T.N.,14,0T.N.,24,0T.N.,34]]T.0T.N.

DaemonMaker
quelle
Wäre alpha_2 nicht -90 Grad?
Grace