GPS两点测距精度问题

2019-10-15 19:14发布

我的GPS是从原子哥这买的,最近做毕设,做的是GSM和GPS汽车防盗系统,我发现GPS测量两点之间的距离要超过38.3125米才能分辨出来(也就是不在是0了),我的思路是,GPS启动完成后,用个外部中断摁键记录当前的经纬度坐标(分别sheding_jingdu,sheding_weidu来表示停车位置),然后,人工模拟汽车被移动(GPS实时获得此时的xianzai_jingdu,xianzai_weidu),并实时计算此时的位置和停车位置之间的距离。 [mw_shl_code=c,true]float GPs_count(void) { float MLatA,MLatB;//MlatA是设定的纬度值计算式子里的形式,同理MlatB是现在车辆的实时纬度值得计算式子里的形式 float MLonA,MLonB;//MLonA设定的经度值,东经取正数,西经取负。 float C; MLatA=90-sheding_weidu;//设定的纬度 MLatB=90-xianzai_weidu;//现在的纬度 MLonA=sheding_jingdu;//设定的经度 MLonB=xianzai_jingdu;//设定的纬度 C=sin(MLatA)*sin(MLatB)*cos(MLonA- MLonB)+cos(MLatA)*cos(MLatB); Distance=1000.00000*R*acosf(C)*Pi/180.00000; // 千米*1000化成米为单位 sprintf((char *)dtbuf,"Distance:%.5f %1c ",Distance,'m'); //得到经度字符串 LCD_ShowString(30,64,dtbuf,GREEN,BLACK); //显示实际停车位置和当前的车辆位置之间的距离 return Distance; }[/mw_shl_code] 上面这个函数的由来,来源于我下面这张图,网址http://blog.csdn.net/lfqsy/article/details/6750537   ,原子哥有什么好思路么。急求,快答辩咯
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
正点原子
1楼-- · 2019-10-15 21:40
这个没什么好办法哦
看你的定位质量,经纬度应该是一直抖动的,你的会一直是一个值??
huangchangxin10
2楼-- · 2019-10-16 03:24
回复【2楼】正点原子:
---------------------------------
我的确实不是一个 定值,但是停车位置固定(由摁键设定),车辆移动肯定会变化,我就在原子哥你这个void Gps_Msg_Show(void)函数里每次都调用距离计算函数float GPs_count(void),但是发现精度没想象中的10米,晚上10点多的时候,我发现一个更糟的结果,我回到原来的位置,经度差值居然差了0.00007°,1经度85.39km,那么距离居然差了5.9773米。纬度差值为0     .我的经纬度差值实时显示在lcd上面。后来我干脆这么想,你不是1经度85.39km么,1纬度大约111km ,于是我直接用上面的Distance1=(经度差值*85.39)*1000米,Distance2=(纬度差值*111)*1000,结果距离值就不再从零 开始了,每次都有读数。但是跳变得厉害,,,,有什么解决办法能稳定一下数值么
盒子
3楼-- · 2019-10-16 05:56
做做 滤波了么
huangchangxin10
4楼-- · 2019-10-16 08:27
回复【4楼】盒子:
---------------------------------
没研究过率滤波算法,能给说说思路么
huangchangxin10
5楼-- · 2019-10-16 08:43
 精彩回答 2  元偷偷看……
huangchangxin10
6楼-- · 2019-10-16 13:57
回复【6楼】huangchangxin10:
---------------------------------
想想,好像可以用勾股定理,因为报警的距离不超过50米,而地球这么大,类似一个知道两直角边求第三边的几何运算,呵呵

一周热门 更多>