Jak przekonwertować parametry łącza i kąty (w kinematyce) na macierze transformacji w logice programowania?

10

Prowadzę badania z zakresu robotyki jako licencjat i w większości rozumiem matematykę konceptualną; jednak jeśli chodzi o faktyczne wdrażanie kodu do obliczania kinematyki ruchu do przodu dla mojego robota, utknąłem. Po prostu nie rozumiem, w jaki sposób znaleziona książka lub strony internetowe to wyjaśniają.

Ja jak obliczyć XYZ kątów podane parametry łącza (parametry Denavita-Hartenberga), taki jak poniżej :

iαi1ai1diθi1000θ129000θ230a2d3θ3490a3d4θ459000θ569000θ6

Nie rozumiem, jak zmienić tę tabelę wartości w odpowiednie macierze transformacji potrzebne do uzyskania , pozycji kartezjańskiej i rotacji ostatniego linku. Stamtąd mam nadzieję, że uda mi się ustalić kąt (y) XYZ po przeczytaniu mojej książki, ale każda pomoc byłaby mile widziana.0TN

wdzięk
źródło

Odpowiedzi:

6

Sekcja DH Matrix strony DH na wikipedii zawiera szczegółowe informacje.

Zasadniczo chcesz wykorzystać informacje z tabeli, aby utworzyć zestaw jednorodnych macierzy transformacji. Robimy to, ponieważ homogeniczne transformacje można mnożyć, aby znaleźć relację między ramkami oddzielonymi przez jedną lub więcej innych. Na przykład reprezentuje transformację z klatki 1 do klatki 0, podczas gdy reprezentuje transformację z klatki 2 do klatki 1. Przez pomnożenie ich otrzymujemy transformację z klatki 2 do klatki 0, tj. .0T11T20T2=0T11T2

Łatwym sposobem utworzenia każdej z transformacji jest wykonanie jednorodnej transformacji lub jednorodnej macierzy obrotu dla każdej kolumny w tabeli i pomnożenie ich razem. Na przykład transformacja z 1 na 0 (np. ) wynosii1Ti,i=1

0T1=Trans(d1)Rot(θ1)Trans(a2)Rot(α2)

gdzie

Trans(d1)=[10000100001d1=00001],

Rot(θ1)=[cos(θ1)sin(θ1)00sin(θ1)cos(θ1)0000100001],

Trans(a2)=[100a2=0010000100001],

Rot(α2)=[10000cos(α2=0)sin(α2=0)00sin(α2=0)cos(α2=0)00001] .

W tym przypadku

0T1=Rot(θ1) .

Po zakończeniu wszystkich transformacji mnożymy je razem, np

0TN=0T11T2...N1TN .

Wreszcie możesz odczytać wektor przemieszczenia z jednorodnej transformacji (tj. ). Podobnie możesz odczytać macierz obrotu z aby znaleźć kąty XYZ.0TNd=[0TN,14,0TN,24,0TN,34]T0TN

DaemonMaker
źródło
Czy alpha_2 nie byłaby -90 stopni?
Grace,