2_link_kinematics
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
2_link_kinematics [2018/09/27 00:08] – [Graphical Simulation] ntorresreyes | 2_link_kinematics [2018/09/27 01:12] (current) – [Graphical Simulation] ntorresreyes | ||
---|---|---|---|
Line 233: | Line 233: | ||
</ | </ | ||
- | In this case, the joint angles obtained for the first and second links are -1.1071 and 2.3005 radians respectively (or -63.4 and 131.8 degrees). The benefits of the analytical solution are rapid calculation times and precise answers. A plot for these position can be seen in the image below. | + | In this case, the joint angles obtained for the first and second links are -1.1071 and 2.3005 radians respectively (or -63.4 and 131.8 degrees). The benefits of the analytical solution are rapid calculation times and precise answers. |
\\ | \\ | ||
\\ | \\ | ||
- | {{: | + | As a sanity check, we can go back to the forward kinematics and apply the necessary transformations to calculate the position of the end-effector based on the joint angles obtained. For the above example: |
+ | \\ | ||
+ | \\ | ||
+ | < | ||
+ | >> | ||
+ | sin(theta1) | ||
+ | 0 0 1 0;... | ||
+ | 0 0 0 1]; | ||
+ | >> | ||
+ | 0 1 0 0;... | ||
+ | 0 0 1 0;... | ||
+ | 0 0 0 1]; | ||
+ | >> | ||
+ | sin(theta2) | ||
+ | 0 0 1 0;... | ||
+ | 0 0 0 1]; | ||
+ | >> | ||
+ | 0 1 0 0;... | ||
+ | 0 0 1 0;... | ||
+ | 0 0 0 1]; | ||
+ | |||
+ | >>T = Rotz1*Trans1*Rotz2*Trans2 | ||
+ | T = | ||
+ | 0.3685 | ||
+ | 0.9296 | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | The final transformation vector shows that the coordinates of the end of the 2nd link are indeed (2,1), which is what we wanted. | ||
+ | \\ | ||
+ | \\ | ||
+ | We can also use the forward kinematics to plot a simple graph that shows the 2-link arm positions. With the following code the intermediate and final transformation matrices can be obtained. | ||
+ | \\ | ||
+ | \\ | ||
+ | < | ||
+ | >> T_01 = Rotz1*Trans1 | ||
+ | T_01 = | ||
+ | 0.4472 | ||
+ | | ||
+ | | ||
+ | | ||
+ | >> T_02 = T_01*Rotz2*Trans2 | ||
+ | T_02 = | ||
+ | 0.3685 | ||
+ | 0.9296 | ||
+ | | ||
+ | | ||
+ | >> P = [0; | ||
+ | >> P1 = T_01*P; P2 = T_02*P; | ||
+ | >> plot([0 P1(1) P2(1)],[0 P1(2) P2(2)]); grid on; | ||
+ | </ | ||
+ | The resulting plot will look like the following: | ||
+ | \\ | ||
+ | \\ | ||
+ | {{: | ||
==== Graphical Simulation ==== | ==== Graphical Simulation ==== | ||
\\ | \\ | ||
- | Matlab can be used to produce a graphical simulation of the 2-link arm mechanism for a given angle. | + | Matlab can be used to produce a graphical simulation of the 2-link arm mechanism for a given angle. Many of these simulations are based on the [[http:// |
+ | \\ | ||
+ | \\ | ||
+ | The following code can be used to model a planar 2-link arm. Many of the functions behind the arm use the same theory and math covered previously in the tutorial. | ||
\\ | \\ | ||
\\ | \\ | ||
< | < | ||
+ | >> | ||
+ | >> | ||
</ | </ | ||
+ | Which results in the following image: | ||
+ | \\ | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
+ | \\ | ||
+ | Next, a translation can be made and inverse kinematics applied: | ||
+ | \\ | ||
+ | \\ | ||
+ | < | ||
+ | >> T = transl(1.5, | ||
+ | T = | ||
+ | 1.0000 | ||
+ | | ||
+ | | ||
+ | | ||
+ | >> q = p2.ikine(T,' | ||
+ | q = | ||
+ | | ||
+ | >> p2.plot(q) | ||
+ | </ | ||
+ | Which will plot the arm with the joint angles that will result in the end-effector having a position of (1.5, 0.5) | ||
+ | \\ | ||
+ | \\ | ||
+ | {{: | ||
+ | \\ | ||
\\ | \\ | ||
+ | By changing the T matrix with different values of transl(x, | ||
==== Final Words ==== | ==== Final Words ==== | ||
\\ | \\ | ||
- | TBA | + | Hopefully, the information presented in this tutorial is enough for the reader to gain a good understanding of the background, theory, and practical knowledge required to apply this to a 2-link planar robot arm and possibly a 3-link planar arm. |
\\ | \\ | ||
\\ | \\ |
2_link_kinematics.1538032098.txt.gz · Last modified: 2018/09/27 00:08 by ntorresreyes