MATLAB Challenge - 2R Robotic Arm Challenge
%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
videofile = VideoWriter('roboticsarm.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
https://drive.google.com/file/d/17zQybSlaD0LAD0cMIgtz9C_uZNiAdLJa/view?usp=sharing
Forward kinematics of Robotic Arm
- It contains 2 links and 2 rotational joints.
- Both the links move w.r.t to each other and depending on the position of link1 the position of link2(manipulator) will be evaluated.
- Here, we have given the values of Theta1(angle made by link 1 w.r.t to the x-axis), Theta2(angle made by link 2 w.r.t to the x-axis), and length of each link l1 and l2.
- So, for a particular position of link1(theta1) multiple no of positions will be possible of link2(depending on the no of values of theta2) and this is how we calculate the reach of the robotic arm.
- Now, for one value of theta1, we will calculate the final positions of link2 i.e (x2,y2)
- But, we cannot manually evaluate all the results for every value of theta1 and theta2.
- For this we will use for loop and for link2 we will use a separate loop because for each value of theta1 multiple values of theta2 is possible.
- At last, we will plot all values of (x0.x1.x2)and (y0,y1.y2) with a pause interval of 0.03 so that the frames run smoothly.
- And, by taking each frame we will create a movie file so that we can save it in our system in MP4 format.