前言:ROS机器人操作系统(Robot Operating System)用于编写机器人软件程序的一种具有高度灵活性的软件架构,随着市场智能化的发展,机器人从原来的封闭工厂开始走向户外,而GNSS作为户外高精度定位解决方案,因为其全天时全天候和高精度定位的特点,成为移动机器人ROS主流的集成方案。基于此,本文就北斗/GNSS其主要原理及特点,共同探讨其在ROS机器人系统的相关应用。 一. GNSS系统 GNSS全球导航卫星系统(Global Navigation Satellite System)是利用一组卫星的伪距、星历、时间等观测量,在地球表面或近地空间的任何地点为用户提供全天候全天时的三维坐标、速度以及时间信息的空基无线电导航定位系统,其精度分为米级、分米级和厘米级,测速精度可达0.03m/s,授时精度达纳秒级别。 GNSS误差源: 与卫星相关。包括卫星轨道误差、卫星钟差、相对论效应。 与传播途径相关。电离层误差、对流层误差、多路径效应。 与接收设备相关。接收机天线相位中心偏移和变化、接收机钟差、接收机内部噪声。 其他影响。地球潮汐、负荷潮。 二. 原理解析 1.RTK差分定位 在利用GNSS进行定位时,会受到各种各样因素的影响,为了消除这些误差源,必须使用两台以上的GNSS接收机同步工作。GNSS静态测量的方法是各个接收机独立观测,然后用后处理软件进行差分解算。那么对于RTK测量来说,仍然是差分解算,只不过是实时的差分计算。对于移动机器人主要用到的是RTK技术。 实时动态差分法(Real-time kinematic,RTK,载波相位差分技术):基准站通过数据链将其载波观测量及站坐标信息一同传送给用户站。用户站接收卫星的载波相位与来自基准站的载波相位,组成相位差分观测值进行处理,计算后给出厘米级的定位结果。 RTK系统由三部分组成:基准站(差分数据源)、差分数据通讯链(网络、电台、4G等)、移动站(终端) RTK精度影响 移动站和基站观测到的共同卫星数:RTK精确定位要求要求移动站与基站观测到相同的多频段卫星且卫星数量、质量满足其解算要求才能实现RTK固定解,观测到越多的卫星就能越快速的得到RTK固定解。 移动站和基站距离:移动站与基站之间的距离有要求,低纬度地区的基站有效覆盖距离小,高纬度地区的距离远;随着移动站与基站的距离增加,误差会越来越大。 RTK解的形式 单点解:是RTK在工作的时候移动站和基准站互相不能联系,接收机未使用任何差分改正信息计算的3D坐标 浮动解:精度相对高一点,但其精度一般是不可靠的,定位精度可接近于固定解或到达20-30cm,在遮挡严重环境下获取的一般是浮点解 固定解:是RTK的精确定位数据,精度一般在2-5cm 2.Ntrip协议 Ntirp协议是针对于RTK系统中,通过网络传播的区域地基增强系统,其结构如上图所示,主要包括如下三部分: Ntrip Server:通过某种途径获取基准站的差分观测数据,然后传送给Ntrip Caster数据中心; Ntrip Caster:接收Ntrip Server的差分观测数据,给Ntrip Client发送差分数据; Ntrip Client:向Ntrip Caster请求基站差分观测数据,最终实现RTK定位 3.NMEA-0183协议 NMEA是National Marine Electronics Association(美国国家海事电子协会)的缩写。该协会是一家专门从事海洋电子设备方面研究的民间机构,它制定了关于GNSS(全球定位系统)电子设备之间的通信接口和协议的NMEA标准。 NMEA-0183协议是目前GNSS接收机上使用最广泛的协议,大多数常见的GNSS接收机、GNSS数据处理软件、导航软件都遵守或者至少兼容这个协议。NMEA-0183协议定义的语句非常多,常用的兼容性最广的语句有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG等。 协议采用ASCII码,其串行通信默认参数为:波特率115200(与接收机厂家定义相关),数据位8bit,开始位1bit,停止位1bit,无奇偶校验。 一. 应用 计算机(联网)通过Ntrip获取基站的差分观测数据,然后通过串口给到北斗/GNSS板卡,板卡通过接收到的基站差分观测数据解算出RTK定位数据并上发,系统通过NMEA-0183协议解析相关数据。 1. RTKLIB RTKLIB是全球导航卫星系统GNSS(global navigation satellite system)的标准&精密定位开源程序包,RTKLIB由日本东京海洋大学(Tokyo University of Marine Science and Technology)的高须知二(Tomoji Takasu)开发。RTKLIB由一个便携式程序库和多个AP(应用程序)工具库组成。RTKLIB的主要功能有: 支持多个GNSS系统的标准和精密定位算法,包括GPS,GLONASS,Beidou,Galileo,QZSS和SBAS 支持多种GNSS实时和后处理定位模式:单点定位、DGPS/DGNSS,动态RTK、静态RTK、移动基站、PPP 支持多种GNSS标准格式和协议:RINEX2.10、RINEX2.11、RINEX2.12、RINEX3.00、RINEX3.01、RINEX3.02、RTCM2.3、RTCM3.1、RTCM3.2、BINEX、NTRIP、NMEA0183、SP3、ANTEX1.4、IONEX1.0、NGS PCV、EMS 2.0 支持外部通信:Serial、TCP/IP、NTRIP、本地日志文件(记录和播发)和FTP/HTTP 提供许多函数库和API(application program interfaces):卫星和导航系统函数、矩阵和向量函数,时间和字符串函数、坐标的转换,输入和输出函数、调试跟踪函数、平台依赖函数、定位模型、大气模型、天线模型、地球潮汐模型、大地水准面模型、基准转换、RINEX函数、星历和时钟函数、精密星历和时钟、接收机原始数据函数、RTCM函数,解算函数、谷歌地球KML转换、SBAS函数、选项(option)函数、流数据输入和输出函数、整周模糊度解算、标准定位、精密定位、后处理定位(解算)、流服务器函数、RTK服务器函数、下载函数。 RTKLIB包含Ntrip协议,基于此可以获取基站的差分观测数据,也可以对于获取的数据进行基础处理分析。 2.ROS ROS通过串口获取北斗/GNSS板卡RTK解算好的NMEA数据进行分析,最终实现机器人的位置感知以及操作控制。 值得一提的是,我们通常有个误解,通过GNSS测量的速度是位置与时间的函数。如果是这种情况,GNSS的速度几乎无法使用,GNSS位置依赖于接收机到卫星距离的精准测量,这一步骤受大气、钟差等多种因素影响,精度不可控。 事实上,速度测量是基于卫星信号的多普勒频移,具有极高的速度测量精度,在单点米级定位的基础上,速度精度也能达到厘米级的测速精度。
|