AKADEMIA GÓRNICZO - HUTNICZA im. Stanisława Staszica w Krakowie |
|
||
Wydział: Inżynierii Mechanicznej i Robotyki |
|
||
PODSTAWY ROBOTYKI |
|||
Prowadzący: dr inż. Tomasz Buratowski |
|||
Student: Łukasz Kafel |
Kierunek: Mechatronika |
Ocena: |
|
|
Grupa: 25 |
|
|
|
Numer indeksu: 215426 |
|
PROJEKT
Poniżej na schematach przedstawiono 5 manipulatorów dla których policzono liczbę stopni sfobody, ruchliwość oraz manewrowość.
Zaproponowane struktury kinematyczne posiadają otwarty łańcuch kinematyczny, a poszczególne elementy są połączone ze sobą przegubami V klasy obrotowymi lub przesuwnymi możliwe jest wobec tego zastosowanie do poniższych struktur notacji Denavita Hartenberga.
1 Manipulator
Liczbę stopni swobody obliczymy z następującego wzoru:
Gdzie:
w - liczba stopni swobody
n - liczba członów ruchomych
pi - liczba połączeń i-tej klasy
Dla pierwszego manipulatora mamy:
Liczba stopni swobody
Ruchliwość naszego manipulatora jest równa liczba stopni swobody
Aby manipulator spełniał swoje zadania konieczne jest zastosowanie 6 napędów w przegubach
Manewrowość
Unieruchomienie w przestrzeni końcówki manipulatora uniemożliwi ruch względny członów pośrednich, stąd manewrowość równa jest 0
2 Manipulator
Dla drugiego manipulatora podobnie mamy:
Liczba stopni swobody
Aby manipulator spełniał swoje zadania konieczne jest zastosowanie 6 napędów w przegubach
Manewrowość
Przy unieruchomieniu w przestrzeni końcówki manipulatora będzie możliwy ruch względny w 4 przegubach.
3 Manipulator
Dla trzeciego manipulatora mamy:
Liczba stopni swobody
Aby manipulator spełniał swoje zadania konieczne jest zastosowanie 7 napędów w przegubach
Manewrowość
Przy unieruchomieniu w przestrzeni końcówki manipulatora będzie możliwy ruch względny w 5 przegubach.
4 Manipulator
Dla czwartego manipulatora mamy:
Liczba stopni swobody
Aby manipulator spełniał swoje zadania konieczne jest zastosowanie 6 napędów w przegubach
Manewrowość
Przy unieruchomieniu w przestrzeni końcówki manipulatora będzie możliwy ruch względny w 5 przegubach.
5 Manipulator
Dla piątego manipulatora mamy:
Liczba stopni swobody
Aby manipulator spełniał swoje zadania konieczne jest zastosowanie 6 napędów w przegubach
Manewrowość
Unieruchomienie w przestrzeni końcówki manipulatora uniemożliwi ruch względny członów pośrednich, stąd manewrowość równa jest 0.
Poniżej przedstawiono zakresy ruchów manipulatorów
1 Manipulator
2 Manipulator
3 Manipulator
5 Manipulator
4 Manipulator
Kinematyka prosta
1. Parametry kinematyczne dla pierwszego manipulatora
układ |
Θi |
di |
ai |
αi |
1 |
Θ1var |
d1 (100) |
0 |
0 |
2 |
0 |
d2var |
a2(100) |
0 |
3 |
900 |
0 |
0 |
900 |
4 |
0 |
d4var |
0 |
-900 |
5 |
0 |
d5 (200) |
0 |
0 |
6 |
900 |
0 |
0 |
900 |
7 |
90+ Θ7var |
0 |
a7(100) |
0 |
8 |
0 |
0 |
0 |
-900 |
9 |
Θ9var |
d9 (500) |
0 |
0 |
10 |
900 |
0 |
0 |
900 |
11 |
Θ11var |
0 |
0 |
0 |
12 |
900 |
0 |
a12(200) |
0 |
Wartości obliczone analitycznie
Wartości obliczone w programie MAPLE (kod)
> restart;
> with(linalg);
> Rot[z, theta[1]] := matrix(4, 4, [cos(theta[1]), -sin(theta[1]), 0, 0, sin(theta[1]), cos(theta[1]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[1]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[1], 0, 0, 0, 1]);
> A[1] := multiply(Rot[z, theta[1]], Trans[z, d[1]]);
> Trans[z, d[2]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[2], 0, 0, 0, 1]);
> Trans[x, d[2]] := matrix(4, 4, [1, 0, 0, d[2], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[2] := multiply(Trans[z, d[2]], Trans[x, d[2]]);
> Rot[z, theta[3]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[3]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[3] := multiply(Rot[z, theta[3]], Rot[x, theta[3]]);
> Trans[z, d[4]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[4], 0, 0, 0, 1]);
> Rot[x, theta[4]] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> A[4] := multiply(Trans[z, d[4]], Rot[x, theta[4]]);
> A[5] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[5], 0, 0, 0, 1]);
> Rot[z, theta[6]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[6]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[6] := multiply(Rot[z, theta[6]], Rot[x, theta[6]]);
> Rot[z, theta[7]] := matrix(4, 4, [cos(theta[7]+(1/2)*Pi), -sin(theta[7]+(1/2)*Pi), 0, 0, sin(theta[7]+(1/2)*Pi), cos(theta[7]+(1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[7]] := matrix(4, 4, [1, 0, 0, d[7], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[7] := multiply(Rot[z, theta[7]], Trans[x, d[7]]);
> A[8] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> Rot[z, theta[9]] := matrix(4, 4, [cos(theta[9]), -sin(theta[9]), 0, 0, sin(theta[9]), cos(theta[9]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[9]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[9], 0, 0, 0, 1]);
> A[9] := multiply(Rot[z, theta[9]], Trans[z, d[9]]);
> Rot[z, theta[10]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[10]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[10] := multiply(Rot[z, theta[10]], Rot[x, theta[10]]);
> A[11] := matrix(4, 4, [cos(theta[11]), -sin(theta[11]), 0, 0, sin(theta[11]), cos(theta[11]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[z, theta[12]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[12]] := matrix(4, 4, [1, 0, 0, d[12], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[12] := multiply(Rot[z, theta[12]], Trans[x, d[12]]);
> T[12, 0] := map(combine, multiply(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10], A[12], A[12]));
2. Parametry kinematyczne dla drugiego manipulatora
układ |
Θi |
di |
ai |
αi |
1 |
Θ1var |
d1 (500) |
0 |
-900 |
2 |
Θ2var |
0 |
a2(500) |
0 |
3 |
Θ3var |
0 |
a3(500) |
0 |
4 |
-900 |
0 |
0 |
900 |
5 |
Θ5var |
d5 (250) |
0 |
0 |
6 |
0 |
0 |
0 |
900 |
7 |
Θ7var |
0 |
0 |
0 |
8 |
900 |
0 |
0 |
-900 |
9 |
0 |
d9 (50) |
0 |
0 |
10 |
0 |
d10var |
0 |
0 |
11 |
0 |
d11 (200) |
0 |
0 |
Wartości obliczone analitycznie
Wartości obliczone w programie MAPLE (kod)
> restart;
> with(linalg);
> Rot[z, theta[1]] := matrix(4, 4, [cos(theta[1]), -sin(theta[1]), 0, 0, sin(theta[1]), cos(theta[1]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[1]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[1], 0, 0, 0, 1]);
> Rot[x, theta[1]] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> A[1] := multiply(Rot[z, theta[1]], Trans[z, d[1]], Rot[x, theta[1]])
> Rot[z, theta[2]] := matrix(4, 4, [cos(theta[2]), -sin(theta[2]), 0, 0, sin(theta[2]), cos(theta[2]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[2]] := matrix(4, 4, [1, 0, 0, d[2], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[2] := multiply(Rot[z, theta[2]], Trans[x, d[2]]);
> Rot[z, theta[3]] := matrix(4, 4, [cos(theta[3]), -sin(theta[3]), 0, 0, sin(theta[3]), cos(theta[3]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[3]] := matrix(4, 4, [1, 0, 0, d[3], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[3] := multiply(Rot[z, theta[3]], Trans[x, d[3]]);
> Rot[z, theta[4]] := matrix(4, 4, [cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[4]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[4] := multiply(Rot[z, theta[4]], Rot[x, theta[4]]);
> Rot[z, theta[5]] := matrix(4, 4, [cos(theta[5]), -sin(theta[5]), 0, 0, sin(theta[5]), cos(theta[5]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[5]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[5], 0, 0, 0, 1]);
> A[5] := multiply(Rot[z, theta[5]], Trans[z, d[5]]);
> A[6] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[7] := matrix(4, 4, [cos(theta[7]), -sin(theta[7]), 0, 0, sin(theta[7]), cos(theta[7]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[z, theta[8]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[8]] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> A[8] := multiply(Rot[z, theta[8]], Rot[x, theta[8]]);
> A[9] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[9], 0, 0, 0, 1]);
> A[10] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[10], 0, 0, 0, 1]);
> A[11] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[11], 0, 0, 0, 1]);
> T[11, 0] := map(combine, multiply(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10], A[11]));
3 Parametry kinematyczne trzeciego manipulatora
układ |
Θi |
di |
ai |
αi |
1 |
0 |
d1 (100) |
0 |
0 |
2 |
0 |
d2var |
a2(50) |
0 |
3 |
900 |
0 |
0 |
900 |
4 |
0 |
d4var |
0 |
0 |
5 |
900 |
0 |
a5(100) |
0 |
6 |
Θ6var |
0 |
0 |
0 |
7 |
900 |
0 |
0 |
900 |
8 |
0 |
d8 (50) |
0 |
-900 |
9 |
900 |
d9var |
a9(200) |
0 |
10 |
0 |
0 |
0 |
900 |
11 |
Θ11var |
0 |
a11(200) |
0 |
12 |
Θ12var |
0 |
a12(200) |
0 |
13 |
900 |
0 |
0 |
900 |
14 |
Θ14var |
d14(100) |
0 |
0 |
Obliczenia analityczne
Obliczenia numeryczne
> A[1] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[1], 0, 0, 0, 1]);
> Trans[z, d[2]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[2], 0, 0, 0, 1]);
> Trans[x, d[2]] := matrix(4, 4, [1, 0, 0, d[2], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[2] := multiply(Trans[z, d[2]], Trans[x, d[2]]);
> Rot[z, theta[3]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[3]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[3] := multiply(Rot[z, theta[3]], Rot[x, theta[3]]);
> A[4] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[4], 0, 0, 0, 1]);
> Rot[z, theta[5]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[5]] := matrix(4, 4, [1, 0, 0, d[5], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[5] := multiply(Rot[z, theta[5]], Trans[x, d[5]]);
> A[6] := matrix(4, 4, [cos(theta[6]), -sin(theta[6]), 0, 0, sin(theta[6]), cos(theta[6]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[z, theta[7]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[7]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[7] := multiply(Rot[z, theta[7]], Rot[x, theta[7]]);
> Trans[z, d[8]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[8], 0, 0, 0, 1]);
> Rot[x, theta[7]] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> A[8] := multiply(Trans[z, d[8]], Rot[x, theta[7]]);
> Rot[z, theta[9]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[9]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[9], 0, 0, 0, 1]);
> Trans[x, d[9]] := matrix(4, 4, [1, 0, 0, d[9], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[9] := multiply(Rot[z, theta[9]], Trans[z, d[9]], Trans[x, d[9]]);
> A[10] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> Rot[z, theta[11]] := matrix(4, 4, [cos(theta[11]), -sin(theta[11]), 0, 0, sin(theta[11]), cos(theta[11]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[11]] := matrix(4, 4, [1, 0, 0, d[11], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[11] := multiply(Rot[z, theta[11]], Trans[x, d[11]]);
> Rot[z, theta[12]] := matrix(4, 4, [cos(theta[12]), -sin(theta[12]), 0, 0, sin(theta[12]), cos(theta[12]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[12]] := matrix(4, 4, [1, 0, 0, d[12], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[12] := multiply(Rot[z, theta[12]], Trans[x, d[12]]);
> Rot[z, theta[13]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[13]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[13] := multiply(Rot[z, theta[13]], Rot[x, theta[13]]);
> Rot[z, theta[14]] := matrix(4, 4, [cos(theta[14]), -sin(theta[14]), 0, 0, sin(theta[14]), cos(theta[14]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[14]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[1], 0, 0, 0, 1]);
> A[14] := multiply(Rot[z, theta[14]], Trans[z, d[14]]);
> T[14, 0] := map(combine, multiply(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10], A[12], A[12], A[13], A[14]));
4 Parametry kinematyczne czwartego manipulatora
układ |
Θi |
di |
ai |
αi |
1 |
Θ1var |
d1 (100) |
0 |
0 |
2 |
0 |
d2var |
0 |
0 |
3 |
0 |
0 |
a3(200) |
900 |
4 |
Θ4var+450 |
0 |
a4(100) |
0 |
5 |
900 |
0 |
0 |
900 |
6 |
0 |
d6var |
0 |
0 |
7 |
0 |
0 |
a7(200) |
900 |
8 |
Θ8var-450 |
0 |
a8(500) |
0 |
9 |
Θ9var+450 |
0 |
a9(250) |
0 |
Obliczenia analityczne
Obliczenia numeryczne
> restart;
> with(linalg);
> Rot[z, theta[1]] := matrix(4, 4, [cos(theta[1]), -sin(theta[1]), 0, 0, sin(theta[1]), cos(theta[1]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[1]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[1], 0, 0, 0, 1]);
> A[1] := multiply(Rot[z, theta[1]], Trans[z, d[1]]);
> A[2] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[2], 0, 0, 0, 1]);
> Trans[x, d[3]] := matrix(4, 4, [1, 0, 0, d[3], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[3]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[3] := multiply(Trans[x, d[3]], Rot[x, theta[3]]);
> Rot[z, theta[4]] := matrix(4, 4, [cos(theta[4]+(1/4)*pi), -sin(theta[4]+(1/4)*pi), 0, 0, sin(theta[4]+(1/4)*pi), cos(theta[4]+(1/4)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[4]] := matrix(4, 4, [1, 0, 0, d[4], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[4] := multiply(Rot[z, theta[4]], Trans[x, d[4]]);
> Rot[z, theta[5]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[5]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[5] := multiply(Rot[z, theta[5]], Rot[x, theta[5]]);
> A[6] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[6], 0, 0, 0, 1]);
> Trans[x, d[7]] := matrix(4, 4, [1, 0, 0, d[7], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[7]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[7] := multiply(Trans[x, d[7]], Rot[x, theta[7]]);
> Rot[z, theta[8]] := matrix(4, 4, [cos(theta[8]-(1/4)*pi), -sin(theta[8]-(1/4)*pi), 0, 0, sin(theta[8]-(1/4)*pi), cos(theta[8]-(1/4)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[8]] := matrix(4, 4, [1, 0, 0, d[8], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[8] := multiply(Rot[z, theta[8]], Trans[x, d[8]]);
> Rot[z, theta[9]] := matrix(4, 4, [cos(theta[8]+(1/4)*pi), -sin(theta[8]+(1/4)*pi), 0, 0, sin(theta[8]+(1/4)*pi), cos(theta[8]+(1/4)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[9]] := matrix(4, 4, [1, 0, 0, d[9], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[9] := multiply(Rot[z, theta[8]], Trans[x, d[9]]);
> T[9, 0] := map(combine, multiply(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9]));
5 Parametry kinematyczne piątego manipulatora
układ |
Θi |
di |
ai |
αi |
1 |
Θ1var |
0 |
a1(500) |
0 |
2 |
Θ2var+450 |
0 |
a2(500) |
0 |
3 |
Θ3var+900 |
0 |
a3(100) |
0 |
4 |
-900 |
0 |
0 |
-900 |
5 |
0 |
d5var |
0 |
0 |
6 |
1800 |
d6 (200) |
a6(25) |
0 |
7 |
Θ7var |
d7 (150) |
0 |
0 |
8 |
900 |
0 |
0 |
900 |
9 |
Θ9var+900 |
0 |
a9(200) |
0 |
Obliczenia analityczne
Obliczenia numeryczne
> restart;
> with(linalg);
> Rot[z, theta[1]] := matrix(4, 4, [cos(theta[1]), -sin(theta[1]), 0, 0, sin(theta[1]), cos(theta[1]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[1]] := matrix(4, 4, [1, 0, 0, d[1], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[1] := multiply(Rot[z, theta[1]], Trans[x, d[1]]);
> Rot[z, theta[2]] := matrix(4, 4, [cos(theta[2]+(1/4)*pi), -sin(theta[2]+(1/4)*pi), 0, 0, sin(theta[2]+(1/4)*pi), cos(theta[2]+(1/4)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[2]] := matrix(4, 4, [1, 0, 0, d[2], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[2] := multiply(Rot[z, theta[2]], Trans[x, d[2]]);
> Rot[z, theta[3]] := matrix(4, 4, [cos(theta[3]+(1/2)*pi), -sin(theta[3]+(1/2)*pi), 0, 0, sin(theta[3]+(1/2)*pi), cos(theta[3]+(1/2)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[3]] := matrix(4, 4, [1, 0, 0, d[3], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[3] := multiply(Rot[z, theta[3]], Trans[x, d[3]]);
> Rot[z, theta[4]] := matrix(4, 4, [cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[4]] := matrix(4, 4, [1, 0, 0, 0, 0, cos(-(1/2)*Pi), -sin(-(1/2)*Pi), 0, 0, sin(-(1/2)*Pi), cos(-(1/2)*Pi), 0, 0, 0, 0, 1]);
> A[4] := multiply(Rot[z, theta[4]], Rot[x, theta[4]]);
> A[5] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[5], 0, 0, 0, 1]);
> Rot[z, theta[6]] := matrix(4, 4, [cos(pi), -sin(pi), 0, 0, sin(pi), cos(pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[6]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[6], 0, 0, 0, 1]);
> Trans[x, d[6]] := matrix(4, 4, [1, 0, 0, d[6], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[6] := multiply(Rot[z, theta[6]], Trans[z, d[6]], Trans[x, d[6]]);
> Rot[z, theta[7]] := matrix(4, 4, [cos(theta[7]), -sin(theta[7]), 0, 0, sin(theta[7]), cos(theta[7]), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[z, d[7]] := matrix(4, 4, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, d[7], 0, 0, 0, 1]);
> A[7] := multiply(Rot[z, theta[7]], Trans[z, d[7]]);
> Rot[z, theta[8]] := matrix(4, 4, [cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Rot[x, theta[8]] := matrix(4, 4, [1, 0, 0, 0, 0, cos((1/2)*Pi), -sin((1/2)*Pi), 0, 0, sin((1/2)*Pi), cos((1/2)*Pi), 0, 0, 0, 0, 1]);
> A[8] := multiply(Rot[z, theta[8]], Rot[x, theta[8]]);
> Rot[z, theta[9]] := matrix(4, 4, [cos(theta[9]+(1/2)*pi), -sin(theta[9]+(1/2)*pi), 0, 0, sin(theta[9]+(1/2)*pi), cos(theta[9]+(1/2)*pi), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> Trans[x, d[9]] := matrix(4, 4, [1, 0, 0, d[9], 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
> A[9] := multiply(Rot[z, theta[9]], Trans[x, d[9]]);
> T[9, 0] := map(combine, multiply(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9]));
27