将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹
将ros中的gps_msg数据导入google earth显示轨迹
1. 获取GPS数据
- 将ros中发布的gps topic输出到文本中
rostopic echo -p /gpsData>gpsData
得到如下格式的数据

- 数据格式转换
因为google earth支持的kml文件中需要导入longitude,latitude,altitude 格式的数据,所以需要对生成的数据文件进行处理,这里我使用python和正则表达式写了个小程序实现数据格式的转换
import re
f_in = open(r'/home/nico/gpsData')
f_out = open(r'/home/nico/gps_kml','w')
a=f_in.readlines()
for line in a[1:]:
m=re.match(r'^(\w*\,){6}([\d\-]*\.\d*)\,([\d\-]*\.\d*)\,([\d\-]*\.\d*)(\,\d*\.\d*){9}(\,\d*)$',line)
lon=m.group(3)
lat=m.group(2)
alt=m.group(4)
gpsData = lon+','+lat+','+alt+' '
f_out.write(gpsData)
f_in.close()
f_out.close()
输出的gps_kml文件即为转换后的结果
2. 将GPS数据导入kml模板显示轨迹点
因为要在google earth中显示轨迹,需要导入kml文件,链接中包含相关语法教程这里使用一个比较简便的方法,从google earth 中生成一个kml模板,把其中的gps数据替换成我们自己的数据即可,具体步骤如下:
在Temporary Places单击右键add一个Folder
此处命名为sia

在sia处单击右键选择add->path
这里可以自行设置轨迹的线宽颜色等,然后在google earth 上按住鼠标左键拖动绘制你想要显示的轨迹,完成后点击ok

保存
sia文件夹处单击右键选择save place as...则可以在目标文件夹看到生成的kml文件替换gps数据
找到kml文件中的coordinate处,将其中的gps数据替换成自己的gps数据即可以看到轨迹

注意替换成自己数据时保证数据格式为lon,lat,alt lon,lat,alt lon,lat,alt lon,lat,alt ...这样的格式,即经纬高之间用‘,’隔开,不可包含空格等符号,否则显示错误轨迹,gps点与点的三个坐标之间使用空格或换行符均可。
3. 轨迹显示
点击File->open->选择替换成自己数据后的kml文件

这是导入一组实验数据后生成的轨迹,符合实测情况

将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹的更多相关文章
- html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)
html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图: 运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select>&l ...
- DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth【转】
其实本来,我就是需要把一个autocad的dwg/dgn格式的东西导入到google earth里面:但是首先我对dwg/dgn格式的东西根本就不熟:其次我拿到的dwg/dgn格式文件是用的HK8 ...
- java中 Excel表实现数据导入导出
需要引入依赖: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> < ...
- docker中mysql数据库的数据导入和导出
导出数据 查看下 mysql 运行名称 docker ps 结果:  执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker ...
- 将页面中指定表格的数据导入到Excel中
function AutoExcel(){ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象 var o ...
- java将数据库中查询到的数据导入到Excel表格
1.Maven需要的依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> ...
- ACCESS删除datagridview和数据库中的一条数据,同时更新显示的方法源码
//删除,行删除 private void 删除_Click(object sender, EventArgs e) { int dgrcount = dataGridView1.SelectedRo ...
- 在table中选中某条数据,让其显示对应详细信息
在第一个页面中使用 ccms.dialog.open({url:url+$(this).attr("code"),id:"dialogPic",width:10 ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
随机推荐
- Omi实战-QQ附近用户列表Web页
原文地址https://github.com/AlloyTeam/omi/blob/master/docs/cn_pr_nearby.md 写在前面 Omi很适合大型复杂的Web页面开发,例如一些We ...
- 每天一个linux命令(33)--du命令
Linux du命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df 命令有一些区别的. 1.命令格式: du [选项] [文 ...
- Dapper的扩展这个你知道嘛?
之前写的ORM对比文章中,我选Dapper作为底层ADO的基础访问框架后,我对此再次进行进一步的深入研究,发现里面还有延伸了一些好用的扩展方法和特性,那我便简单的跟大家说一下特性标签. 一.Table ...
- c#基础语句——分支语句的应用
一.if...else... if是如果的意思,else是另外的意思,if后面跟(),括号内为判断条件,如果符合条件则进入if语句执行命令.如果不符合则不进入if语句.else后不用加条件,但是必须与 ...
- 【2017-2-17】C#基础 - 定义变量,输入输出
1.初学C#. C#是专门为.NET的应用而开发的语言,他吸收了C++.Visual Basic.Delphi.Java等语言的优点,提高了程序开发的效率. 2.Visual Studio.NET的集 ...
- 2017-3-2 C#链接数据库实现登陆
只是链接一个数据库就有好多的知识:) 实际操作下来,主要是两种登陆方式: 1.Windows的身份验证: 2.Sql Sever的身份验证: 两种的方法不同,但是主要是通过复制创建数据库的字符串来链接 ...
- opensessioninviewFilter导致org.hibernate.NonUniqueObjectException
起因: 公司业务需求,增加了一个新的数据源,增加之后,起初一切正常,但是发现后台管理系统所有Ajax请求获取信息没有问题,但是涉及到保存操作就抛出异常. 异常: org.hibernate.NonUn ...
- Robot Framework中经常用的第三方库的安装方法
pip升级:python -m pip install --upgrade pip 一.安装robotframework-selenium2library,相当于python中的selenium ...
- MyBatis的类型自定义映射
背景 利用MyBatis将数据库的时间类型映射成Java8的时间类型,引申对不同类型的自定义映射 实现方法 1.实现MyBatis中TypeHandler接口 @MappedTypes(value = ...
- 3步轻松搭建Unity3d安卓开发环境
之前写过一个Untiy3d安卓开发环境的配置教程,那是我第一次学习配置安卓开发环境,互联网上的信息良莠不齐,自己当时也不懂,配置步骤麻烦的一塌糊涂,现在见的多了,也会的多了,配置安卓开发环境变得非常容 ...