关于ROS开源程序包——gps_common

转载自:https://zhuanlan.zhihu.com/p/156716344

关于ROS开源程序包——gps_common

关于ROS开源程序包——gps_common_第1张图片

好严谨的名字

离牛逼就差一步

项目需要,看了下gps_common的源码文件,非常简单的一个小项目,包含的程序却非常实用。

经纬度坐标与UTM坐标的相互转换

包中最重要,也是被其他开源项目引用最多的一段程序,莫过于位于gps_common/include/gps_common文件下的conversion.h头文件,文件中的函数都是以C++内联函数的形式写成,所以没有.cpp文件。文件实现的功能也很简单,主要就是将由GPS获取到的经纬度坐标,转换到投影坐标UTM坐标系下,以及将UTM坐标转换成经纬度坐标。关于转换公式可以参考下面两篇论文《高斯_克吕格投影和横轴墨卡托_UTM_投影的异同_孙立东》、《UTM投影及投影变形处理_刘明波》。

navsatfix与odometry的相互转换

GPS驱动程序发布的位置数据的数据格式,大多数是sensor_msgs包中的NavSatFix.msg,关于数据格式的详细定义,可以参考其数据格式文件。然而,项目中经常用到的数据格式为nav_msgs包中的Odometry.msg。为方便两种数据格式的转换,在gps_common/src文件夹下定义了两个node文件—— utm_odometry_node.cpp、utm_odometry_to_navsatfix_node.cpp。

gpsfix与navsatfix的相互转换

关于GPS数据,我们通常将其保存成NavSatFix.msg定义的数据格式,这对单GPS的数据保存没有问题,但是对由双GPS获取到的测量数据,则无法完全保存。gps_common中定义另一种数据格式GPSFix.msg,它对GPS数据实现了一个较为完整的定义,可以作为sensor_msgs/NavSatFix格式的一个补充。

同时gps_common包中还提供了上述两种数据格式的一个转换程序。位于gps_common/src/gps_common文件夹下的gps_message_converter.py文件中定义了两个转换函数可以实现两种数据格式的转换。位于gps_common/nodes文件夹下的fix_translator文件可以将通过ROS话题接受到的navsatfix格式数据转换为gpsfix格式,将接受到的gpsfix格式数据转换为navsatfix话题。位于gps_common/scripts文件夹下的bag_converter文件,读取bag(由rosbag录制产生)文件,并将文件中记录的navsatfix格式数据转换为gpsfix格式,将gpsfix格式数据转换为navsatfix格式数据。

发布于 2020-07-05

你可能感兴趣的:(多传感器融合/状态估计)