无人驾驶技术入门(三)| 百度无人车传感器 GPS 深入剖析
上一次的分享里,我对百度 Apollo 计划的技术框架做了介绍,如图。
Apollo1.0 封闭场地循迹自动驾驶
如果要完成 Apollo 1.0 的“封闭场地寻迹自动驾驶”功能,需要解决一个重要的问题:我(无人车)在哪?
“我在哪”这个问题,在 Apollo 1.0 的架构中完全依赖 GPS(全球定位系统) 和 IMU(惯性测量单元)。
今天的分享,我会用尽可能简单的语言,介绍GPS的原理及特性,并谈一谈,为什么无人车的定位不仅要依赖GPS,还依赖IMU。我会在下次的分享中,着重地介绍IMU的功能。
正文
GPS定位原理很简单
GPS是全球定位系统(Global Position System)的简称,常见于汽车、手机中。民用GPS的定位精度在10~20米之间,这是为什么用手机的GPS定位,有时候明明在陆地上,却被认为在河里的原因。
GPS定位的原理很简单,叫做三角定位法(Triangulation)。原理如图:
图片出处:https://www.nationalgeographic.org/photo/triangulation-sized/
装在无人车上的GPS接收机,首先量测无线电信号到达卫星的传播时间,再将传播时间乘以光速,即可得到当前GPS接收机到达卫星的距离,有了距离,就可以根据几何原理求得位置了。
图片出处:http://slideplayer.com/slide/5717261/
若已知GPS接收机到达1号卫星和3号卫星的距离,那么1号和3号卫星根据距离产生两个球体(图中绿色和蓝色的球体),两个球体的相交的部分为圆形,该圆形与地球表面靠近的任何一个点都有可能是当前无人车(GPS接受装置)的位置。
因此仅根据这两个距离信息,还无法确定当前无人车的具体位置。此时通过引入第三个卫星的距离,就能较为准确地确定无人车的位置。这就是三角定位法的原理。
GPS定位精度不太够
根据上面的介绍,只要得到无线电信号达到三颗卫星的传播时间,似乎就能计算得到无人车的位置。
可是工程问题永远没有理论计算那么简单!
在空旷且云层稀薄的情况下,无线电信号的传播时间乘以光速确实与实际的距离接近。
但无线电信号的传播时间多少会受到传播介质的影响的。诸如云层的稀薄情况、天气好坏等都会影响到传播时间,进而影响到距离的计算。距离不准,得到的定位结果当然也不准了。
为了降低天气、云层对定位的影响,工程师们引入了差分GPS的技术。如下图所示:
图片出处:http://what-when-how.com/gps-with-high-rate-sensors/carrier-smoothed-code-gps/
在地面上建基站(Base Station),基站在建立时,可以得到基站的精确位置信息(经纬度)。同时基站具有接收卫星信号的功能。
当基站的GPS接收机与车载GPS接收机相距较近时(<30km),可以认为两者的GPS信号通过的是同一片大气区域,即两者的信号误差基本一致。根据基站的精确位置和信号传播的时间,反推此时天气原因导致的信号传播误差,之后利用该误差修正车载的GPS信号,即可降低云层、天气等对信号传输的影响。
使用差分GPS技术,可以使无人车的定位精度从10米级别提升至米级。
差分GPS可以解决定位的精度问题,但是解决不了遮挡和反射问题。
当无人车在高楼林立的环境中行驶时,这就会发生如下问题。
图片出处:https://www.e-education.psu.edu/geog862/node/1721
1.信号丢失
GPS接收机在高楼周围,很容易失去某一方向、所有的卫星信号,仅依靠另外三面的卫星信号求得的定位结果,在精度上很难满足无人驾驶的需求。
2.多路径问题
在高楼周围也可能导致原本收不到的卫星信号,经过大楼楼体的镜面反射被接收到,这种信号被称为多路径信号(Multi-Path Signal)。从图中可以看出,根据多路径信号计算得到的距离会明显大于实际距离。而无人车是很难判断,当前接收到的信号是单路径还是多路径的。
鉴于以上各种原因,可以看出,单靠GPS这一种传感器,无人车在复杂场景中,很难实现精确定位。
GPS定位频率不太高
GPS定位的频率不怎么高,只有10Hz,即100ms才能定位一次。
通过一个简单的例子,说一说为什么10Hz不够高。
假设一辆汽车正以72km/h(20m/s)的速度在路上直线行驶,GPS定位的周期为100ms,则一个周期后,汽车相对于前一次定位的结果移动了20m/s * 0.1s = 2m,即两次的定位结果相距2米。
如果无人车行驶在一条有曲率的路上,那就意味着,每隔2m,才能根据自车所在的位置,进行一次控制(方向盘转角、油门开度等)的计算。这种控制频率下的车辆行驶效果如下图。无人车在实际轨迹两侧忽左忽右,无法精确地沿着轨迹行驶。
相对于理想情况下的控制方法,无人车的行驶轨迹应当如下图,保持极高频率的定位和控制,每走一小步,都重新进行控制的计算,并执行控制。
为了解决GPS频率太低所带来的问题,工程师引入了其他传感器信号(IMU、激光、视觉)用以提高无人车的定位频率。
这些辅助手段如何实现会在以后分享给大家。
小结
上面的分享不仅介绍了GPS的原理(三角定位)及特性(精度、频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求。
如果你想对GPS的信号接口有更为细致的了解,可以参看Apollo公开的proto文件。链接如下:ApolloAuto gnss.proto。我会在以后的软件部分着重分析这些proto文件,敬请期待。
我将在下一次分享中介绍IMU如何与GPS相辅相成,实现无人车的稳定定位。
无人驾驶技术入门(三)| 百度无人车传感器 GPS 深入剖析相关推荐
- 无人驾驶技术入门(四)| 百度无人车传感器 IMU 深入剖析
上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度.频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求. 为了能让无人驾驶系统更高频率地获取定位信息,就必须引入 ...
- 激光雷达+imu_无人驾驶技术入门(四):无人车传感器 IMU 深入剖析
上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度.频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求. 为了能让无人驾驶系统更高频率地获取定位信息,就必须引入 ...
- python无人驾驶_无人驾驶技术入门(四):无人车传感器 IMU 深入剖析
上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度.频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求. 为了能让无人驾驶系统更高频率地获取定位信息,就必须引入 ...
- 自动驾驶 无人驾驶技术入门(四):无人车传感器 IMU 深入剖析
转自:https://www.d1ev.com/kol/65579 上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度.频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车 ...
- 无人驾驶技术入门(一)| 百度无人驾驶的引路人
前言 各位老铁好!无人驾驶技术入门(硬件篇)的第一讲开课啦! 今天的课程我会介绍一个来自旧金山的创业公司,它曾是百度无人驾驶的引路人. 正文 百度在今年7月和9月分别发布了Apollo 1.0和Apo ...
- 无人驾驶技术入门(一):百度无人驾驶的引路人
各位老铁好!无人驾驶技术入门的第一讲开课啦!今天的课程我会介绍一位来自旧金山的创业公司,他们曾是百度无人驾驶的引路人. 百度在2017年9月发布了Apollo 1.5,可以实现固定车道的自动驾驶功能. ...
- Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术
目录 1.百度无人车定位进化历程 2.百度自动驾驶应用的定位技术 2.1GNSS定位技术 2.2载波定位技术 2.3激光点云定位技术 2.4视觉定位技术 原文链接:进阶课程 ⑮丨Apollo自动定位技 ...
- AI一分钟 | 无人驾驶技术排名:百度居中游,苹果特斯拉垫底;Google在深圳设立办公室
一分钟AI 苹果智能扬声器HomePod的组装厂之一英业达被爆已经开始出货HomePod,首批只有100万台. 美国调研机构发布最新无人驾驶技术排行榜,百度居中游,苹果特斯拉垫底. Google证实已 ...
- 谁在引领2022自动驾驶投融资?L4玩家领骏科技,百度无人车元老创办
浩楠 白交 发自 凹非寺 量子位 | 公众号 QbitAI 2019年的一天,领骏科技创始人杨文利博士坐在北京中关村的办公室里,手里拿着好几份来自各方的收购邀约. 有知名车企.有互联网大厂.也有其他自 ...
最新文章
- logcat 结合 grep 过滤 log 日志信息
- Android Timer的使用
- java实现word邮件合并,Aspose.Words控件操作实例—邮件合并功能概述
- Android 从清单配置文件元数据中获取值
- .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
- 生成三角网算法java,一种低效但逻辑简单清晰的Delaunay三角网生成算法
- python fun函数的功能是_python编程。假定输入字符串中只包含字母和*号,请编写函数fun,它的功能是将字符串中间的*号...
- 短期刚需还是未来趋势? 聚焦音视频技术发展方向
- 构建最小根文件系统lfs
- PS新手教程!五分钟绘制一张半调效果的耐克体育海报
- 【机器学习】简述多种降维算法
- IDA*算法实现的数字拼图游戏
- IT男真实的情感记录
- MySQL_MySQL基础查询(DQL)
- Python中使用Turtle绘制阴阳鱼(小白的学习分享)
- Doo Prime 德璞资本:标普500期货交易小知识,看懂影响价格走势的因素
- DevOps中的质量内建实践
- 基于matlab多功能相控阵雷达资源管理的服务质量优化
- vba实现窗体文本框显示sheet1单元格内容
- vscode护眼绿+python环境搭建
热门文章
- jenkins 的html report 无法显示的解决办法
- wxPython教程(一)
- mpls-bgp optionC RR
- 《大型网站技术架构:核心原理与案例分析》
- 戴尔服务器怎么安装win7系统,戴尔OptiPlex XE3 怎么装win7系统的图文教程
- c语言函数原型语句,C语言函数声明以及函数原型
- 【AAAI 2021】在线知识蒸馏中的对等协同学习:Peer Collaborative Learning for Online Knowledge Distillation
- 阿里专家马飞翔:一文读懂架构整洁之道
- 可以免费自学编程的12个网站,各种资料齐全!
- Date 字符串 正则表达式 网址