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/26 23:55] – [Numerical Simulation - MatLab] ntorresreyes | 2_link_kinematics [2018/09/27 01:12] (current) – [Graphical Simulation] ntorresreyes | ||
---|---|---|---|
Line 232: | Line 232: | ||
JointAngles = [theta1 theta2] %joint angle vector | JointAngles = [theta1 theta2] %joint angle vector | ||
</ | </ | ||
+ | |||
+ | 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. | ||
\\ | \\ | ||
\\ | \\ | ||
- | In this case, the joint angles obtained | + | 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 | ||
+ | \\ | ||
+ | \\ | ||
+ | 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 | ||
+ | \\ | ||
+ | \\ | ||
+ | < | ||
+ | >> 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 ==== | ||
\\ | \\ | ||
- | TBA | + | 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.1538031355.txt.gz · Last modified: 2018/09/26 23:55 by ntorresreyes