MATLAB-卡尔曼滤波简单运用示例

1、角度和弧度之间的转换公式? 
设角度为 angle,弧度为 radian 
radian = angle * pi / 180; 
angle = radian * 180 / pi; 
所以在matlab中经常设置一个参数,用于角度与弧度之间的转换:deg_rad=0.01745329252e0;

2、注意下面角度Angint的表示方法: 
Angint=[0,10,0]*deg_rad; 
则:Angint(0) = 0;Angint(1) = 0.0175;Angint(2) = 0; 
这种表示方法可以在四元数中应用: 
例如: 
q=[cos(Angint(3)/2)*sin(Angint(2)/2)*cos(Angint(1)/2)+sin(Angint(3)/2)*cos(Angint(2)/2)*sin(Angint(1)/2) 
cos(Angint(3)/2)*cos(Angint(2)/2)*sin(Angint(1)/2)-sin(Angint(3)/2)*sin(Angint(2)/2)*cos(Angint(1)/2) 
-sin(Angint(3)/2)*cos(Angint(2)/2)*cos(Angint(1)/2)+cos(Angint(3)/2)*sin(Angint(2)/2)*sin(Angint(1)/2) 
cos(Angint(3)/2)*cos(Angint(2)/2)*cos(Angint(1)/2)+sin(Angint(3)/2)*sin(Angint(2)/2)*sin(Angint(1)/2)]; 
可以用q(0)、q(1)、q(2)、q(3)来代入公式计算三轴姿态角。

3、在滤波的过程中,要明确滤波时间和采样频率;

4、IMU数据仿真分析: 
(1)先模拟加速度计和陀螺仪的真实输出: 
[ Angle,Wibb,Fb ] = imu_true_out( tt,ynong,T );%tt=tt+TT;TT=1/f为时间间隔 
注意:加速度计的输出要进行坐标转换: ao=Cnb*([0,0,g]’, 
其中:Cnb 

MATLAB-卡尔曼滤波简单运用示例

如果你要在加速度计的输出上添加一个随机干扰(可模拟非重力加速度干扰),可以使用函数awgn();  %Add white Gaussian noise to a signal. 
ao=Cnb*([0,0,g]’+[0,awgn(0,ynong),0]’);   %如果在指点的时间内添加这种干扰,可以加一个if函数 
2)模拟加速度计和陀螺仪的误差: 
[Gyro_b,Gyro_r,Gyro_wg,Acc_r]=imu_err_random(tt,TT,Gyro_b,Gyro_r,Gyro_wg,Acc_r);

function [Gyro_b,Gyro_r,Gyro_wg,Acc_r]=imu_err_random(t,T,Gyro_b,Gyro_r,Gyro_wg,Acc_r) g=9.7803698; %重力加速度 (单位:米/秒/秒) Wie=7.292115147e-5; %地球自转角速度(单位:弧度/秒) deg_rad=0.01745329252e0;% Transfer from angle degree to rad Da_bias=[0.001; 0.001; 0.001]*g; %加速度零偏(应与非随机性误差中的加速度零偏保持一致) Ta=1800.0; %加速度一阶马尔可夫过程相关时间 Tg=3600.0; %陀螺一阶马尔可夫过程相关时间 %%%%%%%%%%%%%%%%%%随机性误差%%%%%%%%%%%%%%% if( t==0 ) Acc_r=Da_bias.*randn(3,1); %加速度一阶马尔可夫过程1.0e-4g Gyro_b=0.01*deg_rad/3600.0*randn(3,1); %随机常数0.1(deg/h) Gyro_r=0.01*deg_rad/3600.0*randn(3,1); %陀螺一阶马尔可夫过程0.1(deg/h) Gyro_wg=0.01*deg_rad/3600.0*randn(3,1);%陀螺白噪声0.1(deg/h) else Acc_wa=sqrt(2*T/Ta)*Da_bias.*randn(3,1);%加速度一阶马尔可夫过程白噪声 Acc_r=exp(-1.0*T/Ta)*Acc_r; %加速度一阶马尔可夫过程 Gyro_wr=0.01*sqrt(2*T/Tg)*deg_rad/3600.0*randn(3,1);%陀螺一阶马尔可夫过程白噪声0.1(deg/h) Gyro_r=exp(-1.0*T/Tg)*Gyro_r+Gyro_wr;%陀螺一阶马尔可夫过程0.1(deg/h) Gyro_wg=0.01*deg_rad/3600.0*randn(3,1);%陀螺白噪声0.1(deg/h) end

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzszjd.html