Advertisement
Teo_Protoulis

Untitled

Nov 19th, 2020
552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.99 KB | None | 0 0
  1. clear all
  2.  
  3. tic
  4.  
  5. t = 0:0.01:1;
  6. theta_d_1 = zeros(1,length(t));
  7. theta_dot_d_1 = zeros(1,length(t));
  8. theta_dot_dot_d_1 = zeros(1,length(t));
  9. theta_d_2 = zeros(1,length(t));
  10. theta_dot_d_2 = zeros(1,length(t));
  11. theta_dot_dot_d_2 = zeros(1,length(t));
  12.  
  13. global u_1 u_2 counter
  14.  
  15. counter = 1;
  16. u_1 = zeros(1,length(t));
  17. u_2 = zeros(1,length(t));
  18.  
  19. i = 1;
  20.  
  21. for t = 0:0.01:1
  22.  
  23.      theta_d_1(i) = 0.01454441*t^3 - 0.0036361*t^4 + 0.00024241*t^5;
  24.      theta_dot_d_1(i) = 3*0.01454441*t^2 - 4*0.0036361*t^3 + 5*0.00024241*t^4;
  25.      theta_dot_dot_d_1(i) = 6*0.01454441*t - 12*0.0036361*t^2 + 20*0.00024241*t^3;
  26.      %theta_d_1(i) = 0.5*sin(0.3*pi*t);
  27.      %theta_dot_d_1(i) = 0.5*0.3*pi*cos(0.3*pi*t);
  28.      
  29.      theta_d_2(i) = 0.01454441*t^3 - 0.0036361*t^4 + 0.00024241*t^5;
  30.      theta_dot_d_2(i) = 3*0.01454441*t^2 - 4*0.0036361*t^3 + 5*0.00024241*t^4;
  31.      theta_dot_dot_d_2(i) = 6*0.01454441*t - 12*0.0036361*t^2 + 20*0.00024241*t^3;
  32.      %theta_d_2(i) = 0.5*cos(0.3*pi*t);
  33.      %theta_dot_d_2(i) = -0.5*0.3*pi*sin(0.3*pi*t);
  34.    
  35.     i = i + 1;
  36.    
  37. end
  38.    
  39. % Constant Controller Parameters
  40. global l_1 l_2 k1 k2 p_i p_1_0 p_2_0 gamma_1 gamma_2 epsilon_1 epsilon_2 K step_size_angle step_size_velocity
  41. global q_prev_theta_1 q_prev_theta_2 q_prev_theta_3 q_prev_theta_4
  42.  
  43. % Manipulator's Parameters
  44. % I_i --> Moment of Inertia of Link-i
  45. % m_i --> Mass of Link-i
  46. % li  --> Length of Link-i
  47. global I_1 I_2 m_1 m_2 l1 l2 g
  48. I_1 = 0.96;
  49. I_2 = 0.81;
  50. m_1 = 1.5;
  51. m_2 = 1;
  52. l1 = 0.25;
  53. l2 = 0.2;
  54. g = 9.81;
  55.  
  56. global k_1 k_2 % --> Friction Coefficients of Joints 1 & 2 respectively
  57. k_1 = 1;
  58. k_2 = 1;
  59.  
  60. l_1 = 1.9;
  61. l_2 = 1.9;
  62. k1 = 2;
  63. k2 = 2;
  64. p_i = 0.01;
  65. p_1_0 = 2.8;
  66. p_2_0 = 2.8;
  67. gamma_1 = 0.05;
  68. gamma_2 = 0.05;
  69. epsilon_1 = 0.1;
  70. epsilon_2 = 0.1;
  71. % K = 100000; % --> With K = 100000 the simulation runs
  72. K = 100000;
  73. step_size_angle = 0.002;
  74. step_size_velocity = 0.001;
  75.  
  76. % Initial Conditions of Joint Variables
  77. % The system initially rests --> Initial Velocities are equal to 0
  78. theta = [pi/16 ; 0 ; pi/14 ; 0];
  79. q_prev_theta_1 = theta(1);
  80. q_prev_theta_2 = theta(2);
  81. q_prev_theta_3 = theta(3);
  82. q_prev_theta_4 = theta(4);
  83.  
  84. tspan = 0:0.01:1;
  85. % The definitely executable one --> odeset('RelTol',1e-7,'AbsTol',1e-10)
  86. S = [0 1 0 0 ; 1 1 1 1 ; 0 0 0 1 ; 1 1 1 1];
  87. options = odeset('RelTol',1e-7,'AbsTol',1e-10,'JPattern',S,'Refine',4);
  88. [t, theta] = ode15s(@ode_simulation_kuka, tspan, theta, options);
  89.  
  90. first_joint_angle = theta(:,1);
  91. first_joint_angular_velocity = theta(:,2);
  92. second_joint_angle = theta(:,3);
  93. second_joint_angular_velocity = theta(:,4);
  94.  
  95. p_1 = p_1_0*exp(-l_1*t) + k1*p_i;
  96. p_2 = p_2_0*exp(-l_2*t) + k2*p_i;
  97.  
  98. delta_1 = k1*step_size_velocity+k1*step_size_angle;
  99. delta_2 = k2*step_size_velocity+k2*step_size_angle;
  100.  
  101. first_joint_angle_error = first_joint_angle - theta_d_1';
  102. first_joint_velocity_error = first_joint_angular_velocity - theta_dot_d_1';
  103. second_joint_angle_error = second_joint_angle - theta_d_2';
  104. second_joint_velocity_error = second_joint_angular_velocity - theta_dot_d_2';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement