2491|1

1658

帖子

1

TA的资源

纯净的硅(高级)

楼主
 

【TI首届低功耗设计大赛】GPS信号两点距离测算 [复制链接]

本帖最后由 tianshuihu 于 2015-1-7 16:38 编辑

知道两地经纬度坐标之后,关于两地之间距离的测算有很多种方法,网上也有很多介绍

有一个讨论帖,
求根据经纬度精确计算距离的公式
http://club.excelhome.net/thread-666403-1-1.html

还有一个比较专业的国外网站,大家有兴趣的可以看看
http://www.movable-type.co.uk/scripts/latlong.html

我最终选用的是,下面这个公式

d = acos( sin φ1 * sin φ2 + cos φ1 * cos φ2 * cos Δλ ) * R

或者表示为
d = ACOS( SIN(lat1)*SIN(lat2) + COS(lat1)*COS(lat2)*COS(lon2-lon1) ) * 6371

有了理论指导之后,就开始行动了

但是,只能说理论很美好,现实很残酷,真的是一波三折。。。


好不容易把,公式写好,经纬度均换算为弧度表示,但是结果总是不对,
很多时候算出来的距离是0(实际距离为600米左右)

断点调试的时候甚至发现在求反余弦时,有时候余弦值居然大于1

这时候我突然想起了,数据精度的问题!

虽然计算过程中关键数据均选用了double型,但是IAR中默认的double型与float型精度一致,在内存中均占用4个字节

从网上找到了解决方法,在工程文件上右键,option选项,点选 ‘64bits’即可



如果你以为一切到这里就结束了,那可真的是想得太简单了。。。

修改完之后,编译的时候有一条提示,忘了截图,不过浏览器有记录



解决方法有多种,我选择的是破解,下面是从论坛上找到的和谐文件



破解之后,终于编译没错了,数据精度大为提高,于是两点之间的距离也出来了,一切迎刃而解

下面两图为 double型 distance 与 float型 temperature的对比


浮点显示

hex显示


下图为实测距离:以当前位置作为起点,再次测量得到的坐标作为终点,计算距离

左下角为距离,右下角为实时温度,右上角为更新次数的尾数



最后附上距离计算的关键代码

 
点赞 关注(1)

回复
举报

1658

帖子

1

TA的资源

纯净的硅(高级)

沙发
 
之前忘了上传破解工具,这补上

新版本IAR和谐工具.rar (1005.69 KB, 下载次数: 6)
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表