Objective:
• A program in Matlab to simulate the forward kinematics of a 2R Robotic Arm.
Code:
%Inputs
l1 = 1;
l2 = 0.5;
theta1 = linspace(0,90,10);
theta2 = linspace(0,90,10);
ct=1
for i = 1:length(theta1)
THETA1 = theta1(i);
for j = 1:length(theta2)
THETA2 = theta2(j);
x0 = 0;
y0 = 0;
x1 = l1*cosd(THETA1);
y1 = l1*sind(THETA1);
x2 = x1 + l2*cosd(THETA2);
y2 = y1 + l2*sind(THETA2);
%plotting
plot([x0 x1],[y0 y1],[x1 x2],[y1 y2],'linewidth',3)
axis([-0.1 1.5 0 1.5])
pause(0.03)
M(ct) = getframe(gcf)
ct = ct+1;
end
end
movie(M)
videofile = VideoWriter('Forward_Kinematics.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
Code Explanation:
To simulate the foeward kinematics of a 2R Robotic Arm, it is very important to assume the value of inputs.In the first part of the program the length of link 1&2 assume as 1&0.5 (in meter) by the command link1 & link2 respectively.
Similarly, the value of theta1&2 has taken in between 0 to 90,with 10 divisons with the command linspace(0,90,10).
Afterthat, the nested for loop is taken to get all the respected position of the second link or manipulator according to changing value of theta1&2. i = 1:length(theta1),this command indicating the length of theta1 which is 10 and it states as i=1:10,similarly for the pointer j it rpresents the length of theta 2.
Next the cordinates has taken to calculate the position of of link1 & link2.
the command ct is used for counter variable and getframe is used to capture each diagram and help to create a movie with command M(ct).
Lastly, to create a video file of the animation,we used the standarise command as
movie(M)
videofile = VideoWriter('Forward_Kinematics.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
LINK:
Google drive link fot the Animation:
https://drive.google.com/file/d/1KPjJ7q0srSBYDVUG35fCRDCA9Uwcc_qY/view?usp=sharing