基于车轮安装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之间的空间位姿关系来修正系统误差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端案例—antdDesign的Select多选框组件加上全选功能

前端案例—antdDesign的Select多选框组件加上全选功能。 实现效果如下: Select 组件里有这个属性,可以利用这个对下拉菜单进行自定义。 const handleChange (e, value) > {setSelectState(e.target.checked)let arr productOptions?productOption…

【开源工程及源码】超级经典开源项目实景三维数字孪生智慧港口

智慧港口可视化平台,旨在实现对港口运营的全面监测、智能管理和优化决策。飞渡科技利用数字化、模拟和仿真的技术,通过互联的传感器和设备,实现实时数据的采集、传输和分析,将港口内外的复杂数据以直观、易懂的方式呈现&#xff0…

Qt配置opencv,cmake编译参考笔记,已成功

Qt版本:Qt5.14.2 opencv:4.5.4(不要用4.5.5!!很坑别问我为什么知道) cmake:下的最新版本 前言:为什么非得要用cmake编译呢?跳过cmake不好吗? 之前用的opencv…

服务熔断(Hystrix)

服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的…

c++打开网页

1.使用ShellExecute 效果图: 相关代码: void Open_url::on_pushButton_clicked() {QString path1 "explorer.exe";QString urlui->lineEdit->text();ShellExecute(NULL, L"open", path1.toStdWString().c_str(), url.toStdWString().c…

Python匹配文件模块的实战技巧

更多资料获取 📚 个人网站:ipengtao.com 在Python中,文件匹配是许多应用中常见的需求,例如文件管理、数据处理等。本文将深入探讨Python中用于文件匹配的模块,包括glob、fnmatch和os.path等,通过丰富的示例…

Keil5软件仿真 定时器互补通道 波形输出(Logic Analyzer)

步骤一:管脚配置确认。 ①配置定时器的管脚模式为复用推挽输出模式(GPIO_MODE_AF_PP)!!!,注意:复用开漏模式软件仿真时无波形。 步骤二:编译程序。 ①点击编译按钮。 …

(Mac上)使用Python进行matplotlib 画图时,中文显示不出来

【问题描述】 ①报错确缺失字体: ②使用matplotlib画图,中文字体显示不出来 【问题思考】 在网上搜了好多,关于使用python进行matplotlib画图字体显示不出来的,但是我试用了下,对我来说都没有。有些仅使用于windows系…

小型洗衣机什么牌子好又便宜?内衣裤洗衣机十大排名推荐

作为一个上班族,每天回到家中真的不愿意再动了,市面上也越来越多懒人福利神器,而内衣洗衣机可以称得上是人类最幸福的小家电,它不仅可以释放我们的双手,而且还比我们自己手洗得干净,功能和清洁力都比我们传…

Ubuntu 常用命令之 zip 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 Ubuntu系统下的zip命令是用来压缩文件的。这个命令可以将一个或多个文件或者目录压缩成一个.zip文件,也可以将整个目录树压缩成一个.zip文件。 zip命令的基本格式 zip [选项] [压缩文件名] [要压缩的文件或目录...]z…

选择移动订货系统源码的四大原因

移动订货系统需要选择源码支持的厂家,有以下四个原因,其中第四个是比较重要的,大家点个关注点个赞,我们接着往下看。 1.可自行定制:支持源码的移动订货系统可以根据企业的具体需求进行定制开发,满足企业特定…

电脑完全重装教程——原版系统镜像安装

注意事项 本教程会清除所有个人文件 请谨慎操作 请谨慎操作 请谨慎操作 前言 本教程是以系统安装U盘为介质进行系统重装操作,照着流程操作会清除整个硬盘里的文件,请考虑清楚哦~ 有些小伙伴可能随便在百度上找个WinPE作为启动盘就直接…

运维实施工程师计算机基础

目录 一.运维实施工程师需要具备的知识 1.1.运维工程师、实施工程师是啥? 1.2. 运维工程师、实施工程师做些啥? 1.3.运维工程师、实施工程师需要具备啥技能? 二.计算机的组成 2.1.简介 2.1.1.CPU(中央处理器) 2.…

25.BFD双向转发检查

BFD双向转发检查 链路故障检测工具,结合三层协议使故障检测更加快速 例如两台路由器之间加了一台二层设备 在修改优先级后,默认选择了下面那条优先级高的路由,R1 ping R2的时候是正常能ping通的 但是,当下面的路由出现故障后&a…

Mybatis3系列课程8-带参数查询

简介 上节课内容中讲解了查询全部, 不需要带条件查, 这节我们讲讲 带条件查询 目标 1. 带一个条件查询-基本数据类型 2.带两个条件查询-连个基本数据类型 3.带一个对象类型查询 为了实现目标, 我们要实现 按照主键 查询某个学生信息, 按照姓名和年级编号查询学生信息 按照学生…

解决GD32VF103编译printf无法打印 float

解决GD32VF103编译printf无法打印 float 在GD32VF103编译后,采用printf打印float变量时,总是无法显示,是因为编译时采用用newlib-nano库,但是这个库对printf做了优化,在eclipse的build配置use-newlib-nano的选项取消勾…

【Amazon 实验②】使用Amazon WAF做基础 Web Service 防护之自定义规则

文章目录 1. 自定义规则1.1 介绍 2. 实验步骤2.1 测试2.2 输出 上一篇章介绍了使用Amazon WAF做基础 Web Service 防护中的Web ACLs 配置 & AWS 托管规则的介绍和演示操作 【Amazon 实验①】使用Amazon WAF做基础 Web Service 防护,本篇章将继续介绍关于自定义…

Web 开发与移动应用程序开发 – 哪一种适合您的业务?

目录 Web 开发:释放浏览器的力量 1. 可访问性和跨平台兼容性: 2. 成本效益: 3. 内容交付和搜索引擎优化: 4.即时更新: 持续的网络维护: 移动应用程序开发:针对设备功能定制体验 1.增强用户体验&…

springboot+vue前后端分离的社区养老服务管理管理系统(有文档)

springbootvue前后端分离的社区养老服务管理管理系统。系统功能齐全,配置完成可运行,有文档,演示视频,配置说明,数据库文件,虚拟产品下单不退不换! 技术:springbootmybatisplusmysql…

微信小程序开发系列-02注册小程序

上一篇文章,创建了一个最小的小程序,但是,还有3个疑问没有弄清楚,还是基于demo1工程,这篇文章继续探索。 当前的目录结构是否是完备的呢?(虽然小程序可以运行起来)app.js文件内容还…