找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2289|回復: 0
打印 上一主題 下一主題
收起左側

卡爾曼濾波器在INS-GPS組合導航中應用仿真 matlab源代碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:989853 發(fā)表于 2021-12-9 09:04 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
最近一段時間在嘗試用FPGA設計卡爾曼濾波器,設計過程比較復雜,在此過程中卡爾曼濾波器的基本原理,matlab仿真與C語言實現(xiàn),及其在導航算法中的應用困擾了我很長一段時間。在和師兄交流和參閱些許文獻之后,終于小有收獲。下面是把卡爾曼濾波器在INS-GPS組合導航中應用仿真的matlab源代碼與大家分享,希望對初學者有一定的借鑒價值。

   在下面的仿真的代碼中,理想的觀測量不是真實數(shù)據(jù),而是自生成的正弦波數(shù)據(jù),在真實的應用場景中,應該是一系列的參考數(shù)據(jù)。

運行結果:


  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %     卡爾曼濾波器在INS-GPS組合導航中應用仿真
  3. % Author : lylogn
  4. % Email  : lylogn@gmail.com
  5. % Company: BUAA-Dep3
  6. % Time   : 2013.01.06
  7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  8. % 參考文獻:
  9. % [1]. 鄧正隆. 慣導技術, 哈爾濱工業(yè)大學出版社.2006.

  10. clear all;

  11. %% 慣性-GPS組合導航模型參數(shù)初始化
  12. we  = 360/24/60/60*pi/180; %地球自轉(zhuǎn)角速度,弧度/s
  13. psi = 10*pi/180;          %psi角度 / 弧度
  14. Tge = 0.12;
  15. Tgn = 0.10;
  16. Tgz = 0.10;               %這三個參數(shù)的含義詳見參考文獻
  17. sigma_ge=1;
  18. sigma_gn=1;
  19. sigma_gz=1;
  20. %% 連續(xù)空間系統(tǒng)狀態(tài)方程
  21. % X_dot(t) = A(t)*X(t) + B(t)*W(t)

  22. A=[0 we*sin(psi) -we*cos(psi) 1     0     0      1 0 0;
  23.    -we*sin(psi) 0    0      0     1     0      0 1 0;
  24.    we*cos(psi) 0    0      0     0     1      0 0 1;
  25.   0           0    0      -1/Tge 0     0      0 0 0;
  26.   0           0    0      0     -1/Tgn 0      0 0 0;
  27.   0           0    0      0     0     -1/Tgz  0 0 0;
  28.   0           0    0      0     0     0      0 0 0;
  29.   0           0    0      0     0     0      0 0 0;
  30.   0           0    0      0     0     0      0 0 0;]; %狀態(tài)轉(zhuǎn)移矩陣
  31. B=[0           0    0   sigma_ge*sqrt(2/Tge) 0 0 0 0 0;
  32.   0           0    0    0 sigma_gn*sqrt(2/Tgn) 0 0 0 0;
  33.   0           0    0    0 0 sigma_gz*sqrt(2/Tgz) 0 0 0;]';%輸入控制矩陣
  34. %% 轉(zhuǎn)化為離散時間系統(tǒng)狀態(tài)方程
  35. % X(k+1) = F*X(k) + G*W(k)
  36. T = 0.1;
  37. [F,G]=c2d(A,B,T);
  38. H=[1   0      0 0 0 0 0 0 0;
  39.    0  -sec(psi) 0 0 0 0 0 0 0;];%觀測矩陣
  40. %% 卡爾曼濾波器參數(shù)初始化
  41. t=0:T:50-T;
  42. length=size(t,2);
  43. y=zeros(2,length);
  44. Q=0.5^2*eye(3);                %系統(tǒng)噪聲協(xié)方差
  45. R=0.25^2*eye(2);               %測量噪聲協(xié)方差
  46. y(1,:)=2*sin(pi*t*0.5);
  47. y(2,:)=2*cos(pi*t*0.5);
  48. Z=y+sqrt(R)*randn(2,length);   %生成的含有噪聲的假定觀測值,2維
  49. X=zeros(9,length);             %狀態(tài)估計值,9維
  50. X(:,1)=[0,0,0,0,0,0,0,0,0]';   %狀態(tài)估計初始值設定
  51. P=eye(9);                      %狀態(tài)估計協(xié)方差
  52. %% 卡爾曼濾波算法迭代過程
  53. for  n=2:length
  54.    X(:,n)=F*X(:,n-1);
  55.    P=F*P*F'+ G*Q*G';
  56.    Kg=P*H'/(H*P*H'+R);
  57.   X(:,n)=X(:,n)+Kg*(Z(:,n)-H*X(:,n));
  58.    P=(eye(9,9)-Kg*H)*P;
  59. end
  60. %% 繪圖代碼
  61. figure(1)
  62. plot(y(1,:))
  63. hold on;
  64. plot(y(2,:))
  65. hold off;
  66. title('理想的觀測量');
  67. figure(2)
  68. plot(Z(1,:))
  69. hold on;
  70. plot(Z(2,:))
  71. hold off;
  72. title('帶有噪聲的觀測量');
  73. figure(3)
  74. plot(X(1,:))
  75. hold on;
  76. plot(X(2,:))
  77. hold off;
  78. title('濾波后的觀測量');
復制代碼

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表