质心侧偏角这个量,做车辆状态估计的人都不陌生,但真正把它和IMU纵向加速度信号放在一起做修正的工程实践,公开资料里讲得并不透彻。我最近在一个车辆动力学控制项目里反复折腾了这块内容,从最初的无从下手到后来跑通整套逻辑,中间踩了不少坑。这篇文章就把整个思路和实现过程完整梳理一遍,包括为什么要做这个修正、背后的力学原理是什么、具体怎么落地、实测中会遇到哪些意外情况。如果你正在做车辆状态估计、底盘域控制或者组合导航相关的工作,这篇内容应该能帮你省下不少试错时间。
1. 为什么IMU纵向加速度信号需要修正
1.1 从一次实车数据异常说起
项目初期,我们在车上装了IMU,纵向加速度的读数在直线加速工况下看着挺正常,但一到弯道里就出问题。车辆以较高速度过弯时,IMU测出来的纵向加速度会出现明显的偏移,有时候甚至出现符号都跟预期对不上的情况。一开始怀疑是IMU安装角度有偏差,重新做了标定之后发现直线工况确实改善了,但弯道里的异常依然存在。
后来把IMU的原始数据、轮速传感器数据、方向盘转角数据全部拉出来对比,才意识到问题的根源:IMU测量的是载体坐标系下的加速度,而车辆在弯道中运动时,载体坐标系相对于车辆的实际运动方向存在一个夹角,这个夹角就是质心侧偏角。IMU的纵向加速度敏感轴指向的是车头方向,但车辆质心的实际运动方向并不完全沿着车头方向,两者之间的偏差导致IMU测到的"纵向加速度"并不纯粹是车辆前进方向上的加速度分量。
这个发现让我重新审视了整个信号链路。简单来说,IMU安装时其纵向轴对齐的是车辆几何纵轴,但车辆在实际行驶中,尤其是弯道工况下,质心处的速度方向与车辆纵轴之间存在侧偏角。IMU的纵向加速度计测量的是沿其敏感轴方向的比力分量,当存在侧偏角时,这个测量值中混入了侧向加速度的投影分量,导致纵向加速度信号出现偏差。
1.2 质心侧偏角到底在修正什么
要理解这个修正的本质,得先搞清楚几个坐标系之间的关系。车辆运动可以用两个坐标系来描述:一个是车辆坐标系,原点在质心,纵轴指向车头方向,横轴指向驾驶员右侧;另一个是地面坐标系,描述车辆在地面上的实际运动轨迹。
质心侧偏角β定义为车辆质心处的速度方向与车辆纵轴之间的夹角。当车辆直线行驶时,β≈0,IMU纵向轴与速度方向一致,测量值准确。当车辆进入弯道时,质心速度方向开始偏离车辆纵轴,β不再为零。此时IMU纵向加速度计的测量值a_x_meas与车辆实际纵向加速度a_x_true之间的关系可以近似表示为:
a_x_meas ≈ a_x_true · cos(β) + a_y · sin(β)
其中a_y是侧向加速度。在小角度假设下,cos(β)≈1,sin(β)≈β,所以:
a_x_meas ≈ a_x_true + a_y · β
这意味着IMU测到的纵向加速度中,除了真实的纵向加速度之外,还叠加了一个a_y·β的误差项。在高速大转角工况下,a_y可能达到0.8g甚至更高,β可能在2°到5°之间,换算成弧度大约是0.035到0.087rad,那么误差项的量级就在0.028g到0.07g之间。这个误差对于需要精确纵向加速度的控制算法来说,已经足够引起问题了。
修正的目标就是从a_x_meas中减去a_y·β这一项,还原出真实的纵向加速度a_x_true。听起来简单,但难点在于β本身就是一个需要估计的量,而且a_y的测量也受到侧倾角等因素的影响。
1.3 不修正会带来什么后果
在实际项目中,纵向加速度信号主要用于几个方面:驱动力控制、制动力的分配、坡度估计、以及与其他传感器做融合定位。如果纵向加速度信号存在偏差,影响是连锁性的。
驱动力控制方面,如果纵向加速度被高估,控制器会认为车辆已经获得了足够的加速度,从而减少驱动力输出,导致实际加速性能下降。如果被低估,则可能过度输出驱动力,引起驱动轮打滑。在弯道中,这个偏差还会导致左右轮驱动力分配出现误判。
坡度估计方面,很多坡度估计算法依赖纵向加速度与轮速微分之间的差值来推算坡度。如果纵向加速度信号中混入了侧向加速度的投影分量,坡度估计就会在弯道中出现明显偏差,进而影响能量管理策略和变速箱换挡逻辑。
组合导航方面,如果IMU的纵向加速度信号被用于惯导解算,误差会随时间积分累积,导致位置估计漂移加速。虽然GNSS可以在一定程度上抑制漂移,但在GNSS信号受限的场景下,这个误差就会成为主要误差源之一。
2. 质心侧偏角估计的几条技术路线
2.1 运动学方法与动力学方法的取舍
估计质心侧偏角,业界主要有两条路线:运动学方法和动力学方法。
运动学方法基于刚体运动学关系,利用横摆角速度、侧向加速度和纵向车速来积分或代数计算侧偏角。最常用的运动学关系是:
β = ∫(a_y / v_x - γ) dt
其中γ是横摆角速度,v_x是纵向车速。这个方法的优点是模型简单、不依赖轮胎力学参数,在轮胎线性工作区内精度尚可。但缺点也很明显:积分会累积误差,而且当纵向车速很低时,a_y/v_x这一项会变得非常大,数值不稳定。
动力学方法则基于车辆二自由度或更多自由度的动力学模型,通过观测器或滤波器来估计侧偏角。常用的有龙伯格观测器、卡尔曼滤波器、滑模观测器等。动力学方法在中高侧向加速度工况下精度更好,但对模型参数的准确性依赖较强,尤其是轮胎侧偏刚度这个参数,在不同路面和胎压下变化很大。
我在项目中最终采用的是运动学与动力学融合的方案:低速和线性工况下以运动学为主,中高速和大侧向加速度工况下逐步过渡到动力学观测器。这样既保证了全工况的数值稳定性,又能在关键工况下获得足够的精度。
2.2 基于卡尔曼滤波的侧偏角估计实现
卡尔曼滤波是工程中最常用的融合框架。我设计的滤波器状态向量取为:
x = [β, γ, a_y]^T
其中β是质心侧偏角,γ是横摆角速度,a_y是侧向加速度。量测向量取为:
z = [γ_meas, a_y_meas]^T
状态方程基于车辆单轨模型建立:
dβ/dt = (F_yf + F_yr) / (m·v_x) - γ dγ/dt = (l_f·F_yf - l_r·F_yr) / I_z da_y/dt = (F_yf + F_yr) / m - γ·v_x
其中F_yf和F_yr分别是前后轴侧向力,用线性轮胎模型近似:
F_yf = C_f · (β + l_f·γ/v_x - δ) F_yr = C_r · (β - l_r·γ/v_x)
这里C_f和C_r是前后轴侧偏刚度,δ是前轮转角,m是整车质量,I_z是横摆转动惯量,l_f和l_r是质心到前后轴的距离。
量测方程很简单:
γ_meas = γ + noise a_y_meas = a_y + noise
在实现过程中,有几个细节需要特别注意。过程噪声协方差矩阵Q的调参非常关键,如果Q设得太小,滤波器会过度信任模型,在模型失配时收敛很慢;如果Q设得太大,滤波器又会过度信任量测,噪声抑制效果变差。我的经验是,Q的对角元素中,β对应的过程噪声可以设得稍大一些,因为侧偏角的模型不确定性最大;γ和a_y对应的过程噪声可以设得小一些,因为这两个量的模型相对准确。
量测噪声协方差矩阵R的设定相对直接,可以根据IMU和横摆角速度传感器的数据手册中的噪声密度来初设,然后根据实测数据的静态噪声水平做微调。
2.3 低速工况下的特殊处理
低速工况是侧偏角估计的一个难点。当车速低于某个阈值(我设的是3m/s)时,运动学关系中的a_y/v_x项会变得非常大,导致数值不稳定。同时,低速下轮胎的力学特性也进入非线性区,线性轮胎模型的精度下降。
我的处理策略是:在低速工况下,直接令β≈0,因为低速时侧偏角本身确实很小,对纵向加速度修正的影响可以忽略。同时,切换到基于方向盘转角和车速的几何关系来估算一个粗略的侧偏角,用于平滑过渡。当车速从低速逐渐升高时,通过一个加权函数逐步从低速策略过渡到卡尔曼滤波器的输出。
这个加权函数我用的是一条S形曲线,过渡区间设在3m/s到5m/s之间。实测下来,这个过渡区间内的估计值没有出现明显的跳变,整体比较平滑。
3. 纵向加速度修正的完整实现链路
3.1 信号预处理与时间同步
在开始修正之前,信号预处理是绕不过去的一步。IMU的原始数据、轮速传感器的数据、方向盘转角数据,这些信号的采样率和传输延迟都不一样,如果不做时间同步,修正的效果会大打折扣。
我的做法是:所有信号统一重采样到100Hz,以IMU的时间戳为基准。轮速信号通常来自CAN总线,延迟在10ms到20ms之间,需要根据实际测试做一个固定的延迟补偿。方向盘转角信号的延迟相对较小,但也要确认。时间同步做不好,在快速变化的工况下,a_y和β的乘积项就会和实际的误差项对不上,修正反而可能引入新的误差。
另外,IMU的原始加速度信号中包含了重力分量。虽然纵向加速度计理论上不受重力影响(当车辆水平时),但当车辆存在俯仰角时,重力会在纵向轴上产生投影。所以严格来说,在修正侧偏角引起的误差之前,应该先做重力补偿。重力补偿需要知道俯仰角,可以通过加速度计的三个轴读数来估算,或者从其他传感器获取。
3.2 侧向加速度的坐标变换
IMU测量的侧向加速度是在载体坐标系下的,而修正公式中需要的a_y是车辆坐标系下的侧向加速度。当车辆存在侧倾角时,这两个值并不相等。侧倾角会导致重力在侧向轴上产生投影,同时也会改变侧向加速度计敏感轴的方向。
侧倾角对侧向加速度测量的影响可以表示为:
a_y_meas ≈ a_y_true · cos(φ) + g · sin(φ)
其中φ是侧倾角,g是重力加速度。在侧倾角为5°时,g·sin(φ)约为0.085g,这个量级已经不可忽略了。所以如果直接用IMU的侧向加速度读数代入修正公式,在侧倾工况下会引入额外的误差。
我的处理方式是:用IMU的侧向加速度和垂直加速度来估算侧倾角,然后对侧向加速度做补偿。具体来说,当车辆在稳态转弯时,侧向加速度和侧倾角之间存在近似关系,可以结合悬架模型来估计。更简单的做法是直接用加速度计的三个轴读数计算姿态角,然后做坐标变换。我用的是互补滤波的方式,把加速度计的低频姿态信息和陀螺仪的高频角速度信息融合起来,得到较为准确的侧倾角和俯仰角。
3.3 修正公式的工程化实现
理论公式a_x_true = a_x_meas - a_y·β看起来很简单,但工程化实现时需要考虑几个问题。
第一个问题是β的符号约定。不同的文献对侧偏角的正负号定义可能不同,必须和你的车辆坐标系定义保持一致。我的定义是:车辆纵轴指向车头,横轴指向右侧,侧偏角为正表示速度方向偏向车辆纵轴的右侧。在这个定义下,当车辆左转时,侧偏角为正,a_y为正(向心加速度指向左侧,但按照车辆坐标系定义,左转时侧向加速度为负?这里需要仔细确认)。实际上,在ISO坐标系下,左转时横摆角速度为正,侧向加速度为负。所以修正项的符号需要根据你的坐标系定义仔细推导,不能想当然。
第二个问题是修正的时机和条件。并不是所有工况下都需要做这个修正。当侧偏角很小(比如小于0.5°)时,修正量微乎其微,可以忽略。当侧向加速度很小(比如小于0.1g)时,即使侧偏角较大,修正量也不大。所以可以设置一个使能条件:只有当|β|和|a_y|同时超过一定阈值时,才启用修正。这样可以避免在不需要修正的工况下引入不必要的计算和潜在的数值问题。
第三个问题是修正量的限幅。在某些极端工况下,比如传感器故障或者估计器发散,β的估计值可能会异常大,导致修正量过大,反而破坏了纵向加速度信号。所以需要对修正量做一个限幅,比如限制在±0.1g以内。这个限幅值可以根据实际车辆的极限工况来确定。
3.4 与轮速信号的交叉验证
修正做完之后,怎么知道修正是对的?我的做法是用轮速信号做交叉验证。轮速微分可以得到一个纵向加速度的估计值,虽然轮速信号本身有噪声,而且在大驱动力或大制动力工况下会有滑移,但在大多数工况下,轮速微分得到的纵向加速度和修正后的IMU纵向加速度应该是一致的。
如果两者在弯道工况下仍然存在明显的系统性偏差,那就说明修正还不彻底,可能是β的估计有偏差,或者侧倾角补偿没做好。如果两者在直线工况下就有偏差,那问题可能出在IMU的安装角度或者标定上,而不是侧偏角修正的问题。
我用这个方法排查过好几次问题。有一次发现弯道中修正后的纵向加速度仍然偏大,后来查出来是侧倾角估计的符号搞反了,导致侧向加速度补偿方向错误,进而影响了修正量。这种问题如果不做交叉验证,很难发现。
4. 实测中遇到的典型问题与排查过程
4.1 修正后信号出现高频抖动
第一次跑通修正逻辑后,发现修正后的纵向加速度信号在弯道中出现了明显的高频抖动,频率大概在5Hz到10Hz之间。这个抖动在原始IMU信号中并不明显,说明是修正过程引入的。
排查过程是这样的:先单独看β的估计值,发现β在弯道中也有类似频率的抖动。再往前查,发现a_y信号本身在弯道中就有一定的周期性波动,这个波动可能来自路面激励或者悬架系统的振动。a_y的波动乘以β之后,就变成了纵向加速度修正量的波动,叠加到原始信号上就表现为高频抖动。
解决方案是在计算修正量之后加一个低通滤波器。滤波器的截止频率我设在3Hz,这样既能保留修正量的低频成分(真正的侧偏角引起的误差是低频的),又能滤掉由a_y高频波动引起的高频修正量。滤波器的类型我用的是一阶巴特沃斯,实现简单,相位滞后也可以接受。
这里有个经验:滤波器的截止频率不能设得太低,否则修正量的相位滞后会导致在快速变化的工况下修正不及时。3Hz是我实测下来比较合适的值,但具体值可能需要根据你的车辆特性和工况来调整。
4.2 大侧偏角工况下的估计器发散
在一次极限工况测试中,车辆出现了较大的侧偏角,估计器的输出开始发散,β的估计值在短时间内跳到了很大的数值,导致修正量异常,纵向加速度信号被严重扭曲。
分析下来,问题出在卡尔曼滤波器的线性轮胎模型上。当侧偏角较大时,轮胎进入非线性区,侧向力不再随侧偏角线性增长,而是趋于饱和。线性模型在这种情况下会严重高估侧向力,导致滤波器对状态的预测出现较大偏差,进而引起发散。
解决思路有两个:一是换用非线性轮胎模型,比如魔术公式或者查表模型;二是给估计值加一个合理的限幅,当β超过某个阈值时,认为估计器已经不可信,切换到备用策略。
我最终采用的是组合方案:在滤波器中用简化的非线性轮胎模型(用分段线性来近似饱和特性),同时对β的输出做限幅,最大不超过10°。当限幅触发时,修正功能暂时禁用,直到估计值回到合理范围内。实测下来,这个方案在极限工况下虽然不能保证修正的精度,但至少不会让信号变得不可用。
4.3 传感器安装偏差与杆臂效应
IMU的安装位置和安装角度对测量结果有直接影响。如果IMU没有安装在质心位置,而是安装在质心前方或后方,那么车辆在转弯时,IMU所在位置会有一个额外的向心加速度分量,这个分量与质心处的加速度不同。这就是所谓的杆臂效应。
杆臂效应对纵向加速度的影响相对较小(主要影响侧向和垂向),但对侧向加速度的影响不可忽略。如果IMU安装在质心前方距离d的位置,那么IMU测到的侧向加速度与质心处侧向加速度的关系为:
a_y_imu = a_y_cg + d · dγ/dt
其中dγ/dt是横摆角加速度。在快速转向工况下,横摆角加速度可能达到较大的数值,d·dγ/dt这一项就可能引入显著的误差。
我的处理方式是:先测量IMU安装位置相对于质心的距离,然后在信号处理中做杆臂补偿。补偿需要用到横摆角速度的微分,这个微分信号噪声较大,需要先做滤波。如果IMU安装位置离质心很近(比如在座椅下方),杆臂效应的影响可以忽略,补偿的必要性就不大。
安装角度偏差则是另一个问题。如果IMU的纵向轴与车辆纵轴之间存在安装偏差角,那么IMU测到的纵向加速度中会混入侧向加速度的分量,这个混入量与侧偏角引起的误差是叠加的。安装角度偏差可以通过静态标定来测量和补偿,但需要注意的是,车辆载荷变化会导致悬架高度变化,进而改变IMU的实际安装角度,所以静态标定的结果可能需要在不同载荷下分别进行。
4.4 路面坡度与侧倾的耦合影响
在坡道上转弯时,路面坡度和侧倾会耦合在一起,给修正带来额外的困难。坡度会导致重力在纵向轴上产生投影,这个投影会被IMU的纵向加速度计测量到,如果不做补偿,就会被误认为是车辆的真实纵向加速度。而侧倾则会影响侧向加速度的测量,进而影响修正量。
更麻烦的是,坡度和侧倾的估计本身就需要用到加速度信号,这就形成了一个循环依赖。我的处理方式是:用轮速信号和GPS高度信息来辅助坡度估计,用悬架高度传感器(如果有的话)来辅助侧倾估计,尽量减少对加速度信号的依赖。如果没有这些辅助信息,那就只能在修正逻辑中做一个折中,接受一定程度的误差。
实测中我发现,在坡度小于3°、侧倾小于2°的工况下,坡度和侧倾对修正的影响相对较小,可以暂时忽略。但在更大的坡度或侧倾下,就必须做补偿,否则修正的效果会大打折扣。
5. 修正效果的量化评估与验证方法
5.1 用轮速微分做参考基准
评估修正效果,最直接的方法就是和轮速微分做对比。具体操作是:在直线工况下,记录IMU纵向加速度和轮速微分,两者的差值反映了IMU的零偏和安装误差。在弯道工况下,再次记录两者的差值,如果修正前差值明显增大,而修正后差值回到和直线工况相近的水平,就说明修正有效。
需要注意的是,轮速微分本身也有误差。轮速信号的量化噪声、轮胎滚动半径的变化、轮胎滑移等都会影响轮速微分的精度。所以这个方法只能做定性评估,不能做精确的定量评估。但在工程实践中,定性评估往往已经足够了。
我通常会计算一个统计指标:在弯道工况下,修正前后IMU纵向加速度与轮速微分之差的均方根值。如果修正后这个值明显下降,就说明修正起了作用。实测数据表明,在侧向加速度0.4g、侧偏角3°的工况下,修正后均方根误差可以降低40%到60%。
5.2 与GPS加速度的交叉比对
如果车辆上装有高精度的GPS,可以用GPS的速度微分来得到一个纵向加速度的参考值。GPS的速度精度通常在0.1m/s以内,微分之后噪声较大,需要做较强的滤波。但在稳态工况下,滤波后的GPS纵向加速度可以作为参考。
GPS纵向加速度是在地面坐标系下的,需要投影到车辆坐标系才能和IMU的纵向加速度对比。投影需要用到航向角,航向角可以从GPS的双天线系统获取,或者从组合导航的输出中获取。
我用这个方法验证过几次,发现修正后的IMU纵向加速度和GPS纵向加速度在弯道中的一致性明显优于修正前。但GPS信号在隧道、高架桥下等场景会丢失,所以这个方法不能作为唯一的验证手段。
5.3 闭环控制效果的直接观察
最终极的验证方法是看闭环控制效果。如果纵向加速度信号被用于某个控制回路,那么修正前后控制效果的变化就是最直接的证据。
在我们的项目中,纵向加速度信号被用于驱动力前馈控制。修正前,在弯道中加速时,驱动力前馈量会出现偏差,导致实际加速度与驾驶员需求之间存在明显差异。修正后,这个差异明显减小,驾驶性评价也有所提升。
这种验证方法的好处是直接反映了信号质量对最终性能的影响,但缺点是很难分离出纵向加速度修正这一个因素的影响,因为控制效果还受到很多其他因素的影响。所以通常需要结合其他验证方法一起使用。
6. 工程落地中的参数调优经验
6.1 卡尔曼滤波器Q和R矩阵的整定
Q和R矩阵的整定是卡尔曼滤波器应用中最耗时的环节。我的经验是分三步走:
第一步,根据传感器的数据手册和实际静态测试,确定R矩阵的初值。IMU的加速度噪声密度通常在100μg/√Hz到300μg/√Hz之间,横摆角速度的噪声密度在0.01°/s/√Hz到0.05°/s/√Hz之间。把这些值换算到你的采样率和带宽下,就得到了R的对角元素初值。
第二步,根据模型的不确定性确定Q矩阵的初值。β的模型不确定性最大,因为轮胎力学特性受路面、胎压、载荷等因素影响很大,所以β对应的Q可以设得大一些。γ和a_y的模型相对准确,Q可以设得小一些。我的经验值是β对应的Q比γ对应的Q大一个数量级左右。
第三步,在实车数据上做离线调优。把记录的数据回放,调整Q和R,观察β估计值的平滑度和跟踪速度。如果估计值太滞后,就增大Q;如果估计值太抖,就减小Q或增大R。这个过程可能需要反复迭代多次,直到找到满意的平衡点。
6.2 修正使能条件的阈值设定
修正使能条件的阈值设定需要在修正效果和计算稳定性之间做平衡。阈值设得太低,会在不需要修正的工况下频繁启用修正,增加计算负担,也可能引入不必要的噪声。阈值设得太高,会在需要修正的工况下漏掉修正,影响信号精度。
我的经验值是:侧偏角阈值设在0.5°到1°之间,侧向加速度阈值设在0.1g到0.15g之间。这两个条件同时满足时才启用修正。在实际标定中,可以先设一个较宽松的阈值,观察修正量的分布,然后根据修正量的大小来调整阈值。如果大部分工况下修正量都很小,就可以适当提高阈值,减少不必要的修正。
6.3 低通滤波器截止频率的选择
低通滤波器的截止频率选择需要在噪声抑制和相位滞后之间做平衡。截止频率越低,噪声抑制效果越好,但相位滞后越大,在快速变化的工况下修正不及时。截止频率越高,相位滞后越小,但噪声抑制效果变差。
我的经验值是:截止频率设在3Hz到5Hz之间。具体值取决于你的车辆动力学特性和工况。如果车辆主要是中低速城市工况,3Hz就足够了。如果涉及高速紧急避障等工况,可能需要提高到5Hz。可以通过分析修正量的频谱来确定:如果修正量的主要能量集中在2Hz以下,截止频率设在3Hz就能保留大部分有用信号;如果修正量在3Hz到5Hz之间还有较多能量,就需要提高截止频率。
6.4 不同车型的适配注意事项
这套修正逻辑在不同车型上适配时,有几个参数需要重新标定:整车质量、质心位置、横摆转动惯量、前后轴侧偏刚度。这些参数直接影响卡尔曼滤波器的模型精度,如果偏差太大,估计效果会明显下降。
整车质量和质心位置可以通过称重实验来测量,横摆转动惯量可以通过专门的实验来测量,或者用经验公式估算。前后轴侧偏刚度是最难准确获取的参数,通常需要通过稳态回转实验或者参数辨识来获取。如果这些参数暂时无法精确获取,可以先用同类车型的经验值,然后在实车数据上做微调。
另外,不同车型的悬架特性不同,侧倾角与侧向加速度的关系也不同。如果侧倾角估计用的是基于悬架模型的方案,那么悬架参数也需要重新标定。如果用的是基于加速度计的方案,则相对通用一些,但也要注意不同车型的加速度计安装位置和角度可能不同。
7. 一些容易被忽略的细节
7.1 IMU采样率与信号带宽的匹配
IMU的采样率选择是一个容易被忽略的问题。采样率太低,会丢失信号的高频成分,影响修正的精度;采样率太高,会增加数据处理负担,而且如果后续的控制算法不需要那么高的带宽,高采样率也没有意义。
我的经验是:IMU的采样率至少应该是信号带宽的2倍以上,工程上通常取5到10倍。对于纵向加速度修正这个应用,信号带宽通常在10Hz以内,所以IMU采样率在100Hz就足够了。但如果你的控制算法需要更高的带宽,比如用于主动悬架控制,那可能需要200Hz甚至更高的采样率。
需要注意的是,采样率高不代表精度高。有些IMU在高采样率下噪声会增大,或者有效位数会下降。选择IMU时,要综合考虑采样率、噪声密度、量程、带宽等指标,不能只看采样率一个参数。
7.2 温度对IMU零偏的影响
IMU的零偏会随温度变化,这个特性在长时间运行或者温度变化较大的场景下会变得明显。零偏的变化会直接表现为纵向加速度的缓慢漂移,如果不做补偿,会被误认为是车辆的真实加速度。
我的处理方式是:在IMU开机后做一个预热,等温度稳定后再进行零偏标定。在运行过程中,如果车辆处于静止状态(可以通过轮速信号判断),就重新标定零偏。如果车辆长时间运行且温度变化较大,可以用温度传感器数据做零偏的温度补偿,补偿系数需要事先通过温箱实验来标定。
这个细节在短时间测试中可能不明显,但在长时间运行或者高低温交替的场景下,影响会逐渐显现。我建议在项目初期就把零偏的温度补偿考虑进去,不要等到问题出现了再补救。
7.3 数据记录与回放的重要性
在整个开发过程中,数据记录与回放是提高效率的关键。实车测试的机会往往有限,每次测试都应该尽可能多地记录数据,包括原始传感器数据、中间变量、最终输出等。这样在测试结束后,可以在离线环境下反复回放数据,调试算法参数,而不需要反复跑实车。
我通常会记录以下数据:IMU三轴加速度、三轴角速度、轮速四轮、方向盘转角、车速、横摆角速度、以及算法内部的β估计值、修正量、使能标志等。数据记录频率至少100Hz,确保不会丢失细节。
回放工具我用的是一种简单的脚本方案,可以逐帧回放数据,也可以批量处理。关键是要保证回放时的数据处理逻辑和实车运行时完全一致,否则离线调优的结果可能无法直接应用到实车上。
7.4 与其他估计模块的耦合
纵向加速度修正模块并不是孤立的,它和其他估计模块之间存在耦合。比如,侧偏角估计需要用到横摆角速度和侧向加速度,而侧向加速度的补偿又需要用到侧倾角估计,侧倾角估计又可能用到纵向加速度。这就形成了一个耦合网络。
处理这种耦合的原则是:尽量保持各个模块的相对独立,避免形成紧耦合的循环。如果确实存在循环依赖,就要仔细分析循环的增益,确保不会形成正反馈导致发散。在我的实现中,侧倾角估计主要依赖加速度计和陀螺仪,不依赖纵向加速度,所以没有形成循环。侧偏角估计依赖侧向加速度,而侧向加速度的补偿依赖侧倾角,但侧倾角估计不依赖侧偏角,所以这个链路是单向的,没有循环。
如果确实无法避免循环,可以考虑用上一时刻的值来打破循环,或者在循环中引入低通滤波来限制带宽,防止高频正反馈。
7.5 实车测试的安全注意事项
最后说一个容易被忽略但非常重要的问题:实车测试的安全。做极限工况测试时,车辆可能会出现较大的侧偏角,如果修正逻辑出现问题,导致纵向加速度信号异常,可能会影响驱动力控制或制动控制,进而影响车辆稳定性。
我的做法是:在测试修正逻辑时,先确保有一个可靠的安全兜底策略。比如,当修正后的纵向加速度与轮速微分的偏差超过一定阈值时,自动切换回未修正的原始信号,并记录故障标志。这样即使修正逻辑出现问题,也不会导致车辆失控。
另外,测试应该从低强度工况开始,逐步提高强度,每次提高强度之前都要确认上一强度的测试结果正常。不要一上来就做极限工况,那样风险太大。
这套修正逻辑从最初的想法到最终落地,前后花了大概两个月的时间,其中大部分时间花在参数调优和问题排查上。真正核心的算法逻辑其实并不复杂,难的是处理各种工程细节和边界工况。如果你也在做类似的工作,我的建议是先把基础的运动学和动力学关系搞清楚,然后在实车数据上反复验证,不要怕麻烦。很多问题只有在实际数据中才会暴露出来,光靠仿真和理论分析是不够的。