Week 2- 2R Robotic Arm Challenge
% programming using for loop in forward kinematic
%inputs
l1=2
l2=1
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',5);
axis([-0.1 4 0 4])
pause(0.1)
M(ct)=getframe(gcf);
ct=ct+1;
end
end
movie(M)
videofile=VideoWriter('forward_kinematic.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
EXPLANATION OF CODES USED ABOVE:
INPUT HAS BEEN ASSUMED.
L1=2 MEANS LENGTH OF THE FIRST ARM
L2=1 MEANS LENGTH OF THE SECOND ARM
theta1=linspace(0,90,10)
theta2=linspace(0,90,10)
HERE THE LANSPACE COMMAND IS USED BECAUSE I NEED VARIOUS ARM POSITION SO, theta VALUE 0 TO 90 I NEED 10 VALUES BETWWEN THEM
ct =1 IT MEANS COUNTER USED INCREMENTS VALUES
for MEANS THE LOOP HAS BEEN OPENED HERE IT IS USED FOR REPEATING THE PROGRAMM UNITS THE COMMAND END IS USED
i=1:length(theta1)
THETA1=theta1(i)
THIS MEANS i VARIABLE IS EQUAL TO 1 IS TO LENGTH OF theta1 HERE THE LENGTH OF theta1 is 10
ANOTHER FOR LOOP IS OPENED j FOR THE theta2
AND THE REPEATED VALUES SHOULD BE ENTERED IN LOOP MEANS
X0=0
Y0=0
X1= L1* COSD(THETA1)
Y1= L1* SIND(THETA1)
X2= X1+L2* COSD(THETA2)
Y2= Y1+L2* SIND(THETA2)
PLOTTING THE COORDINATES
PLOTTING ALL THE COORINATES IN DIFFERENT POSITIONAS
AXIS LIMITS HAS BEEN FIXED OR MENTIONED
PAUSE COMMAND IS USED TO FASTER THE MOTION OR TIME TO APPEAR IN DIFFERENT POSITION
M IS THE VARIABLE WE USE SOME ALSO
M(ct)=GETFRAME(gcf) MEANS THE COLLECTING ALL THE FIGURE FROM ALL DIFFERENT POSITION HAS BEEN COLLECTED
AGAIN THE CT IS INCREMENTED TO +1
SO, THE ALL THE DIFFERENT POSITION AND ANGLES BEEN DONE BY USING FOR LOOP COMMMAND
END
END HERE 2 END HAS BEEN TYPIED BECAUSE WE HAVE 2 FOR LOOP SO, THE 2 END SHOULD GIVE AT THE END
FROM THE ABOVE THE PROGRAM THE DIFFERENT FIGURE HAS BEEN COLLECTED BUT WE NEED THE ANIMATION SO,
MOVIE (M)
HERE THE M IS THE ARRAY OF FIGURE IT HAS BEEN ANIMATED BY MOVIE COMMAND IN BULIT IN MATLAB
FOR THE SAVING THE ANIMATED VIDEO OF FIGURES
INITIALLY THE VIDEOFILE HAS BEEN CREATED IN THAT VIDEO WRITING SHOULD SAVED INTO THAT VIDEO FILE IN THAT FORMAT OF THE FILE HAS BEEN MENTIONED
FOR SAVING THE FILE -OPEN FILE (VIDEO FILE) MEANS OPENING THE CREATED VIDEO FILE
WRITEVIDEO(VIDOE FIEL, M ) MEANS THE AN ARRAY OF FIGURE OF M HAS BEEN ANIMATED IN THAT VIDEO FILE
CLOSEFILE(VIDEO FILE ) MEAN CLOSING THE OPENED VIDEO FILE AFTER WRITIED IN THAT FILE.
ERROR:
FROM THIS ABOVE IMAGES THE ERROR THAT I HAVE MADE IS IN 34 LINE THE videofile=Videowriter('forward_kinematic.avi','Uncompressed AVI')
ERROR IN THAT IS Videowriter IS WRONG, VideoWritier IS CORRECT HERE V AND W SHOULD BE IN UPPERCASE
THIS IS THE IS OUTPUT OF MY PROGRAM