Challenge

Week 2- 2R Robotic Arm Challenge

FORWARD KINEMATICS OF 2R ROBOTIC ARM: TO FIND OUT HOW TO MOVE AND ROTATE JOINTS TO GET THE MANIPULATOR AT DESIRED POSSITION WHERE WE NEED.

(FOR EXPLAINATION I USE THE UPPER CASE LETTER KEY FOR EX: LINK L1, ANGLE THETA 1)

AIM: 1)Write a program in matlab to simulate the forward kinematics of 2r robotic arm.

2) ANIMATING THE PLOT AND MAKING OF MOVIE.

EXPLAINATION:

2R ROBOTIC ARM COTAINS 2 LINKS AND 2 ROTAIONAL JOINTS. TO FIND OUT THE LOCATION OF THE MANIPULATOR.

STEP1 - CALCULATE THE POSSITION OF THE LINK L1 AND L2 MENTION (FIG 1).

L1 HAS 2 END POINTS ONE STARTING POINT IS FIXED TO THE BASE AND END POINT IS CONNECTED WITH LINK TWO L2.

SO, THE CO-ORDINATES OF THE STARTING POINT OF L1 (0,0)

AND THE CO-ORDINTES OF THE END POINT OF L1 = (L1*COS*THETA1, L1*SIN*THETA1) THESE ARE NOTHING BUT THE STARTING POINT OF LINK L2.

SUPPOSE START POINT OF L1 (X0 Y0) AND END POINTS ARE (X1 Y1).AND THE STARTING POINT OF LINK L2 (X1 Y1) AND ENDING POINTS ARE (X2 Y2).

ERRORS FACE: 1)unrecognised error, upper case and lowe rcase letter.

STEPS TAKEN TO OVER COME THE ERROR: INPUTS MUST BE SAME AS WE MENTIONE WHILE PROGRAMMING.

HERE,

THETA 1 = 45 (DEGREE)

THETA2 = 30 (DEGREE)

L1 = 1

L2 = 0.5

X0 = 0

Y0 = 0

X1 = L1*COS*(THETA1)

Y1 = L1*SIN*(THETA1)

X2 = X1+ L2*COS*(THETA2)

Y2 = Y1+L2*SIN*(THETA2)

(FIG 1)

%forward kinematics for 2r robotic arm manipulator
clear all
close all
clc
%inpute
l1 = 1;
l2 = 0.5;
theta1 = 45;
theta2 = 30;
%coordinates
x0 = 0;
y0 = 0;
x1 = l1*cosd(theta1);
y1 = l1*sind(theta1);
x2 = x1+l2*cosd(theta2);
y2 = y1+l2*sind(theta2);
% plotting
line([x0 x1],[y0 y1],'linewidth',3,'color','b');
line([x1 x2],[y1 y2],'linewidth',3,'color','r');​

AIM- 2)ANIMATING THE PLOT AND MAKING OF MOVIE.

THE OBJECTIVE HERE IS HAVING MULTIPLE VALUES OF THETA1 AND THETA2 TO ACHIEVE THE DESIRED POSSITION OF THE MANIPULATOR.

FOR EACH VALUE OF THETA 1 AND THETRA 2 WE ARE GOING TO CREATING THE PLOT AND STICHING ALL THOSE PLOTS TOGETHER TO MAKE AN ANIMATION.

WE USE FOR LOOP : A LOOP IS STRUCTURE FOR REPEATING A CALCULATION A PREDIFINED NO OF TIMES. FOR LOOP IS USED WHEN THE NO OF LOOP IS KNOWN IN ADVANCE.

%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)

ERRORS FACE:

Unrecognized function or variable 'videoWriter'.

Error in forward_kinematics_for_loop (line 39)
videofile = videoWriter('forward_kinematics.avi','uncompressed AVI')

EXPLAINATION:

FOR EACH VALUE OF THETA 1 WE ARE LOOPING THROUGH THE VALUE OF THETA2

TO EXECUTE THE PLOT FOR THE VALUES OF THETA1AND THETA2 WE USE A SINGLE PLOT STATEWMENT HERE AS SHOWN BELOW:

(plot([x0 x1],[y0 y1],[x1 x2],[y1 y2],'linewidth',3)

AND THEN WE FIX THE AXIS LIMITS (X AND Y).

TO CREAT A MOVIE:

GET INDIVISUAL FRAME ADN SET AN ARRAY CALLED M(CT) FOR THE WE ISE (GETFRAME) COMMAND.

https://drive.google.com/file/d/1WU4w1zrRJXvuUjlxnQRQt2VmPNBaogpQ/view?usp=sharing

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.