Apollo详解之定位模块——RTK定位

article/2025/8/2 10:27:46

前言

Apollo的定位模块提供了三种定位方法,分别是RTK、NDT、MSF。
所谓RTK定位,可参考百度百科

RTK(Real Time Kinematic)实时动态测量技术,是以载波相位观测为根据的实时差分GPS(RTDGPS)技术,由基准站接收机、数据链、 流动站接收机三部分组成在基准站上安置1台接收机为参考站, 对卫星进行连续观测,并将其观测数据和测站信息,通过无线电传输设备,实时地发送给流动站,流动站GPS接收机在接收GPS卫星信号的同时,通过无线接收设备,接收基准站传输的数据,然后根据相对定位的原理,实时解算出流动站的三维坐标及其精度。

简单来说,就是依靠地面上拥有绝对准确位置的基站测量GPS定位的误差,将该误差发送给附近的接收机进行校准,提高GPS定位精度,往往可以达到厘米级的定位精度。

RTK定位组件简述

Apollo中RTK定位组件和上述RTK定位的定义并没有关系,其功能只是将GPS的数据和对应时间戳的IMU数据进行组合最终输出高精地图下的位置。没有涉及到RTK(Real Time Kinematic)实时动态测量技术。
组合导航会输出GPS和IMU的消息,前者输出ENU坐标系下的点坐标、位姿、线速度,后者输出车辆坐标系的线加速度、角速度、欧拉角、航向,然而两者输出的频率相差很大,GPS数据更新频率要远低于IMU数据的更新频率,在Lgsvl仿真中,可以参考
在这里插入图片描述
可以看到,仿真中IMU消息的发布频率比GPS高将近十倍。

RTKLocalizationComponent

该组件会订阅GPS消息Gps和IMU消息CorrectedImu,根据Gps的时间戳找到最适合的CorrectedImu,将其中的数据组合,向相关话题输出LocalizationEstimate。此外,该组件会将获得的定位数据发布为localizationworld坐标系之间的动态坐标变换。

配置文件

配置文件的定义可参考modules/localization/proto/rtk_config.proto

message Config {optional string localization_topic = 1; // 输出的定位话题optional string localization_status_topic = 11; // 输出的定位状态话题optional string imu_topic = 2; // 订阅的IMU消息话题optional string gps_topic = 3; // 订阅的GPS消息话题optional string gps_status_topic = 12; // 订阅的GPS定位状态话题optional string broadcast_tf_frame_id = 4; // 广播的父坐标系optional string broadcast_tf_child_frame_id = 5; // 广播的子坐标系optional int32 imu_list_max_size = 6; // IMU消息容器的大小optional double gps_imu_time_diff_threshold = 7; // GPS和IMU消息时间戳差值的阈值optional double map_offset_x = 8; // world到mpa坐标系的偏差值optional double map_offset_y = 9;optional double map_offset_z = 10;
}

RTKLocalizationComponent::Proc

该函数会订阅GPS定位消息,进行上述的处理。

RTKLocalization

RTKLocalization负责功能的具体实现,其拥有两个双向链表容器。

imu_list_

订阅得到的CorrectedImu消息会不断保存在该容器当中,新元素加入到尾部,容器中元素的个数大于容量时,头部的原始会被删除,因此该容器中,从头部到尾部,时间戳依次增大,即头部的数据最老,尾部的数据最新。
由于GPS消息的更新频率要远低于IMU的更新频率,因此要通过该容器保存一定时间的IMU消息,以供GPS找到与其时间戳最匹配的IMU消息。

gps_status_list_

作用与imu_list_类似,保存的是IMU的状态

RTKLocalization::FindMatchingIMU

该函数根据GPS的时间戳,在容器中找到与之最为匹配的IMU消息。可以分为三种情况:

  • gps时间戳要比容器中的CorrectedImu都要新,则匹配结果为容器中最新的CorrectedImu
  • gps时间比容器中的CorrectedImu都要老,则匹配结果为容器中最老的CorrectedImu
  • gps时间在容器中时间戳最老和最新的两者之间,则匹配结果为容器中gps时间两端插值后的CorrectedImu

RTKLocalization::InterpolateIMU

若gps时间在容器中时间戳最老和最新的两者之间,则会对GPS时间戳两端最接近的两个CorrectedImu进行插值,插值的过程即根据GPS时间戳对两者取平均,时间戳靠近哪一方,平均时的占比就越大。
进行插值的量分别是角速度、线加速度、欧拉角。

RTKLocalization::ComposeLocalizationMsg

该函数将GPS和IMU的消息进行组合,得到LocalizationEstimate消息。

话题相关

该模块订阅和发布的话题可以在配置文件中进行定义,默认配置可参考modules/localization/conf/rtk_localization.pb.txt

localization_topic: "/apollo/localization/pose"
localization_status_topic: "/apollo/localization/msf_status"
imu_topic: "/apollo/sensor/gnss/corrected_imu"
gps_topic: "/apollo/sensor/gnss/odometry"
gps_status_topic: "/apollo/sensor/gnss/ins_stat"
broadcast_tf_frame_id: "world"
broadcast_tf_child_frame_id: "localization"
imu_list_max_size: 20
gps_imu_time_diff_threshold: 0.02
map_offset_x: 0.0
map_offset_y: 0.0
map_offset_z: 0.0

注意:该模块输入话题/apollo/sensor/gnss/odometry中的Gps消息是在world坐标系下的位置坐标,而输出话题/apollo/localization/poseLocalizationEstimate消息是指高精地图的map坐标系下的位置坐标,两坐标系之间的转换关系可通过配置文件中map_offset_xmap_offset_ymap_offset_z进行指定。
另外在建立高精地图时,也要打开该模块,通过订阅/apollo/localization/pose话题来生成高精地图。此时配置文件中map_offset_xmap_offset_ymap_offset_z定义的是世界坐标系和当前正在建立的高精地图的map坐标系之间的变换关系。
由于 /apollo/sensor/gnss/odometry话题输出的world坐标系下的坐标是根据经纬度获得的,数值较大,因此可以在建图时通过map_offset_xmap_offset_ymap_offset_z来指定map坐标的原点,不过注意,建图后定位时map_offset_xmap_offset_ymap_offset_z参数要与建图时保持一致。


http://chatgpt.dhexx.cn/article/AjW7i8ba.shtml

相关文章

看懂RTK定位,这一篇就够啦!

说到定位,相信大家一定不会觉得陌生。如今我们所处的信息时代,人人都有手机。每天,我们都会用到与地图和导航有关的APP。 这些APP,就是基于定位技术的。 说到定位技术呢,大家又肯定会想到GPS、北斗这些名词。是的&…

中国人工智能(AI)发展历程、AI产业重点发展区域、重点发展城市及中国AI产业地区发展总结及展望

1、AI的发展历程 人工智能(ArtificialIntelligence)指由人类制造出来的机器所展现出来的智能,试图通过计算机来模拟人的思维过程和行为。目前这一领域主要包括计算机视觉、自然语言处理、跨媒体分析推理、智适应学习、群体智能、自主无人系统…

html标签样式

目录 1、内联样式 2、内部样式《标签选择器》 3、外部样式 4、html引用css 5、《class选择器》 6、《id选择器》 7、《群组选择器/并集标签》 8、《兄弟选择器》 9、《相邻标签》 10、子代选择器 11、《后代选择器》 12、class相同: 13、伪装选择器 …

CSS标签及样式

1.CSS的概念及优势 2. style标签 3. CSS的基本语法结构 4.css的外部样式 5.css的内部样式 6.行内样式 7.优先级(就近原则) 8.CSS基本选择器 9.标签选择器 10.类选择器 11.ID选择器 12.基本选择器的优先级

HTMLCSS常用标签详细汇总

软件架构 C/S: Client/server 客户端/服务器端 在用户本地会有一个客户端的程序,在远程有一个服务器端程序。 例如,QQ,当你在QQ用户端程序输入用户名密码时,服务器端会判断你给出的数据是否存在。 优点:用户体验较好。…

怎么让HTML的属性横着排,css标签怎么设置横向排列

css是一款功能强大的网页辅助工具,在软件使用中,浮动属性设置li标签的样式,便可以实现横向排列。下面小编就教大家css标签怎么设置横向排列,有需要的小伙伴不要错过! css标签怎么设置横向排列 1、新建一个html文件&…

常用的CSS标签库

思考再三,萌芽决定把自己学生时代珍藏多年的CSS笔记发出来,特别常用适合背不下来标签的新手小白哟! 《 HTML 》篇(长期更新) 1 HTML基础 1.1 什么是标记语言 Word文档就是标记语言的一种,而现在要学习的HTML(Hyper Text Markup Language)也是一种标记语言,叫做超文本…

CSS基本标签使用

1.CSS技术介绍 css是层叠样式表单。是用于增强控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。 1.2CSS语法规则 选择器:浏览器根据“选择器”决定受css样式影响的HTML元素标签。 属性:是你要改变的样式名,并且每个属性都有…

css标签——文本标签

文本标签 针对文本的样式操作(渲染) color:设置文本的颜色text-align:设置文本的对齐方式 left:默认值,左对齐center:居中对齐right:右对齐 注意:text-align可以设置…

HTML标签+CSS样式(一)

文章目录 一.HTML常用标签类二.CSS常用样式 一.HTML常用标签类 html&#xff1a;hyperText markup language&#xff0c;超文本标记语言 1. < meta > 告诉搜索引擎爬虫我们的网站关于什么内容 元素可提供有关页面的元信息&#xff08;meta-information&#xff09;&am…

css常用样式标签

css常用样式标签 css 字体的设置 font-family font-size 设置字号大小 设置字体样式 font-style normal : 正常显示。浏览器默认的样式 italic &#xff1a;斜体显示文字 oblique : 歪斜体显示&#xff0c;比斜体的倾斜角度更大 font-weight 设置字体加粗 可取值为hold和nor…

HTML的标签与CSS标签

&#xff08;一&#xff09;HTML 1&#xff0c;html的定义标签&#xff0c;head中定义title&#xff0c;body中定义网页内容 2&#xff0c;基础标签 效果&#xff1a; 3&#xff0c;图片&#xff0c;音频&#xff0c;视频标签&#xff0c;src是图像的url即位置&#xff0c;有绝…

【CSS标签及样式】

小思考&#x1f4a1;CSS是什么&#xff1f; 中文名称&#xff1a;层叠样式表 英文全称&#xff1a;Cascading Style Sheets CSS的作用 在网页制作时采用CSS技术&#xff0c;可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。 CSS发展史 1996CSS 1.…

CSS-标签选择器

CSS-选择器 基础选择器标签选择器类选择器id选择器通配符选择器 复合选择器后代选择器子代选择器并集选择器交集选择器伪类选择器 基础选择器 基础选择器是选择器中最简单的类型&#xff0c;它包括标签选择器、类选择器、id选择器、通配符选择器 标签选择器 注意&#xff1a…

CSS|标签选择器

CSS|标签选择器 1.简介 选择器的作用是选择页面上的某一个或者某一类元素 基本选择器&#xff1a; 标签选择器类选择器id选择器 2.标签选择器 CSS文件&#xff1a; /* 标签选择器 会选择到页面上所有的该标签元素 */ h1{color: red;background-color: aqua;border-radius…

CSS标签分类

在CSS中,不同的标签其所具有的特性不同,我们根据特性可以将它们分为以下3种: 块级标签,行级标签,行级块标签. 下面我们来一一进行介绍: 块级标签: 无论内容的多少,都只会占用一行的标签称为块级标签 常用块级标签如下: <h>,<p>,<ul>,<li> 块级标签可以…

CSS基础及常用的一些标签

CSS 是一种描述 HTML 文档样式的语言。 一、CSS选择器(在这里只列举几种最常用的) 1、CSS元素选择器 元素选择器根据元素名称来选择 HTML 元素。 例如&#xff1a;页面上的所有 <p> 元素都将居中对齐&#xff0c;并带有红色文本颜色&#xff1a; p {text-align: ce…

什么是信用评分分析?

概述 信用评分分析是不同公司评估个人或公司信用评分以帮助确定实体的信誉度的过程。信用评分很重要&#xff0c;因为它考虑了信用的使用次数以及偿还的效率。 概括 信用评分分析是指审查个人&#xff08;或公司&#xff09;借贷历史以及他们偿还资金的效率的过程。 信用评…

信用评分卡模型开发及评估指标

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 一、信用风险评级模型的类型 信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成&#xff0c;其中主体评级模型可用“四张卡”来表示&#xff0c;分别…