传感器原理与数据处理:轮式编码器、IMU、磁力计
各位同学,今天我们来聊聊底盘控制里最基础、也最容易被忽视的一环——传感器。说白了,你算法写得再漂亮,传感器数据不准,那就是「垃圾进,垃圾出」。我在项目里见过太多人,花几个月调PID参数,结果发现是编码器安装松动导致的抖动。嗯,咱们先把底子打好。
一、轮式编码器:你车轮转了多少圈?
轮式编码器,说白了就是个「圈数计数器」。它装在电机轴或轮轴上,每转一圈输出固定数量的脉冲。我习惯用增量式编码器,便宜、响应快,但有个致命缺点——断电后位置归零。
核心原理:光电或磁感应方式,将机械位移转换成电脉冲信号。
- 增量式:输出A、B两相脉冲,相位差90°,可判断正反转。我踩过坑——A相断线后,系统以为车轮在倒转,差点翻车。
- 绝对式:每个位置对应唯一编码,断电不丢失。贵,但安全。
实际项目中,编码器最常见的坑是「脉冲丢失」。为什么?电机启停瞬间的电磁干扰,或者安装间隙过大。我曾经在AGV项目里,编码器脉冲数突然跳变,排查三天发现是联轴器打滑。嗯,机械问题比软件问题难查十倍。
二、IMU:加速度计与陀螺仪
IMU(惯性测量单元)包含加速度计和陀螺仪。加速度计测「比力」,陀螺仪测「角速度」。你想想看,这两个东西天生互补——加速度计低频准、高频抖;陀螺仪高频稳、低频飘。
2.1 加速度计
加速度计测量的是物体受到的「比力」,不是单纯的重力。静止时,它输出重力加速度g。我习惯用它来算俯仰角和横滚角——前提是物体不能有线性加速度。为什么?因为加速时,你分不清是重力分量还是运动加速度。
避坑指南:我曾经在无人机悬停测试中,加速度计数据突然跳变0.5g,以为是传感器坏了。后来发现是电机振动传递到IMU安装板。记住:加速度计对高频振动极其敏感,安装时一定要加橡胶减震垫。
2.2 陀螺仪
陀螺仪测角速度,积分得到角度。但积分有个问题——零偏误差会随时间累积。我见过一个案例:陀螺仪零偏0.1°/s,积分10分钟后,角度漂了60°。这要是用在平衡车上,早就摔了。
所以,陀螺仪适合短时间高动态的姿态估计,但长时间必须用加速度计或磁力计来修正。
三、磁力计:找北的指南针
磁力计测地磁场方向,用来修正航向角(偏航角)。但地磁场很弱,容易被干扰。我在工厂里遇到过——AGV经过钢结构货架时,磁力计读数直接偏了30°。
重要提醒:磁力计必须做硬铁和软铁校准。硬铁校准就是消除固定磁场偏移(比如电机磁铁),软铁校准是消除材料磁导率影响。不做校准的磁力计,数据基本不能用。
校准方法很简单:拿着传感器在空中画「8」字,采集足够多的点,拟合出椭球参数。我习惯在系统上电后自动做一次快速校准,耗时约5秒。
四、数据融合基础:互补滤波
好了,现在我们有三个传感器:编码器(位置)、加速度计(姿态)、陀螺仪(角速度)、磁力计(航向)。怎么融合?
互补滤波是最简单、最实用的方法。它的核心思想:低频相信加速度计,高频相信陀螺仪。为什么?因为加速度计低频准(静态),陀螺仪高频准(动态)。
公式很简单:
角度 = α × (角度 + 陀螺仪角速度 × dt) + (1 - α) × 加速度计角度
其中α是滤波系数,通常取0.98左右。α越大,越相信陀螺仪;α越小,越相信加速度计。
我个人习惯:α取0.98,dt取0.01s(100Hz)。这样陀螺仪占主导,但加速度计能慢慢拉回漂移。你想想看,如果α取0.5,那姿态会跟着加速度计的噪声剧烈抖动,根本没法用。
对于航向角,把加速度计换成磁力计即可:
航向角 = α × (航向角 + 陀螺仪Z轴角速度 × dt) + (1 - α) × 磁力计航向
这里要注意:磁力计更新频率通常比IMU低,我一般把磁力计的权重再降低一些,比如α取0.99。
五、知识体系总览
下面这张图,是我自己总结的传感器数据处理流程。你照着这个思路做,基本不会跑偏。
这张图展示了从原始传感器数据到最终状态估计的完整链路。你注意看,预处理这一步很多人会跳过,直接拿原始数据做融合。我劝你别这么做——编码器脉冲毛刺、加速度计振动噪声、磁力计硬铁偏移,这些不处理干净,融合出来的数据就是垃圾。
六、实际项目中的经验总结
| 传感器 | 常见问题 | 我的处理方式 |
|---|---|---|
| 轮式编码器 | 脉冲丢失、机械打滑 | 硬件上增加滤波电容;软件上做脉冲计数校验(连续两次脉冲间隔不能超过阈值) |
| 加速度计 | 振动噪声、线性加速度干扰 | 低通滤波(截止频率5-10Hz);检测到线性加速度时降低权重 |
| 陀螺仪 | 零偏漂移、温度漂移 | 上电静态校准;温度补偿(查表法) |
| 磁力计 | 硬铁/软铁干扰 | 椭球拟合校准;远离电机和铁磁材料安装 |
一个小技巧:互补滤波的α系数不是固定的。我习惯在静止时把α调小(更相信加速度计),运动时把α调大(更相信陀螺仪)。怎么判断静止?看陀螺仪角速度的方差,小于阈值就认为静止。
好了,这一章的内容就到这里。传感器数据处理是底盘控制的「地基」,地基不稳,上层建筑再漂亮也没用。下一章我们会讲状态估计,到时候卡尔曼滤波会登场——嗯,那又是另一个故事了。