基于车轮安装MEMS IMU的航迹推算算法研究

2023-12-22 12:52

本文主要是介绍基于车轮安装MEMS IMU的航迹推算算法研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文由来:前一篇文章“零速更新(ZUPT)辅助INS定位”,并通过开源方案ZUPT-aided-INS进行了算法验证。在验证过程中,意识到在进行多源传感器融合算法中,利用载体自身运动信息进行约束修正非常重要,因为这不需要额外增加传感器在现有系统上进行ZUPT/ZIHR,可以提高系统精度和鲁棒性,特别是在部分场景中多源传感器中部分传感器退化的情况下,在日常工作中也常称为“engineer trick”。
在阅读相关论文时,发现论文“基于车轮安装MEMS IMU的航迹推算算法研究”,发现文章写的很好,收获很大,很有参考意义,算是阅读记录一下吧。

文章参考来源论文:“基于车轮安装MEMS IMU的航迹推算算法研究”

由于Wheel-IMU跟随车轮不断旋转,安装方式和imu坐标系定义不同,在算法中的处理方式也不同。基于旋转效应对捷联惯导误差的调制作用,充分挖掘Wheel-IMU的定位能力。基于陀螺间接测量得到的车轮速度,进一步探讨由车轮速度信息构建不同观测值用于滤波量测更新的算法,并基于载体自身运动信息约束,构建零速更新和零航向角速率观测值,设计一种性能最优、计算最简洁的约束算法。

一、Wheel-IMU的安装方案和安装角的标定方法

为了避免俯仰角出现奇异问题,将imu的旋转轴定义为X轴,指向车体右侧,且认定imu与载体之间的偏航角偏差固定为90°。imu与载体系坐标定义如下图:

在这里插入图片描述

1.旋转调制效应分析

姿态误差和速度误差受陀螺和加速度计误差影响,而周期性旋转可以抑制误差累计,以陀螺为例,假设车轮imu的X轴指向正北,且在短时间内车轮转速固定,则imu角速度误差在n系下的投影为:
在这里插入图片描述
假定在车轮旋转一圈的时间内误差恒定,对上式积分得到由于陀螺误差引起的姿态误差:
在这里插入图片描述
从上式可以看出,由于车轮旋转,imu非旋转轴的测量误差在n系下被调制成正弦波,经过一圈积分后,累计误差为零。同理,加速度计测量误差所引起的速度误差,在经过一圈的积分后,非旋转轴累计误差为零。
因此,在一圈旋转周期内造成的东向和地向的累计速度误差以及俯仰、航向误差为零,imu安装在车轮上在一定程度上抵消了imu的常值偏差。

2.车轮imu安装角标定

由于imu安装无法与车轮完全对齐,存在imu中心与车轮中心不重合的误差,以及imu轴系与车轮坐标系不平行的误差,分别称为杠臂误差和安装角误差。
由于imu随着车轮一直旋转,车轮坐标系和imu坐标系的y/z轴指向会周期性地变化,所以忽略imu与车轮坐标系之间的横滚角,只对航向角和俯仰安装角进行校准。
忽略地球自转,在载体沿直线形式或者车轮空转时,可以认为imu测量的角速度完全来自于车轮角速度的投影,则有:
在这里插入图片描述
仅考虑航向角和俯仰角,忽略无关项,有:
在这里插入图片描述
代入上试,得到:
在这里插入图片描述
求解,可以得到imu相对于车轮的安装角:
在这里插入图片描述
实际应用中,可以将轮架空,提前利用静止时段数据扣除陀螺零偏,然后是车轮空转,利用一段时间数据求平均值。对于不能架空车轮的机器,可以沿着既定轨迹走一段直线,并采集wheel-imu数据求平均结果。
另杠臂误差的校准,后续会增广到卡尔曼滤波的状态向量中进行实时估计。

二、基于滤波航迹推算算法

1.算法整体框架

a.初始化载体位置、速度和姿态(PVA)后,利用wheel-imu测量数据进行机械编排推算载体状态;
b.利用imu角速度和比力测量值探测载体状态,判断载体是否进入静止状态,若进入,则进行ZUPT和ZIHR量测更新;
c.当载体开始运动时,采用速度信息作为量测更新。速度约束观测值有三种形式:(1)利用imu角速度和车轮半径计算车轮前进速度,结合NHC在v系进行约束,即传统的ODO/INS组合导航思路;(2)将车轮前进速度投影到n系,积分得到imu在一段时间内的位移,以此作为观测值;(3)通过杠臂、车轮半径和imu水平姿态将imu速度投影到车轮上的触地点,利用“当载体不发生侧滑和颠簸等状况时,车轮上与地面接触点相对于n系速度为零”这一条件构建约束。
d.利用滤波后得到的imu误差估计值补偿imu原始数据,同时载体运动误差反馈给载体状态,得到滤波更新之后的运动信息。并将ekf输出的航向结果,结合车轮速度得到平面DR推算位置结果。
三种观测值构建的航迹推算系统框架如下:
在这里插入图片描述

2.系统误差状态方程(视觉里程计比例因子、imu的零偏误差和比例因子误差、杠臂误差)

考虑车辆行驶过程中,由于自重、温度等变化导致轮胎压强变化造成车轮实际半径与标称半径的偏差,将该误差建模为与车轮半径按比例变化,视为里程计比例因子误差sv,则:
在这里插入图片描述
由于杠臂误差直接会影响到imu的向心加速度和速度投影,与其它误差有较好的区分度,所以imu y、z轴的杠臂误差有较强的客观性。将上述误差增光到卡尔曼滤波系统状态中,可以得到基于车轮安装imu的航迹的推算算法滤波模型的状态向量如下:
在这里插入图片描述
将imu的零偏误差和比例因子误差建模为一阶高斯-马尔科夫过程,可得imu零偏和比例因子误差的微分方程:
在这里插入图片描述
将里程计比例因子和杠臂误差建模为随机游走,其微分方程为:
在这里插入图片描述

3.车轮速度信息约束算法

a.车轮中心速度约束

补偿imu安装角和陀螺误差后,可以更准确由陀螺x轴测量值和车轮半径计算车轮前进速度:
在这里插入图片描述对于一般车辆,其在平面上正常行驶,假设不发生颠簸和侧滑,车体只有沿着前进方向的速度,侧向和垂向速度为零。这一基本假设,称为非完整性约束(NHC)。车辆满足该约束时,载体坐标系下的观测向量可以表示为:
在这里插入图片描述
车辆运动约束和非完整性约束均属于载体坐标系下的观测值,因此与imu的状态构建约束时需要获得b系和v系的转换关系。
在传统的车载里程计、惯导组合导航算法中,imu安装在车身,需要提前标定或在线标定imu安装角,并视为固定值。而在该方案中,imu安装在车轮上,imu相对于载体的横滚角程周期性变化,无法感受载体的水平姿态,即仅仅依靠车轮imu,无法判断车辆是上坡还是下坡。
因此,假设车辆行驶在水平面上,v系相对于n系只存在航向角误差,则有:
在这里插入图片描述
载体的航向角误差可认为与imu的航向角误差相等。
由imu速度经过杠臂投影得到的车轮速度为:
在这里插入图片描述
则,车轮中心速度约束方程误差方程可以表示为:
在这里插入图片描述
ps:状态向量的误差方程有固定思路,如下:
该推导方式下,误差等于预测减去观测值。当然也可以观测减去预测。

在这里插入图片描述

b.里程增量约束算法

思路:由陀螺角速度和车轮半径可以计算车轮在任意时刻的速度,经过积分之后可以得到位移增量。
n系下的里程速度观测:
在这里插入图片描述
由imu速度推算得到的车轮在n系下的速度为:
在这里插入图片描述
两式相减得到:
在这里插入图片描述
两边积分,并认为积分区间内误差恒定,则:
在这里插入图片描述
忽略地球自转,则:
在这里插入图片描述
综上,得到里程增量约束算法的观测方程:
在这里插入图片描述

c.车轮接触地点零约束算法

根据非完整性约束,轮式机器人正常行驶在路面上时,测向和垂向的速度为零。
假设某个瞬间车轮中心相对于地面前进的速度为v,此时由于车轮子在旋转,车轮上与地面接触点相对于车轮中心的速度也为v,方向与车辆前进的方向相反,则当载体不发生颠簸和侧滑时,该点相对于地面的速度始终为零。
不同于传统的里程计速度约束,该方案无需获得车轮速度,而是通过杠臂将车轮imu速度投影换算至车轮与地面接触点,这时该点速度v(p2n) = [0 0 0]^T。
车轮接触点零速投影示意图如下:
在这里插入图片描述
由imu速度计算得到的车轮触地点p的速度为:
在这里插入图片描述
l(p2b)表示p点在b系下的杠臂。随着车轮转动,p点在b系下的位置动态地变化,需要根据imu横滚角实时计算。假设车辆在水平面上运动,则:
在这里插入图片描述
p点速度观测值可以表示为:
在这里插入图片描述
因此,速度投影约束算法的误差方程可以表示为:
在这里插入图片描述

4.零速修正和静止航向锁定

在不外加传感器的情况下,依靠载体自身的运动信息引入约束,抑制INS误差发散,主要包括ZUPT/ZIHR。
以文章(零速更新(ZUPT)辅助INS定位)一样,流程1.零速检测;2.零速更新成立,进行误差修正。
本文采用固定长度滑动窗口内的加速度、速度和角速度三个量的峰峰值来和阈值对比,判断载体是否处于静止状态。实际功能工程应用中,可以针对不同的运动载体和环境选用不同阈值。
在这里插入图片描述
当判断零速更新成立时,imu速度观测值可以表示为:
在这里插入图片描述
零速更新的观测方程可以表示为:

在这里插入图片描述
由误差扰动分析,imu推算得到的载体姿态矩阵和航向角可以分别表示为:
在这里插入图片描述
静止航向锁定的观测方程可以表示为:

在这里插入图片描述

三、基于车轮速度信息构建的三种观测约束算法讨论

从以上推导可以看出,三种观测值更新算法本质上都是利用载体车轮速度信息对系统状态进行修正。其中:
1.车轮中心速度约束算法将imu速度经杠臂和姿态矩阵C_b2n)投影到车轮中心,联合NHC与陀螺数据推算的v系下的车轮速度构建约束。引起观测误差的系统误差状态主要包括速度误差、姿态误差、陀螺误差、杠臂误差和里程计比例因子误差。
2.里程计增量约束算法是将载体速度投影在n系下进行积分得到一段时间内的位移增量,并假设在积分区间内系统误差状态不变。引起观测误差的系统状态包括速度误差、姿态误差、陀螺误差、杠臂误差、加速度计误差和车轮比例因子误差。
3.车轮触地点投影约束并不需要利用陀螺数据计算车轮中心的速度,而是利用“当载体不发生颠簸、侧滑等现象时,车轮触地点相对于n系的速度为零”这一条件构件约束。引起观测误差的系统状态包括速度误差、姿态误差、陀螺误差、杠臂误差和车轮比例因子误差。

同时,三种算法都依赖非完整性约束和载体水平面运动假设。对于车轮中心速度约束算法和里程增量约束算法比较直观,因其观测方程建立时需要载体在v系下的速度和载体姿态。而对于车轮触地点投影约束,载体水平面运动约束提现在利用车轮旋转角和半径进行速度投影。此时若载体运动在斜面上,则速度投影还应该在imu横滚角上补偿载体俯仰角。对于里程计增量约束算法,在载体动态较大时,不满足积分区间内系统保持不变这一假设,同时速度观测噪声也在无形中进行了积分,一定程度上破坏了卡尔曼中观测噪声服从高斯分布这一条件,并且里程计增量约束对NHC的假设更强一些,需要保证在积分区间内载体垂向速度和侧向速度均为零。对于车轮中心约束,由于载体航向也来自于imu姿态,因此在速度投影时引入了额外的航向误差。而对于车轮触地点零点约束,则在速度投影引入了横滚角误差。

综上,三种观测值约束算法利用的信息本质上是相同的,只是观测值加工的手段不同,不同的观测值引入不同的微小误差,因此,最终的导航结果也不应有明显的差异。

缺陷:1.单体车轮安装imu受限于水平面运动假设,在起伏不平的路段精度会下降,同时单个系统的鲁棒性有待提高。

改进:针对缺陷1,可以通过车体安装imu,检测载体的水平姿态信息;针对缺陷2,考虑在两个非转向轮同时安装imu,进行两次观测去平均。同时车身安装imu,可以用imu之间的空间位姿关系来修正系统误差。

这篇关于基于车轮安装MEMS IMU的航迹推算算法研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数