User Tools

Site Tools


2_link_kinematics

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
2_link_kinematics [2018/09/27 00:01] – [Numerical Simulation - MatLab] ntorresreyes2_link_kinematics [2018/09/27 01:12] (current) – [Graphical Simulation] ntorresreyes
Line 233: Line 233:
 </code> </code>
  
-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.
 \\ \\
 \\ \\
-{{:torres:tutorials:2_link_tutorial_20.png?nolink&450|}}+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: 
 +\\ 
 +\\ 
 +<code> 
 +>>Rotz1 = [cos(theta1) -sin(theta1) 0 0;... 
 +          sin(theta1)  cos(theta1) 0 0;... 
 +          0 0 1 0;... 
 +          0 0 0 1]; 
 +>>Trans1 = [1 0 0 L1;... 
 +           0 1 0 0;... 
 +           0 0 1 0;... 
 +           0 0 0 1]; 
 +>>Rotz2 = [cos(theta2) -sin(theta2) 0 0;... 
 +          sin(theta2)  cos(theta2) 0 0;... 
 +          0 0 1 0;... 
 +          0 0 0 1]; 
 +>>Trans2 = [1 0 0 L2;... 
 +           0 1 0 0;... 
 +           0 0 1 0;... 
 +           0 0 0 1]; 
 + 
 +>>T = Rotz1*Trans1*Rotz2*Trans2 
 +T = 
 +    0.3685   -0.9296            2.0000 
 +    0.9296    0.3685            1.0000 
 +                    1.0000         0 
 +                            1.0000   
 +</code>   
 +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. 
 +\\ 
 +\\ 
 +<code> 
 +>> T_01 = Rotz1*Trans1 
 +T_01 = 
 +    0.4472    0.8944            0.8944 
 +   -0.8944    0.4472           -1.7889 
 +                    1.0000         0 
 +                            1.0000 
 +>> T_02 = T_01*Rotz2*Trans2 
 +T_02 = 
 +    0.3685   -0.9296            2.0000 
 +    0.9296    0.3685            1.0000 
 +                    1.0000         0 
 +                            1.0000 
 +>> P = [0;0;0;1]; 
 +>> P1 = T_01*P; P2 = T_02*P; 
 +>> plot([0 P1(1) P2(1)],[0 P1(2) P2(2)]); grid on; 
 +</code> 
 +The resulting plot will look like the following: 
 +\\ 
 +\\ 
 +{{:torres:tutorials:2_link_tutorial_21.png?nolink&450|}}
 ==== 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://petercorke.com/wordpress/toolboxes/robotics-toolbox|Robotics Toolbox]] created by Peter Corke for Matlab. The link contains information on how to download the toolbox and install into Matlab. The [[https://robotacademy.net.au/masterclass/inverse-kinematics-and-robot-motion/?lesson=256|Robot Academy]] also has resources on using the Robotics Toolbox for inverse kinematics. 
 +\\ 
 +\\ 
 +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. 
 +\\ 
 +\\ 
 +<code> 
 +>>mdl_planar2 
 +>>p2.plot(qz) 
 +</code> 
 +Which results in the following image: 
 +\\ 
 +\\ 
 +{{:torres:tutorials:2_link_tutorial_22.png?nolink&450|}} 
 +\\ 
 +\\ 
 +Next, a translation can be made and inverse kinematics applied: 
 +\\ 
 +\\ 
 +<code> 
 +>> T = transl(1.5,0.5,0) 
 +T = 
 +    1.0000                    1.5000 
 +            1.0000            0.5000 
 +                    1.0000         0 
 +                            1.0000 
 +>> q = p2.ikine(T,'mask',[1 1 0 0 0 0]) 
 +q = 
 +   -0.3373    1.3181 
 +>> p2.plot(q) 
 +</code> 
 +Which will plot the arm with the joint angles that will result in the end-effector having a position of (1.5, 0.5) 
 +\\ 
 +\\ 
 +{{:torres:tutorials:2_link_tutorial_23.png?nolink&450|}} 
 +\\
 \\ \\
 +By changing the T matrix with different values of transl(x,y,0), and using the inverse kinematic function, one can obtain the joint angle values for any possible position and simulate them graphically in the easiest way possible.
 ==== 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.1538031672.txt.gz · Last modified: 2018/09/27 00:01 by ntorresreyes