浅谈Dead reckoning实现原理以及常用算法

2023-10-27 19:50

本文主要是介绍浅谈Dead reckoning实现原理以及常用算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 简介

航位推算是一个很常见的定位方法。在知道当前时刻的位置,然后通过imu等传感器去估计下一个时刻的位置。在自动驾驶车辆定位的时候,GPS提供10Hz的定位信息。这每个GPS信息来临的0.1s的间隔里面,车辆位置也会移动很多。那么这个时候就需要航位推算来判断车辆到底移动了多少距离,在哪个地方。所以,航位推算是自动驾驶车辆最基本的,也是必须的一种算法之一。比如推算车辆在隧道中的位置。


1. 从简至繁的几种航迹推算方法

1.1 陀螺仪yaw角 + 轮速

实现方式:松耦合,yaw角确定2D方向,轮速确定长度,即可递推航迹

待标定量:陀螺仪Z方向零偏,单位轮齿脉冲长度

优点:实现最简单

缺点:仅适用于2D平面DR,浪费了IMU的大部分数据


1.2 陀螺仪rpy角 + 轮速

实现方式:松耦合,rpy确定3D方向,轮速确定长度,递推姿态,参考[1]的实现

待标定量:陀螺仪X、Y、Z方向零偏,单位轮齿脉冲长度

优点:实现简单,在三维空间中进行DR

缺点:浪费了加计的数据


1.3 ESKF(陀螺仪rpy预测,加计观测) + 轮速

实现方式:松耦合,采用ESKF得到更好的姿态(rpy作为预测,加计作为观测【零加速度模型,只感受重力】),轮速确定长度,递推姿态,参考[2]的实现

待标定量:陀螺仪X、Y、Z方向零偏、加速度计X、Y、Z方向零偏,单位轮齿脉冲长度

优点:在三维空间中进行DR,在车辆静止或者平缓运动时,可以得到更好的旋转

缺点:实现稍微复杂,当车辆做加、减速运动时,不满足零加速度模型,观测模型失效


1.4 ESKF (陀螺仪rpy+加计预测,轮速观测)

实现方式:紧耦合,采用IMU运动学模型预测轨迹,轮速作为对于车辆X方向上速度的观测,对预测的轨迹进行修正,参考[3]的实现

待标定量:陀螺仪X、Y、Z方向零偏及零偏随机游走、加速度计X、Y、Z方向零偏及零偏随机游走、单位轮齿脉冲长度

优点:融合了所有IMU和轮速的所有信息,在标定准确的情况下,可以得到最接近真值的轨迹

缺点:实现最复杂,待标定量最多,调参最困难

2. 基于航位推算的机器们

移动机器人如果能够在无控制环境下进行导航而无需导航设备,就可以被称为自主的。另外,移动机器人也可以依赖导航设备,在相对受控的空间内按照预定的导航路线行驶。在这种情况下,它们被称为自主导航车辆(AGV)。对于自动驾驶汽车也可以做出同样的区分。为了开发真正“自主”的车辆,定位是导航的一个重要要素,特别是对于规划和控制而言。为此,我们认为强大的航位推算(DR)能力是必不可少的。实际上,虽然存在使用外部感知传感器的定位方法[5],[6],[14],但它们通常只能提供低频和间歇性的定位。



而针对行人,IPDR系统的主要关注点是如何抑制和减少惯性传感器引起的漂移和偏差误差。充分考虑和利用人体运动特征和活动环境的外部约束,并深化传感器输出信号的深层信息是误差控制的关键。身体是人类运动的创造者。因此,首先应考虑和分析身体自身的约束。在人体运动过程中,身体不同部位的运动特征是不同的。例如,在下肢运动中,脚底周期性接触地面,速度被认为是零,腿部可以被视为两个周期性倒立摆模型。更精确的人体运动信息将为误差修正提供更可靠的先验知识。例如,在脚部安装的IPDR系统中,通过测量每步的支撑相期间获得零速率和零角速度观测,然后进行零速度更新(ZUPT)和零角速度更新(ZARU),以在短时间内限制误差。

…详情请参照古月居

这篇关于浅谈Dead reckoning实现原理以及常用算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287979

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re