1. 获取GPS数据
将ros中发布的gps topic输出到文本中
rostopic echo -p /gpsData>gpsData
得到如下格式的数据
%time,field.header.seq,field.header.stamp,field.header.frame_id,field.status.status,field.status.service,field.latitude,field.longitude,field.altitude,field.position_covariance0,field.position_covariance1,field.position_covariance2,field.position_covariance3,field.position_covariance4,field.position_covariance5,field.position_covariance6,field.position_covariance7,field.position_covariance8,field.position_covariance_type
1542617612195115368,1897,1542617612195115368,gps,0,0,23.048503491,113.403629414,-42.1641540527,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0
1542617612215240178,1898,1542617612215240178,gps,0,0,23.048503491,113.403629414,-42.1640319824,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0
1542617612235951974,1899,1542617612235951974,gps,0,0,23.0485034911,113.403629414,-42.163860321,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0
1542617612255293910,1900,1542617612255293910,gps,0,0,23.0485034912,113.403629414,-42.1639022827,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0
数据格式转换
因为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数据替换成我们自己的数据即可,具体步骤如下:
在地图标注中我的标注单击右键添加文件夹
此处命名为test
然后添加一个轨迹文件,这添加一个矩形
然后导处为kml格式
替换gps数据
用Notepad++打开文件,找到test.kml文件中的coordinate处,将其中的gps数据替换成自己的gps数据即可以看到轨迹
在箭头所指向的位置替换我们刚才获得gps_kml中的数据
3.轨迹显示
然后导入,结果如下: