Week 2- 2R Robotic Arm Challenge
Aim
Solving Forward Kinematics of 2R robotic arm manipulator and making an animation of the motion of the robotic arm by using MATLAB.
Steps:
Before Programming
- Figuring out how the robot move
- Drawing the base of robot which contains two linkages and two rotational joints
- Calculate the linkages by using the following equations: 1- 2- . . The original points should be given
During the first (file) Programming
The Objective here is to calculate the parameters that is involved and also plotting it.
- Inserting the inputs: Link 1, Link 2, Theta 1, Theta 2, The original and second points for x and y coordinates respectively.
- Inserting the equations of Forward Kinematics.
- Plotting the code
Problems or Errors that has been faced during the program:
- In the first plot the ‘line’ function has been used but it showed as a one link only
How is it solved : By adding another function with different points and different angle with a different color
During the second (file) Programming
The main objective here is to do the final coding that will make the desired animation that will shows the moving of the 2R robotic arm.
-
Inserting the inputs. The different here is to make the two angles in multiple values. By using the ‘linspace’ function.THE FIRST CODE % Forward kinematics of a 2R robotic arm manipulator clear all close all clc % Inputs 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); % Plottinjg line([x0 x1], [y0 y1], 'linewidth',3, 'color', 'b') line([x1 x2], [y1 y2], 'linewidth',3, 'color','r') THE SECOND CODE close all clc %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.04) 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) - Using ‘for loop’ function to help changing the position of angles automatically.
- Coping the equation In the first file and paste it in the current file
- Plotting the code with help of ‘plot’ function, only in one line with two points. Then plot the axis, and pause it to animate it.
- Fixing the x and y axis to make the plot a bit smoother
- Insert ‘Pause’ function to animate the plot
- Increase the resolution of theta 1 and theta 2 to make it smoother
- Creating a movie of the plot to make it a movie animation
Problems or Errors that has been faced during the program:
- Using ‘line’ function, which will shows the figure in multiple lines all at once and not animated. How is it solved: changing the function from ‘line’ to ‘plot’, and also using counter figure to show it in different figures.
- When the plot has been runned, it has been showed only in one color. Because it has been overwritten and to overcome this issue ‘hold on’ command has been used. And because of the plot function we can remove the hold on command.