IMU模型与标定

IMU传感器误差模型与标定方法
本文详细介绍了IMU传感器的旋转运动学、测量模型与运动模型,特别是加速度计和陀螺仪的工作原理及误差模型。讨论了确定性误差如偏差、尺度因子、轴偏差,并提出了六面法定标确定性误差。还涵盖了随机误差,如高斯白噪声和随机游走,并介绍了Allan方差法进行随机误差标定。最后,概述了数学模型和离散积分方法,包括欧拉法、中值法和四阶龙格库塔法,以及整体的标定流程。

IMU传感器

旋转运动学

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dUA3Tb8z-1584641636300)(img/Untitled/1560661643256.png)]

旋转的线速度为:
r ˙ = ( − a θ ˙ sin ⁡ θ , a θ ˙ cos ⁡ θ , 0 ) ⊤ = [ 0 − θ ˙ 0 θ ˙ 0 0 0 0 0 ] [ a cos ⁡ θ a sin ⁡ θ h ] = ω × r (1) \begin{aligned} \dot{\mathbf{r}} &=(-a \dot{\theta} \sin \theta, a \dot{\theta} \cos \theta, 0)^{\top} \\ &=\left[\begin{array}{ccc}{0} & {-\dot{\theta}} & {0} \\ {\dot{\theta}} & {0} & {0} \\ {0} & {0} & {0}\end{array}\right]\left[\begin{array}{c}{a \cos \theta} \\ {a \sin \theta} \\ {h}\end{array}\right] \\ &=\boldsymbol{\omega} \times \mathbf{r} \end{aligned} \tag{1} r˙=(aθ˙sinθ,aθ˙cosθ,0)=0θ˙0θ˙00000acosθasinθh=ω×r(1)
取模得到角速度和线速度之间的关系:
∣ r ˙ ∣ = ∣ ω ∣ ∣ r ∣ sin ⁡ ϕ = a ∣ θ ˙ ∣ (2) |\dot{\mathbf{r}}|=|\boldsymbol{\omega}||\mathbf{r}| \sin \phi=a|\dot{\theta}| \tag{2} r˙=ωrsinϕ=aθ˙(2)
从Body系和Inertial系分别看旋转运动得到的速度关系为:
r ˙ I = R I B r ˙ B + R ˙ I B r B = R I B r ˙ B + [ R I B ω b ] × r = R I B v b + ω × r (3) \begin{aligned} \dot{\mathbf{r}}_{I} &=\mathbf{R}_{I B} \dot{\mathbf{r}}_{B}+\dot{\mathbf{R}}_{I B} \mathbf{r}_{B} \\ &=\mathbf{R}_{I B} \dot{\mathbf{r}}_{B}+\left[\mathbf{R}_{I B} \boldsymbol{\omega}_{b}\right]_{ \times} \mathbf{r} \\ &=\mathbf{R}_{I B} \mathbf{v}_{b}+\boldsymbol{\omega} \times \mathbf{r} \end{aligned} \tag{3} r˙I=RIBr˙B+R˙IBrB=RIBr˙B+[RIBωb]×r=RIBvb+ω×r(3)

v I ≡ R I B v b + ω × r ⇔ R I B v b ≡ v I − ω × r (4) \mathbf{v}_{I} \equiv \mathbf{R}_{I B} \mathbf{v}_{b}+\omega \times \mathbf{r} \Leftrightarrow \mathbf{R}_{I B} \mathbf{v}_{b} \equiv \mathbf{v}_{I}-\boldsymbol{\omega} \times \mathbf{r} \tag{4} vIRIBvb+ω×rRIBvbvIω×r(4)

对公式(3)中速度求导得到加速度:
r ¨ I = R I B v ˙ B + R ˙ I B v B + ω × r ˙ + [ R ˙ I B ω b + R I B ω ˙ b ] × r = R I B a B + 2 ω × v + ω × ( ω × r ) + ω ˙ × r (5) \begin{aligned} \ddot{\mathbf{r}}_{I} &=\mathbf{R}_{I B} \dot{\mathbf{v}}_{B}+\dot{\mathbf{R}}_{I B} \mathbf{v}_{B}+\boldsymbol{\omega} \times \dot{\mathbf{r}}+\left[\dot{\mathbf{R}}_{I B} \boldsymbol{\omega}_{b}+\mathbf{R}_{I B} \dot{\boldsymbol{\omega}}_{b}\right]_{ \times} \mathbf{r} \\ &=\mathbf{R}_{I B} \mathbf{a}_{B}+2 \boldsymbol{\omega} \times \mathbf{v}+\boldsymbol{\omega} \times(\boldsymbol{\omega} \times \mathbf{r})+\dot{\boldsymbol{\omega}} \times \mathbf{r} \end{aligned} \tag{5} r¨I=RIBv˙B+R˙IBvB+ω×r˙+[R˙IBωb+RIBω˙b]×r=RIBaB+2ω×v+ω×(ω×r)+ω˙×r(5)
对公式(5)进行变形得到:

a = a I − 2 ω × v ⏟ 科 氏 力 − ω ˙ × r ⏟ 欧 拉 力 − ω × ( ω × r ) ⏟ 离 心 力 (6) \mathbf{a}=\mathbf{a}_{I}-\underbrace{2 \boldsymbol{\omega} \times \mathbf{v}}_{\text 科氏力}- \underbrace{\dot{\boldsymbol{\omega}} \times \mathbf{r}}_{\text 欧拉力}- \underbrace{\boldsymbol{\omega} \times(\boldsymbol{\omega} \times \mathbf{r})}_{\text 离心力} \tag{6} a=aI 2ω×v ω˙×r ω×(ω×r)(6)
其中: v = R I B v b \mathbf{v}=\mathbf{R}_{I B} \mathbf{v}_{b} v=RIBvb a = R I B a b \mathbf{a}=\mathbf{R}_{I B} \mathbf{a}_{b} a=RIBab,它们表示body下的速度或加速度在Inertial系下的表示。要区别这几种表示,习惯了找一个真实值,只不过是不同系下的不同表示罢了

测量模型与运动模型

MEMS加速度计

使用电容或者电阻桥来进行测量,注意有可能测出来的加速度计值方向是与实际力相反的,因为是使用弹簧测出的惯性力。

  • 加速度计的质量块没有高速运动,不受科氏力影响
陀螺仪
  • 振动陀螺仪使用的是科氏力作用来测得旋转,一个主运动轴+一个敏感轴,与运动方向垂直方向(敏感轴方向)受一个科氏力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sVL2ow4K-1584641636301)(img/VIO-DB/1560669359061.png)]

  • 一般使用两个运动方向相反的质量块来侧科氏力,这样可以抵消加速度的影响。若质量不一致会导致有差别。

IMU误差模型

分为:确定性误差,随机误差。前者可以提前标定,后者建模成高斯分布。

确定性误差
  • 偏差bias
  • 尺度因子Scale
  • 轴偏差(非正交误差)
  • Run-to-Run Bias/Scale Factor 即每次上电启动的值都不一样
  • In Run (Stability) Bias/Scale Factor 即在运行过程中也会发生变化
  • Temperature-Dependent Bias/Scale Factor 即受温度影响的变化值

尺度因子和非对称误差为:
[ l a x l a y l a z ] = [ s x x m x y m x z m y x s y y m y z m z x m z y s z z ] [ a x a y a z ] (7) \left[\begin{array}{l}{l_{a x}} \\ {l_{a y}} \\ {l_{a z}}\end{array}\right]=\left[\begin{array}{lll}{s_{x x}} & {m_{x y}} & {m_{x z}} \\ {m_{y x}} & {s_{y y}} & {m_{y z}} \\ {m_{z x}} & {m_{z y}} & {s_{z z}}\end{array}\right]\left[\begin{array}{c}{a_{x}} \\ {a_{y}} \\ {a_{z}}\end{array}\right] \tag{7} laxlaylaz=sxxmyxmzxmxysyymzymxzm

### IMU全温标定模型方法 IMU(惯性测量单元)的全温标定是为了补偿由于温度变化引起的传感器误差,从而提升其在不同工作条件下的准确性。以下是关于IMU全温标定的相关模型和方法: #### 温度影响分析 IMU中的加速度计和陀螺仪受温度的影响较大,主要表现为灵敏度漂移、零偏漂移以及交叉耦合效应的变化。ADIS16500 的校准温度范围为 -10 至 75 摄氏度,在此范围内进行了工厂级校准,但在低于 -10 摄氏度时,温度补偿的效果会显著下降[^1]。 #### 全温标定模型 全温标定通常采用多项式拟合法来描述温度对传感器特性的影响。常见的模型包括: - **线性模型**:适用于温度影响较小的情况,表达形式为 \( y = aT + b \),其中 \( T \) 表示温度,\( a, b \) 是待求系数。 - **二次多项式模型**:更精确地捕捉非线性温度依赖关系,表达形式为 \( y = aT^2 + bT + c \)[^4]。 - **高阶多项式模型**:当温度影响复杂且非线性强时使用,例如三次或四次多项式。 #### 实现步骤概述 虽然不建议使用“步骤”词汇,但仍需说明实现过程的关键环节: - 数据采集阶段需要覆盖整个目标温度区间,并记录对应的传感器输出值。 - 使用最小二乘法或其他优化算法估计多项式的系数。 - 将得到的补偿公式嵌入到后续的数据处理流程中。 #### 软件工具支持 一些成熟的软件框架可以辅助完成全温标定任务,比如 MATLAB 提供了 Curve Fitting Toolbox 来方便地构建并验证不同的数学模型;Python 社区也有 NumPy 和 SciPy 库可供选择,它们能高效执行数值计算曲线拟合操作。 ```python import numpy as np from scipy.optimize import curve_fit def temp_model(T, a, b, c): return a * T**2 + b * T + c # 假设已知一组实验数据 points_T (温度), points_y(对应读数偏差) popt, pcov = curve_fit(temp_model, points_T, points_y) print(f"Fitted parameters: {popt}") ``` 以上代码片段展示了如何利用 Python 对温度响应进行二次多项式建模的过程。 #### 技术发展趋势 未来,随着人工智能技术的进步,基于机器学习的方法可能逐渐取代传统的解析模型成为主流解决方案之一。这种方法无需显式定义物理规律即可自动提取特征模式,具有更强泛化能力的同时也带来了新的挑战如训练样本需求量大等问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值