组合导航、卫星定位与RTK、石英表计时

导航是现代生活必不可少的基础设施,大到俄乌冲突导弹互相暴揍,小到出门游玩,都离不开导航功能。我们常说导航,但是导航这一功能的核心是定位。沿着定位这条线我们开始本篇文章的内容。

卫星定位的原理

全球卫星定位系统的英文是Global Navigation Satellite System(GNSS),GNSS主要由空间卫星、地面监控系统、用户接收机三部分组成。空间卫星按照一定的频率昼夜不停的通过高频载波信号广播自己的位置和发送时间戳。用户接收机收到卫星高频载波信号后,通过光速乘以载波传播的时间,便可以计算出与卫星的距离,用公式表达如下。

式中,(x1, y1, z1)为卫星坐标,已知量;(x, y, z)为接收机位置,未知量;c为光速,已知量;△t为卫星载波到达接收机所经历的时间,已知量。卫星和接收机使用各自的时钟计时,卫星上使用精度极高的原子钟,可以认为是无误差的时钟源。而接收机上一般为普通的石英钟,存在较大的且不可忽略的时钟误差 tl,因此在计算时需要其影响,未知量。

从以上公式可知,存在四个未知量,需要四个方程式才可以求解。因此还需要接收到另外卫星载波信号,才可计算出接收机的位置。这也是为什么,GNSS需要在可以接收到四颗及以上数量卫星信号的地方才能正常工作。

但由于内部和外部误差的存在,包括卫星高频载波穿透电离层和对流层产生的误差、卫星高速移动产生的多普勒效应引起的误差、轨道误差,卫星钟差、星历误差等,单纯GNSS的定位精度只能达到米级,无法满足自动驾驶对厘米级的定位需求。在这里插入图片描述
星历是描述卫星运行轨道的一组参数,卫星轨道是一个椭圆,通过几个参数和时间,可以唯一确定卫星的准确位置。

星历的获取有两种方式,一种是卫星直接播发,这种方式的好处是定位过程不依赖卫星信号以外的任何输入,即使没有网络也可以定位成功,但问题是卫星链路带宽很小,要下载完整星历,需要30秒左右的时间,早期的手机和一些车载设备定位过程很慢,就是由于这个原因。
另一种方式是通过互联网播发,这种方式叫A-GNSS,具体的传输协议叫SUPL(Secure User Plane Location),这种数据一般不对应用层透出,在手机上,操作系统会在底层定时请求SUPL数据,然后将获得的星历注入GNSS芯片。有了A-GNSS,设备就可以在秒级获得定位,不需要任何等待过程,目前所有的手机都支持这种方式。A-GNSS的服务提供商,主要是通信运营商,以及一些定位服务商,比如谷歌、千寻等。

卫星不间断的向地面广播信号,这个信号主要包括以下信息:
卫星编号。用于从星历中查找卫星轨道,再结合时间戳获得当前卫星位置
当前时间戳。用于获得卫星位置,另一方面计算伪距。伪距是(本地时间-信号发射时间)*光速,之所以叫伪距,是因为本地时间与卫星时间不同步,所以这个距离并不是真正的设备-卫星距离。
星历数据。用于计算卫星位置。

卫星定位接收机

用于接收卫星信号。由于卫星信号微弱,天线当然是越大越好,但是由于接收机需要移动,天线尺寸受到制约。天线的主要作用是放大信号和抑制多径,主要的类型有以下几种:
在这里插入图片描述
左边的是比较常见的天线,内部是陶瓷天线,外部带磁铁,可以吸附在车顶;中间的是专业天线,旁边带扼流圈,可以抑制来自四周和地面反射的信号,只接收从天顶方向来的信号,这种天线的效果最好,一般用于专业研究和高精测绘;右侧是手机天线,长度只有几厘米,效果最差。
卫星信号的电磁波是圆极化的(传播时在垂直于传播方向的一个平面上波动),因此,采用圆极化天线(如平面的陶瓷天线)接收效果最好。但手机上天线尺寸太小,只能采用线极化天线,信号捕获能力大幅下降,再加上缺乏信号屏蔽(扼流圈),极易受到多径效应以及其他信号干扰。

接收机获得数据之后,会进行三个步骤的解算操作。

射频前端模块:主要是将原始信号进行下变频、功率放大以及滤波,提取真正有用的信号,便于解码处理。

基带处理模块:对卫星信号进行解码,获得卫星报文。每颗卫星的信号需要一个单独的通道进行处理,如果有100颗卫星,2个频段,那可能需要200个通道才能有效处理这些信息。通道数越多,可以获得的卫星观测值也就越丰富,定位精度也就越高。解码的过程,分为搜索-锁定-分析三步,首先生成每颗卫星的伪码,然后与信号进行自相关操作,相关度达到一定程度就可以锁定卫星,然后进行码锁定、位同步、帧同步,最终提取出报文。这个过程要持续进行,因为多普勒效应,信号的频率会不断变化,所以本地生成的伪码也要不断变换频率去适配卫星的变化。一旦失去锁定,就会丢失信号,也就无法定位了。

PVT解算模块:PVT包括Position,Velocity和Time。这一步是真正进行定位的步骤,是利用基带解码获得的报文,提取出时间戳、星历等信息,代入公式进行计算,然后将计算结果输出给应用程序。

卫星定位误差来源与精度提升

卫星定位虽然已经很准确了,但是在某些场景下,还是无法满足需求,比如,打车的时候定位点离车辆有一定距离、步导的时候难以区分方向甚至会定位到马路对面、静止的时候定位点总数飘来飘去、室内的时候定位点乱飘。这需要从卫星信号的发射、传输、接收过程来解释。

卫星信号从发射到被设备接收,需要经过大气层,其中,大气电离层有数千公里厚,这部分大气非常稀薄,但是存在大量被电离的电子,这部分电子会让电磁波变慢一点,从而产生延迟。在对流层,也会产生一定的延迟。在地表附近,由于各种建筑、山体、水面的影响,卫星信号可能被反射或折射(多径效应),产生延迟。
在卫星信号发射侧和接收侧,也有很多系统相关的误差,比如时钟偏差、处理延迟等,这些延迟加上传输延迟,使得卫星信号的传输时间,并不是准确的等于物理距离/光速,另一方面,卫星的星历也有误差,卫星位置和真实位置存在偏差,最终造成了定位结果产生偏差。

要提升定位精度,需要想办法消除这些误差,主要有以下几种方案。
双频GNSS
不同频率的电磁波通过电离层时会有不同的延迟,人们发现,对两个或多个频率的观测值进行线性组合,可以消除电离层误差,从而能提升精度。这就是双频GNSS定位的原理。小米8是业界第一款支持双频GNSS定位的手机,后续各大厂商均进行了跟进,一些高端手机均采用双频定位。消除电离层误差后,定位精度可以提升到5米以内。
地基/星基增强
星历误差、卫星时钟误差、甚至是电离层和对流层误差都是可以观测或建模的,一旦计算出了实时的误差值,就可以通过一个单独的通道进行播发,接收设备在定位过程中使用这些修正项,就可以提升定位精度。播发的通道一般有两种,一种是直接通过卫星播发,称为SBAS(Satellite-Based Augmentation System),好处是覆盖广,但设备需要增加额外的信号接收通道;另一种是地基增强,比如通过互联网,这需要设备具备联网能力。
这些增强方式对于精度提升是有限的,还是有很多误差项无法消除,比如电离层误差。
高精定位-差分定位(RTK)
RTK是Real - time kinematic的缩写,是一种差分定位。其原理是利用一个参考站提供基准观测值,然后用设备的观测值与基准站的观测值进行差分,差分后可以消掉星历误差、卫星钟差、电离层误差,再进行星间差分后可以进一步消除掉设备的钟差,最终可以算出设备相对基准站的相对坐标,如果基准站位置已知,就可以完成准确的绝对坐标,精度可以达到厘米级甚至毫米级。
RTK能提升精度的另一个原因是引入了载波相位观测,相比伪距观测值,载波相位观测值的误差更小。
使用RTK,需要在附近20km内有参考站(距离太远,电离层误差不一样,做差分无法完全消除误差),同时需要持续不断的获得参考站的观测数据(一般通过互联网传输,使用RTCM协议),因此相对普通的定位,RTK定位成本较高,但对于一些对精度要求很高的场景,比如车道级定位、自动驾驶等,是必不可少的。
RTK服务一般由专业服务商提供,如千寻、六分,这些服务商在全国范围内部署了数千个基准站,持续对订阅用户播发数据。
高精定位-精密单点定位(PPP)
RTK需要布设密集的参考站,有没有办法不依赖参考站?PPP(precise point positioning)就是一种方法,它的原理是对每一种误差进行准确建模,最终求解出卫星和设备之间的准确距离。为了确定准确的误差,PPP定位时需要不断的迭代内部参数,而且,一些卫星的误差只有当卫星位置变化后才能体现出来,所以PPP需要比较长的收敛时间,一般需要30分钟才能收敛到理想的精度,如何更快的收敛是目前学术界的一个研究热点。
组合定位
卫星定位的一个最大问题,就是丢失卫星信号后如何定位,这就需要其他定位方式来补充。组合定位是利用卫星信号和其他定位技术,比如惯性导航,来完成定位,二者相互配合。最简单的一个例子,就是卫星定位是有一个最高频率的,一般最多是10Hz,在两次定位之间,可用惯导来进行位置推算,获得更高频率的位置输出。而组合导航最重要的作用,是提升精度,比如,利用卡尔曼滤波方法,用惯导计算推算位置,用卫星定位提供观测量,对推算位置进行修正,这可以让定位结果更加平滑,而且可以对异常的卫星观测量进行过滤或降权。

手机上的卫星定位

在移动互联网出现以前,卫星定位终端是一个很专业的领域,只有测绘、军事等领域会应用这种技术,定位需要使用专用的接收机,比如Trimble、ublox等。随着智能手机将卫星定位芯片集成,卫星定位的应用得到爆发式增长,终端数量一下子提升到几十亿量级,也产生了海量的位置数据。
手机上的卫星定位与专业接收机,还是存在比较大的差异,主要体现在:

手机受限于尺寸,天线比较小,对原始信号的捕获、锁定、去噪能力都比较差,造成接收到的信号质量天然不如专业接收机。
手机上芯片成本比较低,支持的通道数比较有限,一次定位能够解码的卫星数量和系统数量都比较少,主要是单频,少数是双频,没有三频。
手机上对功耗、性能开销的要求比较高,不能花费大量资源在定位上,解算算法的复杂度比较低,效果也比较有限,精度比较差。

RTK和INS的知识细节

RTK:实时动态差分(Real-Time Kinematic,RTK)技术便是地基增强系统的关键技术,一种具有实时处理两个测量站载波相位观测量的差分方法。RTK系统组成和通信链路示意图如下所示。

在这里插入图片描述
RTK系统组成及通信链路示意图
通过在地面建设参考基准站,并进行测绘,我们能够获知这个参考基准站的准确位置数据,并将这个位置数据写入参考基准站控制器内部。参考基准站内部接收机同时接收卫星载波信号来获取观测数据(伪距观测值,相位观测值),并将测绘数据和观测数据打包作为作为差分数据,通过无线通信网络广播给覆盖范围内的接收机。
接收机收到参考基准站差分数据后,结合自身观测数据,调用RTK结算算法,修正观测数据误差,从而获得厘米级的定位。对于一个参考基准站来讲,与其半径几十公里覆盖范围内的接收机产生的误差认为是相同的,因此RTK的网络建设也是一个超级基建工程。
但融合了RTK技术的GNSS还是存在如下缺点:
(1)在完全遮蔽或严重遮蔽的场景(比如隧道、高层密集建筑、浓密树荫等),由于无法接收到卫星信号或可接收卫星信号数量较少,无法输出准确的定位数据;
(2)在无线通信网络无法覆盖或通信链路断连时,无法获得参考基准站的差分数据,导致无法输出准确的定位数据;
(3)在不增加额外硬件条件下,无法输出载体的姿态(航向、俯仰、横滚角)数据;
(4)在多金属的工作场景,由于严重的多径影响,会导致定位数据的假固定;
(5)定位数据输出频率较低(通常为10Hz左右),短期精度较低。
从以上缺点可以看出,GNSS+RTK在大部分场景下表现优秀,是全局定位当之无愧的主心骨。但在部分恶劣场景下存在短期的定位不准情况,因此自然而然的想增加一位成员,来弥补这方面的不足,INS便是在这样的背景下被引入。

INS:惯性导航系统(Inertial Navigation System,INS)是一种彻底自主的导航系统,它不需要从外部接收信号,只靠内部的硬件,并在在牛顿三大定律的“魔法”下,输出定位和姿态数据。
惯导测量单元(Inertial Measurement Unit,IMU)是INS系统里的主流硬件,主流产品中一般集成了一个三轴加速度计和陀螺仪,俗称六轴IMU。加速度计可以测量物体在其坐标系下的三轴加速度,陀螺仪可以测量物体在其坐标系下的三轴角速度,通过对加速度和角速度数据进行积分运算,可以解算出载体一个相对的定位和姿态数据。
与GNSS一样,IMU也是起源于军工。长期以来,受限于高昂的成本,一直仅为国防和航天所用。随着价格更加亲民的微机电系统(Micro-Electro-Mechanical System,MEMS)加速度计和陀螺仪出现,普通民众才开始享受IMU的红利。手机屏幕的自动旋转功能、智能手环的计步功能、虚拟现实头盔、无人机,无不是IMU发光发热的地方。
IMU可以输出高频(200HZ左右)定位和姿态数据,具有优秀的短期定位精度,但是单独使用INS同样存在以下缺点:
(1)由于解算模块存在积分计算,因此存在累积误差,随着时间的延长,误差会越来越大。
(2)高频振动会降低INS中IMU硬件的可靠性和精度;
(3)高精度的IMU成本(光纤陀螺)依旧很高。
但是这些缺点又是上文GNSS+RTK可以完美解决的,既然GNSS+RTK和INS各有所长,又都是定位界的狠角色,那就将两者组合在一起,共同实现全局高精度定位,这就是高精度组合导航名称的由来。

IMU(惯性测量单元)的轴数

IMU的轴数指的是它测量的运动方向的数量。通常,IMU测量的是三个基本线性运动(加速度)和三个基本角运动(角速度)。因此,IMU的轴数一般为6轴或9轴。

1、3轴IMU即只有3轴陀螺仪的IMU,其因为只有一个3轴陀螺仪,所以只能感知载体roll、pitch、yawl共3个自由度的姿态信息。(六轴姿态及roll、pitch和yaw解释见参考文献4)

2、 6轴IMU在3轴IMU的基础上加装了3轴加速度计,因此在感知载体姿态的基础上,还能感知载体3个自由度上的加速度信息。

三个加速度轴(X、Y、Z):测量物体在三个方向上的线性加速度。
三个角速度轴(X、Y、Z):测量物体绕其三个轴的旋转速率。
3、 9轴IMU在6轴IMu的基础上加装了3轴磁强计,由于3轴陀螺仪只能估计载体自身的相对位姿变化(通过加速度计也可获得载体的绝对roll和pitch),单凭3轴陀螺仪无法获取载体的全部姿态信息,而通过3轴磁强计就可以,本质上磁强计的感知原理类似于指南针。

除了6轴IMU中的六个轴外,还包括三个磁力计轴(X、Y、Z):测量物体在地磁场中的朝向。
通过这种方式,9轴IMU能够提供更全面的运动信息,尤其是在需要确定物体在三维空间中的方向时。

在IMU规格表或产品描述中,通常使用以下术语来表示轴数:

XYZ: 表示三个线性加速度轴的方向(X、Y、Z)。
XYZω: 表示三个角速度轴的方向(X、Y、Z)。
XYZM: 表示三个磁力计轴的方向(X、Y、Z)。
因此,6轴IMU可能以XYZ或XYZω来表示,而9轴IMU可能以XYZM来表示。这些标识有助于用户了解IMU的测量方向和提供的信息。

石英表计时

石英表就是通过石英的振动来计算时间的。
石英是一种很有意思的物质,当我们给石英晶体通电,它就会开始振动,而它振动的过程又可以反过来向外发电。在石英表内负责计时的就是由石英晶体所制作的石英振荡器,而石英振荡器在出厂的时候,其振荡频率会被统一调整为32768赫兹,也就是说在给石英振荡器通上电之后,它每振荡32768次就是一秒钟,非常精确。

卫星导航使用的原子钟,频率更高,因此测量时间的误差更小。原子钟是不是就是通过原子的振动来计算时间的钟表呢?原子的振动在这里的确发挥了重要的作用,但真正用于计时的其实还是石英钟。在给原子钟通电之后,里面的石英震荡器会开始振动,振动会向外发电,而这些产生的电荷会被转化为振荡频率为9192631770赫兹的微波。在原子钟内部有着一个铯原子发射器,所发射出的铯原子有高能级和低能级两种状态,在经过磁场之后,两种状态的铯原子会发生不同方向的偏转,其中低能级铯原子会与石英震荡器所产生的微波相遇。

参考文章:
石英表如何计时?卫星使用的原子钟是何原理?
关于卫星定位,你想知道的一切
什么是惯性传感器(IMU )
箩筐分享|自动驾驶高精度组合定位系统

RTK导航搭载ROS是指将RTK(Real-Time Kinematic)导航技术与ROS(Robot Operating System)相结合。RTK导航是一种高精度的定位技术,通过接收来自全球导航卫星系统(GNSS)的信号,利用差分定位算法实现厘米级的定位精度。而ROS是一个开源的机器人操作系统,提供了一系列的软件库和工具,用于构建机器人应用程序。 将RTK导航搭载ROS可以实现在机器人或车辆上进行高精度的定位和导航。通过ROS的导航功能包,可以将RTK导航的定位信息与机器人的运动控制相结合,实现精确的路径规划和导航。 以下是一个使用RTK导航搭载ROS的示例代码: ```python import rospy from sensor_msgs.msg import NavSatFix from geometry_msgs.msg import PoseStamped from nav_msgs.msg import Odometry def rtk_callback(data): # 处理RTK导航数据 # 获取经纬度信息 latitude = data.latitude longitude = data.longitude # 进行其他处理... def main(): rospy.init_node('rtk_navigation') rospy.Subscriber('/rtk/fix', NavSatFix, rtk_callback) # 设置其他ROS节点和话题 # ... rospy.spin() if __name__ == '__main__': main() ``` 在上述示例中,我们使用ROS的rospy库创建了一个节点,并订阅了RTK导航的话题`/rtk/fix`。当接收到RTK导航数据时,会调用回调函数`rtk_callback`进行处理。你可以根据实际需求,进一步处理RTK导航数据,并将其与机器人的运动控制相结合,实现高精度的导航功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值