首页 > 其他分享 >GPS数据类型(ROS) Label: Research

GPS数据类型(ROS) Label: Research

时间:2022-12-25 18:00:32浏览次数:67  
标签:msgs Research 数据类型 Label nmea 传感器 ROS sensor GPS

转载自ROS传感器之GPS简介

一. 传感器分类

在自动驾驶或者机器人领域,传感器的使用按照测量对象划分,可分为两大类,一类是测量自身状态,另一类测量环境状态。前者主要包含GPS,IMU和编码器;后者主要有激光雷达、毫米波雷达和相机。这里的状态主要是指位置和速度,有些传感器可以测量其他状态,例如相机可以实现物体的分类。本篇介绍GPS传感器,以及在ROS系统中如何表示GPS数据。

二. 作用

GPS传感器,全称Global Positioning System,源自美国军方,是现在使用比较广泛的四种全球定位系统之一,其他三种分别是欧盟的“伽利略”系统,俄罗斯的“格洛纳斯”系统,以及中国北斗卫星导航系统。

三. 系统组成

GPS与其他传感器有一个显著的不同点,其他传感器基本上是一个单独的硬件模块,而GPS是一个系统,其架构图如下:

 如图所示,GPS系统包含三个部分:空间部分,地面监控部分,用户部分。空间部分主要是卫星群,向用户部分发送位置、时间等信息;地面监控部分,监视控制空间部分;用户部分接受空间部分发送的信息,根据信息计算本身的三维位置、速度和时间等。日常生活中,我们常说的GPS、或者GPS传感器其实是指GSP客户部分,即GPS接收机。为叙述方便,无特别说明,以下所说的gps均指用户部分。

四. 位置表示

既然要表示位置,那一定会有坐标系,GPS所采用的坐标系又称为WGS84坐标系,其原点为地球质心,z轴为国际时间局(BIH)1984.0定义的协议地极(CTP)方向,X轴指向BIH1984.0的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。其数据主要包含经纬度和高度。不清楚这个坐标系具体是什么样的,也没关系,只需要知道GPS设备反馈的经纬度位置,是基于一个标准坐标系就行了,关于经纬度的概念,网上也有很多,这里不再详述,感兴趣的同学可以自行深入研究。

五. 数据格式

我们知道了gps设备可以测量经纬度、时间和速度等信息,那么这些信息是以什么样的格式表示呢。这里引入NMEA0183,全称National Marine Electronics Association,即美国国家海洋电子协会,这里知道他是gps设备最通用的数据输出格式就行了。NMEA0183定义了很多语句,不同的语句包含了不同的信息,目前大部分gps设备都是兼容NMEA0183的,许多与之配套的软件也是遵从此协议进行解析。关于NMEA0183协议,这里也不做深入介绍,感兴趣的同学可以自行研究。

六. ROS中GPS数据格式

1. nmea_msgs/Sentence

首先安装nmea_msgs包,然后可以使用rosmsg指令查看此消息,命令如下:

sudo apt install ros-melodic-nmea-msgs
rosmsg show nmea_msgs/Sentence

ros内置消息中除基本数据类型之外,基本都会包含header消息头,header包含seq、stamp以及frame_id,分别表示序列号、时间戳和帧id,seq一般从0开始,每次增加1,表示消息序列id;stamp为时间戳,表示ros消息产生的时间。frame_id表示消息发布者,这里的frame常表示坐标系,例如gps、imu和lidar等。

sentence表示GPS裸数据,一般是从驱动文件中直接读取出来,其格式遵守NMEA0183,基于此,可以参考NMEA0183格式,编写解析程序。

2. sensor_msgs/NavSatFix

如果是安装ros desktop full版本,sensor_msgs包默认是安装过得,所以不需要在安装,指令:

rosmsg show sensor_msgs/NavSatFix

header同nmea_msgs/Sentence,status代表全球定位系统类型及其状态,latitude纬度,longitude经度,altitude高度,position_covariance位置协方差,后面几项表示位置协方差类型。sensor_msgs/NavSatFix数据结构是通过解析nmea_msgs/Sentence结构而获取的。

3. sensor_msgs/TimeReference

指令如下:

rosmsg show sensor_msgs/TimeReference

header同上,time_ref表示外部源时间,source表示外部源名称。

4. geometry_msgs/TwistStamped

指令如下:

rosmsg show geometry_msgs/TwistStamped

header同上,twist代表速度,线速度和角速度。

ROS中GPS数据主要包含这四类,分别是gps 裸数据ros封装,位置,时间以及速度。并不是所有的GPS设备都有这四类数据的,具体看GPS硬件设备。

七. 小结

本篇介绍的GPS基本概念,GPS测量的数据,以及数据在ROS中如何表示。下篇将结合几个实际GPS驱动程序,展示在ROS中如何获取以及发布GPS数据。

 

标签:msgs,Research,数据类型,Label,nmea,传感器,ROS,sensor,GPS
From: https://www.cnblogs.com/radiumlrb/p/17004323.html

相关文章