Kalman滤波在船舶GPS导航定位系统中的应用

船舶GPS导航定位原理如图
在这里插入图片描述
所示,将一台 GPS接收机安装在运动目标(船舶)上就可以进行导航定位计算。GPS 接收机可以实时收到在轨的导航卫星播发的信号,计算出接收载体(船舶)的位置和速度。由于民用领域CPS导航卫星播发的信号人为加入了高频振荡随机干扰信号,致使所有派生的卫星信号均产生高频抖动。为了提高定位精度,需要对GPS关于船舶的位置和速度的观测信号进行滤波。在 GPS系统中人为加入的高频随机干扰信号可看成观测噪声、观测噪声强度(方差)可用系统辨识方法求得。
为将模型简单化.假定船舶出港沿某直线方向航行。以港口码头的出发处为坐标原点,设采样时间为T,用s(k)表示船舶在采样时刻T。处的真实位置,用y(k)表示在时刻kT。处
GPS定位的观测值,则有观测模型∶
y ( k ) = s ( k ) + v ( k ) y(k)=s(k)+v(k) y(k)=s(k)+v(k)

%%%%%%%%%%%%%%%%%%%%%%%%%% %% %%%%%%%%%%%%%%% %%
function KalmanForGPS % Kalman滤波在船舶GPS导航定位系统中的应用
dt = 1; %雷达扫描周期

T=80/ dt; %总的采样次数

F=[ 1, dt ,0 ,0;
    0,1,0,0;
    0,0, 1 , dt ;
    0 ,0,0,1 ] ;   %状态转移矩阵

H=[ 1,0,0,0;
    0,0,1,0]; %。观测矩阵

delta_w= 1e-2; % 如果增大这个参数,目标真实轨迹就是曲线了

Q=delta_w * diag( [ 0.5,1 ,0.5,1]) ; %过程噪声方差

R= 10 * eye( 2); %观测噪声方差

W = sqrtm( Q) * randn( 4,T); %过程噪声

V =sqrtm(R) * randn( 2,T);  %观测噪声

%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% %%%%%%%%%%
X = zeros( 4,T); %。目标真实位置、速度

X( :,1)=[-100,2,200, 20]; %目标初始位置、速度

Z=zeros( 2,T); %传感器对位置的观测

Z( :,1)=[X( 1,1 ),X(3,1)]; %观测初始化

Xkf=zeros( 4,T); %。Kalman滤波状态初始化

Xkf( : ,1)=X( :,1 );
P=eye( 4 ); %协方差阵初始化

for k=2:T
    %船体自身运动
    X ( : ,k)=F* X( :,k- 1)+W( :,k ) ;     %目标真实轨迹

    %获取卫星数据,观测信息开始滤波
    Z( :,k)=H*X( :,k)+V( :,k);     %自导航,观测信息
    
    %% Predict
    Xpre =F* Xkf( : ,k-1 );  %第一步:状态预测
    Ppre=F*P*F'+Q; %第二步:协方差预测
    
    %% Update
    K=Ppre*H'*inv( H * Ppre * H'+R); %第三步:求增益
    Xkf( : ,k )= Xpre+K*(Z( :,k)-H * Xpre);%第四步:状态更新
    P=(eye( 4)-K* H) * Ppre ; %第五步:协方差更新

end
%误差分析
for i= 1 :T
    Err_Observation( i)= RMS(X( :,i) ,Z( : ,i));  %滤波前的误差

    Err_KalmanFilter( i)= RMS(X( :,i) ,Xkf( : ,i) );%滤波后的误差

end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%画图
figure %轨迹图
hold on ; box on ; xlabel ( 'X/m') ; ylabel( 'Y/m' ) ;
plot( X( 1 ,: ) ,X( 3,: ) ,'-k'); %真实轨迹

plot( Z( 1 , :) ,Z( 2,: ) , '-b. ' ); %观测轨迹

plot ( Xkf(1 ,: ),Xkf( 3, : ) , '-r+'); %Kalman 滤波轨迹

legend('真实轨迹','观测轨迹','滤波轨迹');

figure %。误差图

hold on; box on ; xlabel( 'Time/s' ); ylabel( 'value of the deviation/ m') ;
plot( Err_Observation , '-ko' , 'MarkerFace' , 'g');
plot( Err_KalmanFilter , '-ks' , 'MarkerFace' , 'r');
legend('观测偏差','滤波后偏差')
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% %% %%
%子函数:计算偏差
    function dist=RMS(X1,X2)
        if length(X2)<=2
            dist = sqrt((X1( 1)-X2(1))^2 + (X1( 3)-X2(2))^2 );
        else
            dist = sqrt((X1( 1)-X2(1))^2+(X1 (3)-X2( 3))^2 );
        end
    end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end```

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LabVIEW数据抖动处理是一种减轻信号与数据震荡的方法。在实际应用,我们经常会遇到数据的抖动或噪声,这可能会导致数据不稳定、无法准确分析和处理。而通过LabVIEW,我们可以采取一些措施来处理数据抖动。 首先,我们可以使用滤波器对数据进行平滑处理。滤波器可以通过去除高频噪声信号来减轻数据抖动。LabVIEW提供了多种信号滤波器,可以根据实际需求选择合适的滤波器来处理数据抖动。 其次,我们可以使用数据处理技术,如统计分析、平均化等来处理数据抖动。通过多次采样和平均计算,可以减少数据抖动带来的干扰。LabVIEW提供了各种数据处理函数和工具,可以方便地进行数据处理和分析。 此外,我们还可以采用数据校准和校正的方法来处理数据抖动。通过对传感器或测量设备进行校准和校正,可以提高数据的准确性和稳定性,降低数据抖动的影响。LabVIEW可以通过与传感器和设备进行交互,实时校正数据,提高数据处理的精度。 总的来说,LabVIEW提供了丰富的工具和函数来处理数据抖动。通过合理的滤波、数据处理和校准等手段,可以有效减轻数据抖动带来的影响,提高数据处理的可靠性和准确性。这为工程师和研究人员在实际应用提供了很大的便利和支持。 ### 回答2: 在LabVIEW,可以采用多种方法来处理数据抖动。以下是几种常见的处理方法: 1. 平均滤波:对连续采集的数据进行平均滤波可以减小抖动的影响。可以使用移动平均或滑动平均等算法来计算数据的平均值,并将平均值作为输出数据。 2. 值滤波:值滤波是一种非线性滤波方法,可以有效抑制噪声和抖动。该方法通过计算一组数据的值,将值作为输出数据,即可实现抖动的消除。 3. 低通滤波:低通滤波器可以降低高频噪声和抖动对信号的影响。可以使用Butterworth、Chebyshev等滤波器设计方法,选择一个适当的截止频率,将信号通过滤波器后得到较为平滑的输出数据。 4. 插值算法:对于采样率较低的信号,可以使用插值算法来增加采样点,从而减小数据抖动。常见的插值算法有线性插值、样条插值、拉格朗日插值等。 5. 校正算法:一些数据抖动可能是由于传感器或硬件设备的误差导致的。可以通过校正算法来对数据进行修正,减小或消除抖动。常见的校正算法有零漂校正、增益校正等。 综上所述,LabVIEW提供了丰富的工具和方法来处理数据抖动。根据具体的应用场景和要求,我们可以选择适当的方法来处理数据抖动,以保证获得准确可靠的数据。 ### 回答3: LabVIEW是一种流行的可视化编程语言开发环境,用于实时数据采集和处理。在数据处理,抖动是指数据在一定时间范围内出现大幅度波动的现象。 这可能是由于各种因素引起的,如传感器噪声,电磁干扰等。 对于数据抖动处理,LabVIEW提供了一些工具和技术。 一种常见的方法是平滑滤波技术。通过在数据采集前或数据处理过程应用滤波器,可以降低数据的噪声和抖动。LabVIEW提供了各种滤波器模块,如FIR滤波器(有限脉冲响应)和IIR滤波器(无限脉冲响应),可以选择合适的滤波器类型和参数来平滑数据。 另一种方法是采用数据平均技术,这可以通过对一段时间内的数据进行平均来减少数据抖动。LabVIEW提供了滚动平均和移动平均等功能块,可以很容易地实现数据平均。 此外,LabVIEW还提供了数据后处理功能,可以对数据进行统计分析、变换等操作,进一步减小抖动的影响。 需要根据具体情况来选择合适的处理方法。可以通过调整滤波器的参数、平均数据的窗口大小等来优化数据抖动处理效果。 总之,LabVIEW提供了各种工具和技术来处理数据抖动问题。通过合理地选择和应用这些工具,可以有效减小数据抖动的影响,从而得到更加稳定和可靠的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值