一种船用GPS航向平滑更新方法技术领域
本发明涉及GPS航向平滑领域,特别涉及一种船用GPS航向平滑更新方法。
背景技术
在装有导航仪的船舶中,导航仪接入GPS设备。当船舶航速较小时,导航仪收到的
GPS航向数据不准确,会出现相邻点跳动幅度较大的情况。GPS航向数据的跳动,导致导航仪
和其他船只会遇告警,且此告警为航向数据不准确造成的虚警。
传统的航向平滑算法有曲线拟合和滑动平均算法,这两种算法在相邻点跳动不大
的情况下,均能取得较好的效果,但是在相邻航向点跳动较大时,效果很不理想,即航速较
小时,相邻航向点跳动较大,效果很不理想。
发明内容
本发明提供一种船用GPS航向平滑更新方法,解决在小航速情况下,航向数据不准
确的问题。
一种船用GPS航向平滑更新方法,包括如下步骤:
S1:获取GPS第i帧数据,从GPS第i帧数据中解析出经纬度i、航向信息i;
S2:若i为1时,将经纬度i、航向信息i赋予给导航设备,导航设备的位置信息为经纬度
i、航向newCourse为航向信息i,经纬度i、航向信息i作为导航信息后,结束更新;
S3:若i为大于1的正整数时,获取GPS第i-1帧数据,从GPS第i-1帧数据中解析出经纬度
i-1、航向信息i-1,计算经纬度i-1与经纬度i的距离Dist、方位Azimuth;
S4:若距离Dist大于距离门限DistTH时,将经纬度i、方位Azimuth赋予给导航设备,导
航设备的位置信息更新为经纬度i、航向newCourse更新为方位Azimuth,完成航向平滑更
新;
S5:若距离Dist小于或等于距离门限DistTH时,则导航设备的位置信息为经纬度i、航
向newCourse为航向信息i,然后计数器加1,获取下一帧GPS数据,直到获取GPS第i+N帧数据
时,距离Dist大于距离门限距离DistTH后再执行S4。
上述方案的技术原理为:传统的航向平滑更新方法有曲线拟合和滑动平均算法,
在高速航行情况下,这两种算法的航向相邻点跳动不大,均能取得较好的效果,但是在低航
速情况下,相邻航向点跳动较大,效果很不理想。本发明基于两帧的GPS数据中的经纬度来
得出距离Dist、方位Azimuth,然后采用距离Dist比较距离门限DistTH的方式确定是否要更
新前一帧状态下的经纬度和航向,在距离Dist>门限DistTH的情况下,更新当前经纬度替
换原经纬度,更新方位Azimuth替换原方位Azimuth,由于利用两帧的GPS数据计算获得方位
Azimuth,可以获得更准确的航向,因此,采用上述方法可以使得航向平滑更新,提高航向数
据准确度,例如,前一帧状态下,船只的经纬度为经纬度1、航向为航向1,在下一帧GPS数据
到达时,获得该GPS数据的经纬度2,航向2,利用经纬度2和经纬度1计算得到距离Dist、方位
Azimuth,当距离Dist>门限DistTH时,我们认为船只行驶移动了足够距离,船只位置发生
了变化,可以进行上述更新,而依靠2个经纬度计算获得方位更加可靠;如距离Dist≤门限
DistTH时,则视船只位置没变,可以保留原经纬度和航向,导航信息不更新,这样就保证了
只有在船只位置发生了变化时才进行导航信息更新。
优选的,所述距离门限DistTH为:5米至30米。
优选的,S1步骤前还需执行计算航速步骤,当航速小于或等于3米/秒时,再执行
S1、S2、 S3、 S4、 S5。
本发明的优点有:传统的航向平滑算法中的曲线拟合和滑动平均算法,在相邻点
跳动较大的情况下,效果很不理想。本文提出了一种GPS航向平滑算法,该算法在相邻点跳
动较大情况下,实现较好的平滑效果,且该算法计算量小,易于工程实现。
附图说明
图1本发明实施例2的数据匹配图。
图2本发明实施例3的数据匹配图。
具体实施方式
下面结合实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式
不限于此。
实施例1:
如图1和图2所示。
一种船用GPS航向平滑更新方法,包括如下步骤:
S1:获取GPS第i帧数据,从GPS第i帧数据中解析出经纬度i、航向信息i;
S2:若i为1时,将经纬度i、航向信息i赋予给导航设备,导航设备的位置信息为经纬度
i、航向newCourse为航向信息i,经纬度i、航向信息i作为导航信息后,结束更新;
S3:若i为大于1的正整数时,获取GPS第i-1帧数据,从GPS第i-1帧数据中解析出经纬度
i-1、航向信息i-1,计算经纬度i-1与经纬度i的距离Dist、方位Azimuth;
S4:若距离Dist大于距离门限DistTH时,将经纬度i、方位Azimuth赋予给导航设备,导
航设备的位置信息更新为经纬度i、航向newCourse更新为方位Azimuth,完成航向平滑更
新;
S5:若距离Dist小于或等于距离门限DistTH时,则导航设备的位置信息为经纬度i、航
向newCourse为航向信息i,然后计数器加1,获取下一帧GPS数据,直到获取GPS第i+N帧数据
时,距离Dist大于距离门限距离DistTH后再执行S4。
上述方案的技术原理为:传统的航向平滑更新方法有曲线拟合和滑动平均算法,
在高速航行情况下,这两种算法的航向相邻点跳动不大,均能取得较好的效果,但是在低航
速情况下,相邻航向点跳动较大,效果很不理想。本发明基于两帧的GPS数据中的经纬度来
得出距离Dist、方位Azimuth,然后采用距离Dist比较距离门限DistTH的方式确定是否要更
新前一帧状态下的经纬度和航向,在距离Dist>门限DistTH的情况下,更新当前经纬度替
换原经纬度,更新方位Azimuth替换原方位Azimuth,由于利用两帧的GPS数据计算获得方位
Azimuth,可以获得最准确的航向,因此,采用上述方法可以使得航向平滑更新,提高航向数
据准确度,例如,前一帧状态下,船只的经纬度为经纬度1、航向为航向1,在下一帧GPS数据
到达时,获得该GPS数据的经纬度2,航向2,利用经纬度2和经纬度1计算得到距离Dist、方位
Azimuth,当距离Dist>门限DistTH时,我们认为船只行驶移动了足够距离,船只位置发生
了变化,可以进行上述更新,而依靠2个经纬度计算获得方位更加可靠;如距离Dist≤门限
DistTH时,则视船只位置没变,可以保留原经纬度和航向,导航信息不更新,这样就保证了
只有在船只位置发生了变化时才进行导航信息更新。
优选的,所述距离门限DistTH为:5米至30米。
优选的,S1步骤前还需执行计算航速步骤,当航速小于或等于3米/秒时,再执行
S1、S2、 S3、 S4、 S5。
实施例2
具体的如图1所示:
第1帧状态下,接收到GPS第1帧数据,包括经纬度1、航向信息1,此时,将经纬度1、航向
信息1赋值给在第1帧状态下的导航设备,第1帧状态下的导航设备的导航信息包括经纬度
1、航向信息1。
在第2帧状态下,接收到GPS第2帧数据,包括经纬度2、航向信息2,此时,通过经纬
度1(前一经纬度)与经纬度2(当前经纬度)计算得到距离Dist、方位Azimuth,此时的距离
Dist大于距离门限DistTH,则将经纬度2、方位Azimuth赋值给在第2帧状态下的导航设备,
第2帧状态下的导航设备的导航信息包括经纬度2、方位Azimuth,同理,之后的GPS帧数据都
按此状态执行,每一帧状态下的距离Dist都满足大于距离门限DistTH的要求,因此,不断更
新当前帧状态下所获得的经纬度和方位Azimuth。
实施例3
如图2所示:
第1帧状态下,接收到GPS第1帧数据,包括经纬度1、航向信息1,此时,将经纬度1、航向
信息1赋值给在第1帧状态下的导航设备,第1帧状态下的导航设备的导航信息包括经纬度
1、航向信息1。
在第2帧状态下,接收到GPS第2帧数据,包括经纬度2、航向信息2,此时,通过经纬
度1(前一经纬度)与经纬度2(当前经纬度)计算得到距离Dist、方位Azimuth,此时的距离
Dist小于或等于距离门限DistTH,此时导航设备不更新;一直获得下一帧,直到第1+N帧状
态下,接收到GPS第1+N帧数据,包括经纬度1+N、航向信息1+N,此时,通过经纬度1(前一经纬
度)与经纬度1+N(当前经纬度)计算得到距离Dist、方位Azimuth,此时的距离Dist大于距离
门限DistTH,则将经纬度1+N、方位Azimuth赋值给在第1+N帧状态下的导航设备,第1+N帧状
态下的导航设备的导航信息包括经纬度1+N、方位Azimuth,此时的导航设备才完成一次更
新。
实施例3
本发明的具体实施步骤如下:
第1步:当收到第一帧数据,判断计数器count是否等于1。若count等于1,将其经纬度分
别存储为beginLon1、beginLat1,将GPS航向赋值给平滑后的航向newCourse,计数器count
加1;
第2步:当收到第二帧数据,判断计数器count是否等于2,若count等于2,计算该帧数据
中的经纬度与beginLon1 ,beginLat1的距离Dist、方位Azimuth,若距离Dist大于距离门限
DistTH,则将该帧数据中的经纬度分别赋值给beginLon2,beginLat2,将Azimuth赋值给
newCourse,完成更新,计数器count加1。若Dist小于等于距离门限DistTH,直接退出程序;
第3步:若第2步中Dist小于等于DistTH,继续执行第2步,直到收到第i帧数据时,Dist
大于DistTH为止。
第4步:当收到第i+1帧数据,首先将GPS经纬度数据分别赋值给EndLon、EndLat,将
BeginLat2赋值给BeginLat、BeginLon2赋值给BeginLon,根据起始点经纬度BeginLon、
BeginLat和结束点经纬度EndLon、EndLat,计算两点的距离Dist和方位Azimuth。
第5步:判断Dist是否大于DistTH。
第6步:若第5步成立,则将BeginLat2赋值给BeginLat1、将BeginLon2赋值给
BeginLon1,将本帧数据中的GPS经纬度分别赋值给BeginLon2、BeginLat2,并且将Azimuth
赋值给newCourse。
第7步:若第5步不成立,则将BeginLat1赋值给BeginLon、BeginLon1赋值给
BeginLon,将本帧数据中的GPS经纬度分别赋值给EndLon、EndLat, 根据起始点经纬度
BeginLon、BeginLat和结束点经纬度EndLon、EndLat,计算两点的距离Dist和方位Azimuth,
并且将计算出的方位Azimuth赋值给newCourse。
第8步:当收到第N(N >=i+2)帧数据,重复第4到第7步即可。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依
据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护
范围之内。