motionModel.m
上传用户:zfsfly
上传日期:2018-05-24
资源大小:71k
文件大小:2k
源码类别:

matlab例程

开发平台:

Matlab

  1. function [ X ] = motionModel( X, action )
  2. % ------------------------------------------------------------------------------------------------------
  3. % function [ X ] = Prediction( X, action )
  4. %
  5. % Usa un modelo probabilistico para dar el siguiente estado "x" dado el anterior
  6. %  y la "accion" que se ha realizado. En este caso:
  7. %  x: Es un vector 3x1 de la pose del robot.
  8. %  action: Es un vector 3x1 del cambio de pose que se ha mandado al robot
  9. %  como accion (Ax Ay Aphi)
  10. %
  11. %  J.L. Blanco - University of Malaga, Spain
  12. % ------------------------------------------------------------------------------------------------------
  13. % ------------------------------------------------------------------------------------------------------
  14. % Copyright (c) 2007  Jose Luis Blanco Claraco.
  15. % Permission is hereby granted, free of charge, to any person obtaining a copy of
  16. % this software and associated documentation files (the "Software"), to deal in
  17. % the Software without restriction, including without limitation the rights to
  18. % use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
  19. % of the Software, and to permit persons to whom the Software is furnished to do
  20. % so, subject to the following conditions:
  21. % The above copyright notice and this permission notice shall be included in all
  22. % copies or substantial portions of the Software.
  23. % THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  24. % IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  25. % FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  26. % AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  27. % LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  28. % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  29. % SOFTWARE.
  30. % ------------------------------------------------------------------------------------------------------
  31. M = size(X,1);
  32. N = size(X,2);  
  33. N0 = N - 3; % The first index of the last "triplet"
  34. Ax = action(1);
  35. Ay = action(2);
  36. Ap = action(3);
  37. Axy = sqrt(sum(action(1:2).^2));
  38. stdX    = 0.01 * abs(Ax) + 0.01*Axy;
  39. stdY    = 0.01 * abs(Ay) + 0.01*Axy;
  40. stdP    = 0.02 * abs(Ap) + 0.05*Axy;
  41. ccos = cos(X(:,N0+3));
  42. csin = sin(X(:,N0+3));
  43. Ax2 = Ax + randn(M,1) * stdX;
  44. Ay2 = Ay + randn(M,1) * stdY;
  45. Ap2 = Ap + randn(M,1) * stdP;
  46. X(:,N+1) = X(:,N0+1) + Ax2 .* ccos - Ay2 .* csin;
  47. X(:,N+2) = X(:,N0+2) + Ax2 .* csin + Ay2 .* ccos;
  48. X(:,N+3) = X(:,N0+3) + Ap2;