Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. % CONSTANTES
  2.  
  3. dt = 1e-2; % Pas de temps
  4. t = 1; % Duree de l'action
  5. n = t/dt; % Nombre d'iterations
  6. tau = 4e-2; % Constante de temps
  7. m = 0.3; % Masse
  8. SD = 0.0035; % Uncertainty initiale de la main
  9. sigmaXpre=0.0035;% uncertainty of the hand position
  10. sigmaT1_offset=0.05;% initial uncertainty about target
  11.  
  12. wr = 1;
  13. ws = 1;
  14. wp = 1;
  15.  
  16. Ad = [1 dt 0 0 0 0;
  17. 0 1 0 0 dt/m 0;
  18. 0 0 1 dt 0 0;
  19. 0 0 0 1 0 dt/m;
  20. 0 0 0 0 1-dt/tau 0;
  21. 0 0 0 0 0 1-dt/tau];
  22. A = [Ad zeros(6,4);
  23. zeros(4,6) eye(4)] ;
  24. B = [zeros(4,2);
  25. dt/tau 0;
  26. 0 dt/tau;
  27. zeros(4,2)];
  28. Ak = [A zeros(10,110);
  29. eye(110) zeros(110,10)];
  30. Bk = [B;
  31. zeros(110,2)];
  32. Hh = [1 0 0 0 0 0 0 0 0 0;
  33. 0 0 1 0 0 0 0 0 0 0;
  34. 0 0 0 0 0 0 1 0 0 0;
  35. 0 0 0 0 0 0 0 1 0 0];
  36. H = [zeros(4,110) Hh];
  37.  
  38. L = [wr 0;
  39. 0 wr];
  40. Sv = [wp 0 0 0 0 0 -wp 0 0 0;
  41. 0 ws 0 0 0 0 0 0 -ws 0;
  42. 0 0 wp 0 0 0 0 -wp 0 0;
  43. 0 0 0 ws 0 0 0 0 0 -ws;
  44. 0 0 0 0 0 0 0 0 0 0;
  45. 0 0 0 0 0 0 0 0 0 0;
  46. -wp 0 0 0 0 0 wp 0 0 0;
  47. 0 0 -wp 0 0 0 0 wp 0 0;
  48. 0 -ws 0 0 0 0 0 0 ws 0;
  49. 0 0 0 -ws 0 0 0 0 0 ws];
  50.  
  51.  
  52.  
  53. % STATE NOISE
  54. sigmaU = 1e-3; % Bruit de la commande
  55. sigmaTU = 1.5e-3; %OK % Bruit sur la position de la cible
  56. sigmaTU2 = 1.5e-3; % Bruit sur la vitesse de la cible
  57.  
  58. OmEps = [0 0 0 0 sigmaU^2 sigmaU^2 sigmaTU^2 sigmaTU^2 sigmaTU2^2 sigmaTU2^2];
  59. Q = diag([OmEps zeros(1,110)]);
  60.  
  61. % MEASUREMENT NOISE
  62. sigmaP = 1e-2; %OK % Bruit sur l estimation de position de la main
  63. sigmaT = 1e-3; % Bruit sur l estimation de position de la cible
  64. Rv = diag([sigmaP^2 sigmaP^2 sigmaT^2 sigmaT^2]);
  65.  
  66. %INITIALISATION DES MATRICES
  67. W = zeros(120,120,n);
  68. K = zeros(120,4,n);
  69. P = zeros(120,120,n);
  70. Y = zeros(4,1,n);
  71. Xk = zeros(120,1,n);
  72. U = zeros(2,1,n);
  73. S = zeros(120,120,n);
  74. R = zeros(4,4,n);
  75. omega = ones(4,1);
  76. for i=1:n
  77. S(1:10,1:10,i) = Sv;
  78. R(1:4,1:4,i) = Rv;
  79. end
  80.  
  81. % CONDITIONS INITIALES
  82. Xn = [0 0 0 0 0 0 1 1 0 0];
  83. Xkn = [Xn zeros(1,110)];
  84. Un = [0 0];
  85.  
  86. Pv=zeros(10,10);Pv(1,1)=sigmaXpre^2;Pv(2,2)=0;Pv(3,3)=sigmaXpre;Pv(4,4)=0;Pv(5,5)=0;Pv(6,6)=0;
  87. Pv(7,7)=(sigmaT1_offset)^2;Pv(8,8)=(sigmaT1_offset)^2;Pv(9,9)=0;Pv(10,10)=0;
  88. P(1:10,1:10,1)=Pv;
  89. P(:,:,1)=blkdiag(Pv,Pv,Pv,Pv,Pv,Pv,Pv,Pv,Pv,Pv,Pv,Pv);
  90. P_b(:,:,1)=P(:,:,1);
  91. P_b(:,:,2) = P(:,:,1);
  92.  
  93. Xk(:,:,1) = Xkn;
  94.  
  95. W(:,:,n) = S(:,:,1);
  96. % BOUCLE INVERSE
  97. for i=1:n-1
  98. W(:,:,n-i) = Ak.'*(eye(120)+W(:,:,n-i+1)*Bk*((L)\Bk.'))*W(:,:,n-i+1)*Ak; %+S(:,:,n-i);
  99. end
  100. % RECONSTRUCTION DES ETATS
  101. for i=2:n-1
  102. Y(:,:,i) = H*Xk(:,:,i) + omega;
  103. K(:,:,i) = P(:,:,i)*H.'/(H*P(:,:,i)*H.'+R(:,:,i));
  104. P(:,:,i) = (eye(120)-K(:,:,i)*H)*P(:,:,i-1);
  105. Xk(:,:,i) = Xk(:,:,i-1) + K(:,:,i)*(Y(:,:,i)-H*Xk(:,:,i));
  106. U(:,:,i) = (L+Bk.'*W(:,:,i+1)*Bk) \ Bk.'*W(:,:,i+1)*Ak*Xk(:,:,i);
  107. Xk(:,:,i+1) = Ak*Xk(:,:,i) + Bk*U(:,:,i);
  108. P(:,:,i+1) = Ak*P(:,:,i)*Ak.'+Q;
  109. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement