Week 2- 2R Robotic Arm Challenge
%Forward_kinematics_with_for_loop
clear all
close all
clc
%Inputs
l1=1;
l2=0.5;
theta1 = linspace(0,90,40);
theta2 = linspace(0,90,40);
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
hold on
plot([x0 x1],[y0 y1],[x1 x2],[y1 y2],'linewidth',3);
axis([-0.1 1.5,0 1.5]);
M(ct) = getframe(gcf);
ct=ct+1;
end
end
movie (M)
videofile = VideoWriter('forward_kinematics.avi');
open(videofile)
writeVideo(videofile,M)
close(videofile)
Explanation:
In the above mentioned program I have assumed the Inputs for l1,l2,theta1,theta2
Then we use the for loop to calculates the values of each theta1 and theta 2.
where i=1:length(thata1)
so that we need to use uppercase THETA1=theta1(i)
Whereas we already used i, so that we need to use j for theta 2.
We can calculate the x and y values by (l*cosd(THETA) and l*sind(THETA)).
After calculating the values of [x0,x1 y0,y1 x1,x2 y1,y2] we need to plot those values in the axis of (-0.1 1.5 and 0 1.5)
To get the frame for the robotic arms use M(ct)=getframe(gcf);
Then close the both the for loops by end.
To see the robotic arms in a movie file
use
movie (M)
videofile = VideoWriter('forward_kinematics.avi');
open(videofile)
writeVideo(videofile,M)
close(videofile)
Errors Faced:
Image 1: I have missed an multiplication operator in the program and I have added the (.) multiplication operator to just overcome the challenge.
Image 2: I have faced this error for a long time in my program. I have mentioned 'videowriter' and later I realised that It should be 'VideoWriter'.