无人车传感器 IMU与GPS数据融合进行定位机制

2023-05-16

前言

 

上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度、频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求。

为了能让无人驾驶系统更高频率地获取定位信息,就必须引入频率更高的传感器。这就是这一次内容的主角——IMU(Inertial Measurement Unit)惯性测量单元。

下图就是百度Apollo计划推荐使用的IMU——NovAtel SPAN-IGM-A1。

图片出处:https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_hardware_system_installation_guide%20v1.md

GPS得到的经纬度信息作为输入信号传入IMU,IMU再通过串口线与控制器相连接,以此获取更高频率的定位结果。


正文

IMU的原理

当我们晚上回到家,发现家里停电时,眼睛在黑暗中什么都看不见的情况下,只能根据自己的经验,极为谨慎地走小碎步,并不断用手摸周围的东西(比如冰箱),用以确定自己所在的位置。

IMU的原理和黑暗中走小碎步很相似。

在黑暗中,由于自己对步长的估计和实际走的距离存在误差,走的步数越来越多时,自己估计的位置与实际的位置相差会越来越远。

就像下图所示。

走第一步时,估计位置(黑人所在位置)与实际位置(白人所在位置)还比较接近;但随着步数增多,估计位置与实际位置的差别越来越大。

图中的小人只朝一个方向移动,是一维的。根据此方法推广到三维,就是惯性测量单元的原理。

学术上的语言是:以牛顿力学定律为基础,通过测量载体在惯性参考系的加速度,将它对时间进行积分,且把它变换到导航坐标系中,就能够得到在导航坐标系中的速度、偏航角和位置等信息。

IMU的特性

小到每天使用的手机,大到导弹、宇宙飞船都会使用到IMU,区别在于成本和精度。

根据不同的使用场景,对IMU的精度有不同的要求。精度高,也意味着成本高。

IMU的精度、价格和使用场景,如下图所示。

从图中可以看出,普通的消费级电子产品所使用到的IMU都是低精度且十分廉价的IMU,这种IMU普遍应用于手机、运动手表中。常用于记录行走的步数。

而无人驾驶所使用到的IMU,价格从几百块到几万块不等,取决于此无人驾驶汽车对定位精度的要求。

精度更高的IMU会用于导弹或航天飞机。就以导弹为例,从导弹发射到击中目标,宇航级的IMU可以达到极高精度的推算,误差甚至可以小于一米。

除了精度和成本的特性外,IMU还有两个十分关键的特性。其一是更新频率高,工作频率可以达到100Hz以上。其二是短时间内的推算精度高,不会有太大的误差。

在上次有关GPS的分享中,我们提到GPS的定位频率只有10Hz,而IMU的两个特性刚好可以弥补GPS的劣势,和GPS组成定位的黄金搭档。

黄金搭档:GPS + IMU

回到最开始的故事。晚上回到家,发现家里停电时,眼睛在黑暗中什么都看不见的情况下,只能根据自己的经验,极为谨慎地走小碎步,并不断用手摸周围的东西(比如冰箱),用以确定自己所在的位置。

在这个过程中,GPS的作用就类似于摸到的东西之后对自己的位置进行的修正,IMU的作用就类似于小碎步,不对地对自己的位置进行推算。

不断的修正和不断的推算,就能保证自己的定位相对稳定。如下图所示。

在无人驾驶系统中,GPS的更新频率一般为10Hz,IMU的更新频率一般为100Hz。

两个传感器共同工作时,可以给出频率100Hz的定位输出。下图是两传感器数据融合的原理图。

GPS+IMU融合原理图

运行在控制器上的软件对信息的处理流程在时间维度上类似下图。在0~100ms的周期中,使用IMU进行9次位置的估计,待新的GPS定位数据进来时,则进行修正,以此实现高频率的定位结果输出。

GPS+IMU信号处理时序图

 

就这样,GPS与IMU便相辅相成地实现了无人车的稳定定位。

有了100Hz的稳定定位,无人车在处理路径跟随问题时,就能像下图一样,保持极高频率的定位和控制。每走一小步,便重新进行方向盘转角的计算,进而控制无人车沿着既定的轨道行驶。

 


小结

上面的分享用生活中简单的例子介绍了IMU的基本原理,并对IMU的特性(精度、成本、频率)进行了讨论,最后探讨了GPS如何与IMU配合完成无人车的定位功能。

解决了无人车的第一大问题“我在哪”,之后就要开始讨论“我要去哪”和“我怎么去”的问题。

因此,在接下来的分享中,我会着重介绍感知相关的传感器(相机、激光雷达等)。

好了\(^o^)/~,这篇分享基本上让大家了解了无人车定位相关的技术。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人车传感器 IMU与GPS数据融合进行定位机制 的相关文章

  • 在 Swift 中将 GPS 坐标转换为城市名称/地址

    我有一个纬度 经度位置 我想将其转换为 Swift 中的位置名称字符串 做这个的最好方式是什么 我相信最好使用reverseGeocodeLocation函数 但不完全确定如何使用 这是我到目前为止所拥有的 func locationMan
  • 使用 JavaScript 获取 GPS 位置

    我正在使用平板电脑 正在处理 html 应用程序 希望在不使用任何网络连接的情况下获取 GPS 位置 请建议我简单的方法 使用JS你可以这样得到它
  • 将纬度和经度转换为十进制值

    我的 GPS 信息以以下形式呈现 北纬 36 57 9 西经 110 4 21 我可以使用Chris Veness 的 javascript 函数 http www movable type co uk scripts latlong ht
  • 谷歌地图可以根据小时分钟秒绘制点吗

    我正在尝试绘制以时分秒秒格式提供给我的 GPS 数据 GLatLng 会采用这种形式吗 还是我需要先转换它 很难在互联网上找到与此相关的任何内容 如果可以采用这种格式 我们将不胜感激 据我所知它不接受这种格式 但转换它真的很容易 只需计算一
  • 同时有多个位置提供商

    我的定位系统有一些问题 我有一个实现位置侦听器的服务 我希望尽可能使用网络获得最佳位置 如果网络不够准确 精度大于 300mt 则使用 GPS 问题是这样的 我每 5 分钟需要一次位置信息 如果可能的话准确 否则不准确 我从一个开始 Loc
  • 如何在没有“onLocationChange”方法的情况下知道 GPS 位置

    我想通过单击一个按钮来发送短信 并且在短信中我想发送位置信息 我试过 location locationManager getLastKnownLocation LocationManager NETWORK PROVIDER 但第一次显示
  • 如何在 JavaScript 中查找到已知位置的距离

    在浏览器中使用 JavaScript 如何确定从我当前位置到另一个我有纬度和经度的位置的距离 如果您的代码在浏览器中运行 您可以使用 HTML5 地理定位 API window navigator geolocation getCurren
  • 如何停止位置管理器?

    不知道为什么 但有时 LocationManager 在关闭应用程序后仍然工作 我在一个 Activity 的 onCreate Methode 中调用 startGPS 只有一个 让我称之为 StartActivity protected
  • 位置侦听器从服务工作,但不是 IntentService

    我有一个应用程序 我试图定期获取用户位置并将其发送到服务器 我有一项服务附加到AlarmManager每分钟执行一次 用于测试 该服务正确找到用户位置并注销 GPS 坐标 一旦出现 GPS 锁定 我就会取消位置请求并停止服务 当我请求位置更
  • Android GPS 路由系统

    我正在开发一个 Android 应用程序 它可以定位用户 假设用户在路上 并且该应用程序将为用户创建最短路线 以便能够到达用户选择的目的地 定位用户不是问题 因为这里有一个 API http www vogella com articles
  • GPS/GIS 计算:根据运动/每小时预测未来位置的算法?

    寻找资源或算法来在导航应用程序中计算以下内容 如果我当前的 GPS 位置为 0 0 并且我以 15 英里 小时的速度前进 32 度 我如何计算 10 秒后我的位置 i e GPSCoordinate predictedCoord GPSCo
  • GPS坐标:一个点周围1平方公里

    我希望有人能给我提供一个方程来计算给定点周围 1 公里的平方 X 从 a aaa 到 b bbb Y 从 c ccc 到 c ccc 例如lat 53 38292839 and lon 6 1843984 我还需要围绕一个点 2 公里 5
  • 如何确定当前用户位置是否在我的 MKCooperativeRegion 内?

    我有一个坐标区域 我已确定该区域包含我想要为我的应用程序显示的内容的限制 我已将其设置为具有中心点纬度 经度和跨度的 MKCooperativeRegion 如何确定当前 userLocation 是否在我的坐标区域内 使用地图矩形 这是使
  • 设置模拟位置时 GPS 提供商未知错误?

    我正在尝试设置我的模拟位置 但是 我收到以下错误 提供商 gps 未知 并且不确定出了什么问题 我已经获得了在manifest xml 中声明的所有权限以及所有参数 模拟定位法 Initiates the method to set the
  • 使用纬度/经度计算从 A 点到线段的距离

    我正在开发一个使用 GPS 的 Android 应用程序 我想知道如果 新位置 C 点 距离线段 AB 太远 是否有办法可以丢弃 GPS 位置数据 我正在使用发现的点到线段公式在维基百科上 http en wikipedia org wik
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • Android:计算两个位置之间距离的最佳方法

    我在这个主题上做了一些研究 但有很多观点并没有给出一个清晰的图像 我的问题是这样的 我正在为 Android 开发一个基于 GPS 的应用程序 在其中我想实时了解 Android LocationManager 指定的当前位置与其他位置之间
  • 谷歌地图定位是如何工作的?

    我的问题是谷歌地图或移动 GPS 如何找到我的当前位置 读完本文后我的高层次理解article http www physics org article questions asp id 55就是 GPS接收器通过这些卫星获取位置坐标 该位
  • Java Marine API - 寻找 NMEA 数据

    我的最终目标是从 Adafruit Ultimate GPS NMEA 0183 标准 接收纬度和经度 GPS 信息到我的 Java 应用程序 我正在使用 Java Marine API 来执行此操作 然后 当前位置将与时间戳一起写入数据库
  • 检测wifi是否启用(无论是否连接)

    对于 GPS 跟踪应用程序来说 在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或存在间隙 在开始跟踪之前 我已使用可达性查询来检测 wifi 是否可用 问题是 如果进行该查询时 wifi 已启用但未连接到网络 则表明无法通过 w

随机推荐

  • git pull 强制覆盖本地的代码

    git pull 强制覆盖本地的代码方式 xff0c 下面是正确的方法 xff1a git fetch all 然后 xff0c 你有两个选择 xff1a git reset hard origin master 或者如果你在其他分支上 x
  • SMPL可视化大杀器,你并不需要下载SMPL就能可视化你的3D Pose

    SMPL 是一种3D人体建模方法 xff0c 现在几乎所有的元宇宙人体建模都是基于此类方法 xff0c 包括但不限于元宇宙 xff0c 自动驾驶等领域 它能估计出比较准确的人体3D姿态 xff0c 得益于海量数据训练的人体3D先验 不仅仅是
  • 程序员要多跳巢才能涨工资

    不要一辈子呆死在一家公司 都是打工高薪才是王道 fs xff1a 这 篇文章的本意 xff0c 是告诉大家如何识别公司 而不是鼓励大家无脑跳槽 只有当你在一个公司略有所成的时候 xff0c 你才能有所积累 跳槽更多时候 xff0c 应该看到
  • C++ 用libcurl库进行http通讯网络编程

    转自 http www cnblogs com moodlxs archive 2012 10 15 2724318 html 目录索引 xff1a 一 LibCurl基本编程框架 二 一些基本的函数 三 curl easy setopt函
  • 群晖NAS教程(一) 、利用Docker安装MySQL8并远程访问

    为了更好的浏览体验 欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程 一 利用Docker安装MySQL8并远程访问 做为一个NAS发烧友玩家 在追求极致硬件配置的同时 也想在各个方面压榨一下自己的黑群晖 要不就对不起自己投入那么多的毛爷爷
  • 群晖NAS教程(二)、利用Docker安装Ubuntu并远程访问

    为了更好的浏览体验 欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程 二 利用Docker安装Ubuntu并远程访问 作者 小景哥哥 一 下载镜像ubuntu upstart 一定要选这个镜像 双击运行 二 设置Ubuntu启动参数和端口号
  • 群晖NAS教程(五)、利用Docker安装Ubuntu-21.04并在Ubuntu上安装Redis进行远程访问

    为了更好的浏览体验 欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程 五 利用Docker安装Ubuntu 21 04并在Ubuntu上安装Redis进行远程访问 由于上节我们安装的Ubuntu完全可以当做一个服务器来使用 这个可以完全替代
  • 群晖NAS教程(七)、利用Docker安装elasticsearch并进行远程访问

    为了更好的浏览体验 欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程 七 利用Docker安装elasticsearch并进行远程访问 一 下载elasticsearch官方镜像 然后直接下载elasticsearch镜像即可 二 配置el
  • Airsim通过ros发布激光雷达数据+Lego-loam仿真测试(2)

    上篇博客只是简单跑通了流程 xff0c 存在的问题将在这篇进行修正 一 Lego loam里话题订阅 雷达点云话题为 xff1a velodyne points xff0c frame id为velodyne IMU话题为 xff1a Im
  • [控制算法]

    常用控制算法 0 博览众长 0 1 视频 1 DR CAN b站 0 2 文章 1 控制算法整理 0 3 传统 VS 现代控制算法 1 传统 传统控制算法 xff1a PID xff0c 模糊 xff0c 神经网络控制算法 2 现代 现代控
  • 七、输入/输出流--streambuffer类介绍--

    缓冲区类 类模板定义为basic streambuf xff0c 由 lt iostream gt 给出 xff1a 1 stream缓冲区 通常stream不负责实际读写操作 xff0c 而是stream buffer实现streambu
  • 七、输入/输出流--streambuffer类介绍--自定义缓冲区

    基本上没看懂 xff0c 那个大神如果可以的话 xff0c 推荐一点相关资料 xff0c 真的不太明白这个缓冲区的内部原理 3 自定义缓冲区 缓冲区有basic streambuf定义 xff0c 针对字型为char和wchar标准库提供了
  • 串口通信学习(GPS模块)2021.5.10

    GPS串口通信学习实践 2021 5 10 1 串口通信简介1 1 波特率1 2 数据位1 3 停止位1 4 奇偶校验位 2 GPS模块串口通信配置2 1 驱动安装2 2 插入GPS模块2 3 GPS模块串口通信数据简介 3 Java实现G
  • Lambda表达式的使用

    对于jdk1 8其实并不是那么熟悉 xff0c 但是要学习这一点 xff0c 对以后工作有好处 xff0c 接下来开始学习jdk1 8在Android studio的配置以及lambda表达式的使用吧 Lambda表达式 jdk1 8中新增
  • ROS实现无人机目标跟踪/物体跟随/循迹

    无人机自主物体跟随 循迹 1 物体跟踪1 1 实现思路1 2 代码示例 2 自主寻线 本实验采用ROS和OpenCV实现功能 xff0c 实验平台采用Parrot的Bebop2无人机ROS部分的学习可以参考我的专栏 xff1a ROS学习记
  • vs code中项目的基本配置--include路径、运行参数、debug配置

    1 安装C C 43 43 for Visual Studio Code 点击左边扩展栏图标 gt 搜索C C 43 43 gt 安装 gt Reload xff1a 安装完成之后 xff0c 打开你的包含c 43 43 的文件夹 xff0
  • CMakeLists.txt编写规范模板及CMake常用变量

    文章目录 基本语法规则常见CMakeLists txt中指令剖析从VS项目配置过程理解CMakeLists内容CMake中常用变量汇总常用CMakeLists文件模板 基础模板使用OpenCV库CMakeLists文件模板使用PCL库CMa
  • C++ 多线程detach()操作的坑以及传参

    detach 的作用是将子线程和主线程的关联分离 xff0c 也就是说detach 后子线程在后台独立继续运行 xff0c 主线程无法再取得子线程的控制权 xff0c 即使主线程结束 xff0c 子线程未执行也不会结束 当主线程结束时 xf
  • 条件变量中的唤醒丢失问题分析

    本文是在其他作者博文的基础上进行了部分补充 原文 xff1a https zhuanlan zhihu com p 55123862 0 前言 条件变量 xff08 condition variable xff09 和互斥锁 xff08 m
  • 无人车传感器 IMU与GPS数据融合进行定位机制

    前言 上一次的分享里 xff0c 我介绍了GPS的原理 xff08 三角定位 xff09 及特性 xff08 精度 频率 xff09 xff0c 同时也从无人车控制的角度 xff0c 讨论了为什么仅有GPS无法满足无人车的定位要求 为了能让