Advertisement
cyphric

Skhora

Sep 25th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.32 KB | None | 0 0
  1. %Uppgift 4
  2. clc; clear all;
  3. close all;
  4. format long;
  5. theta0 = 0;
  6. b = 1;
  7. aR = 0;, aL = 0;, wL = 4;, wR = 2;, x0 = 0;
  8. y0 = 1.5; %Gör om på rätt sätt, robotcircle med xbar = 0, vad blir då ybar? jo 1.5
  9. s0 = [x0, y0, theta0]';
  10. Tlap = pi;
  11. t0 = 0;
  12. tspan = [t0 Tlap];
  13.  
  14. B = (wR + wL)/2;
  15. D = (wR - wL)/b;
  16.  
  17. xreal = [];
  18. yreal = [];
  19. thetareal = [];
  20.  
  21.  
  22. %ode45
  23. options = odeset('RelTol',1e-8,'Abstol',1e-8, 'refine', 1);
  24. [t,s] = ode45(@(t,s) fvel(t,s,b,aL,aR,wL,wR),tspan,s0,options);
  25. thetapprox = s(:,3);
  26.  
  27. for j = 1:length(t)
  28.     thetareal(j) = D*t(j) + theta0;
  29. end
  30. thetareal = thetareal';
  31. for i = 1:length(t)
  32.    xreal(i) = x0 + (B/D)*sin(thetareal(i));
  33.    yreal(i) = y0 - ((B/D)*(cos(thetareal(i)) - 1));
  34. end
  35. xreal = xreal';
  36. yreal = yreal';
  37.  
  38. xrelfel = abs(xreal-s(:,1));
  39. yrelfel = abs(yreal-s(:,2));
  40.  
  41. plot(t,xrelfel); hold on; grid on;
  42. plot(t,yrelfel);
  43. legend('Felet i X','Felet i Y');
  44.  
  45.  
  46. function [xbar,ybar,R,Tlap] = robotcircle(b,wL,wR,x0,y0,theta0)
  47. R = abs((b*wR + b*wL)/(2*wR-2*wL));
  48. xbar = x0 - (b*wR + b*wL)/(2*wR - 2*wL)*sin(theta0);
  49. ybar = y0 + (b*wR + b*wL)/(2*wR - 2*wL)*cos(theta0);
  50. Tlap = 4*pi*R/(wR + wL);
  51. end
  52.  
  53.  
  54.  
  55. function ds = fvel(t,s,b,aL,aR,wL,wR)
  56. vR = aR*t + wR;
  57. vL = aL*t + wL;
  58. v = (vR + vL)/2;
  59. dtheta = (vR - vL)/b;
  60. theta = s(3);
  61. ds = [v*cos(theta), v*sin(theta), dtheta]';
  62.  
  63.  
  64. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement