3. 传感器基础:IMU、轮式里程计、激光雷达、相机
做定位失效下的目标跟踪,说白了就是跟传感器打交道。你想想看,机器人没了定位,就像人蒙上眼睛走路——全靠手里的拐杖去探路。这四类传感器,就是我们的拐杖。
我个人习惯把传感器分成两类:本体感知和环境感知。IMU和轮式里程计属于前者,告诉你「我动了多少」;激光雷达和相机属于后者,告诉你「周围有什么」。两者结合,才能在没有绝对定位的情况下,把目标盯住。
3.1 IMU:惯性测量单元
IMU这东西,我刚开始接触时觉得它挺神奇的。三轴加速度计加三轴陀螺仪,就能算出姿态和位置。但实际用起来,嗯,坑不少。
核心原理:加速度计测比力,陀螺仪测角速度。通过积分,得到速度和位置。
举个例子,你拿着手机水平放置,加速度计读出来的是(0, 0, 9.8)——因为重力在Z轴。但如果你在车上,加速时X轴就会有读数。陀螺仪呢,测的是旋转角速度,积分后得到角度。
IMU的致命弱点:漂移。我在项目中遇到过,一个低成本的MEMS IMU,纯积分10秒钟,位置误差就能到米级。为什么会这样?因为加速度计噪声积分一次变速度误差,再积分一次变位置误差——误差随时间平方增长。
避坑指南:我曾经在AGV项目里只用IMU做短时定位,结果30秒后位置偏了2米。后来加了轮式里程计约束,才把漂移压下来。记住:IMU只能做短时(<5秒)的位姿递推,长时必须融合其他传感器。
3.2 轮式里程计
轮式里程计,说白了就是通过轮子转了多少圈,算出车走了多远。原理简单,但实用价值极高。
公式很简单:
位移 = 轮子周长 × 编码器脉冲数 / 每圈脉冲数
对于差速轮机器人,左右轮速度不同,还能算出转弯角度:
角速度 = (右轮速度 - 左轮速度) / 轮距
优点:短时精度高,不漂移。你想想看,轮子转一圈就是一圈,不会像IMU那样积分漂移。
缺点:打滑!我在仓库项目里遇到过,地面有油渍,轮子空转,里程计显示走了1米,实际只动了0.3米。还有轮胎磨损、气压变化,都会影响精度。
我的经验:轮式里程计适合做短时(<10米)的相对位移估计。配合IMU做航位推算(Dead Reckoning),效果比单独用任何一个都好。我习惯用扩展卡尔曼滤波把两者融合,IMU提供高频姿态,轮式里程计提供低频位置修正。
3.3 激光雷达
激光雷达,我愿称之为「最可靠的环境传感器」。为什么?因为它直接测距,不依赖光照,精度高。
工作原理很简单:发射激光,接收反射光,根据时间差算距离。2D激光雷达扫一个平面,3D激光雷达扫多个平面,形成点云。
在目标跟踪中的应用:
- 检测:通过点云聚类,找到目标物体
- 跟踪:利用连续帧的点云匹配(如ICP),估计目标运动
- 建图:即使定位失效,激光雷达也能做局部SLAM,维持相对坐标系
我记得有个项目,机器人在室内走廊里定位完全丢失,但靠激光雷达的scan-to-scan匹配,硬是把目标跟了200米。为什么能做到?因为走廊结构特征明显,激光雷达每帧都能找到对应关系。
关键参数:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 扫描频率 | 10Hz-100Hz | 目标跟踪至少20Hz |
| 角分辨率 | 0.1°-1° | 越小越好,但数据量也大 |
| 测量噪声 | ±1cm-±5cm | 室内场景±2cm够用 |
避坑指南:我曾经在玻璃幕墙环境里吃过亏。激光打到玻璃上,要么透射过去没回波,要么反射到别处产生虚假点。后来加了反射强度滤波,才把误检降下来。
3.4 相机
相机,信息最丰富,但也是最难伺候的传感器。一张图像里几百万像素,但怎么从中提取有用信息,是个大问题。
相机类型:
- 单目:一个摄像头,没有深度信息。需要靠运动恢复结构(SfM)
- 双目:两个摄像头,通过视差算深度。基线越长,测距越远
- RGB-D:直接输出深度图,但受光照和距离限制
在目标跟踪里,相机主要做两件事:
- 目标检测:用YOLO等算法,从图像里框出目标
- 目标跟踪:用光流或特征匹配,跟踪目标在图像中的运动
我个人的经验是:相机+激光雷达是最佳组合。激光雷达提供精确的距离和几何信息,相机提供丰富的语义信息(颜色、纹理、类别)。两者融合,才能在定位失效时依然稳健地跟踪目标。
我的习惯:在项目中,我会把相机图像投影到激光雷达点云上,给每个点赋予颜色信息。这样既有了3D位置,又有了视觉特征。目标跟踪时,用点云做几何匹配,用图像做重识别——万一跟丢了,还能靠颜色找回来。
3.5 传感器融合策略
单独用哪个传感器都有短板。IMU漂移、轮式打滑、激光雷达受材质影响、相机怕光照变化。所以,融合才是王道。
我常用的融合框架:
1. 高频(100Hz):IMU做姿态预测
2. 中频(20Hz):轮式里程计做位置预测
3. 低频(10Hz):激光雷达/相机做观测更新
当定位失效时,我会切换到相对定位模式:
- 用IMU+轮式里程计做短时航位推算
- 用激光雷达的scan-to-scan匹配做局部约束
- 用相机的视觉里程计做辅助
- 三者通过因子图优化,输出相对位姿
说白了,就是「不求知道自己在哪,但求知道目标在哪」。这个思路,在我做过的多个项目中都验证有效。
这张图展示了我常用的融合架构。注意看,所有传感器数据都汇入融合模块,输出的是相对位姿——不是全局坐标,而是相对于上一时刻的位移和旋转。这样即使全局定位丢了,目标跟踪也不会断。
核心要点:
- IMU提供高频姿态,但会漂移
- 轮式里程计提供短时位置,但会打滑
- 激光雷达提供精确距离,但受材质影响
- 相机提供语义信息,但怕光照变化
- 融合后,取长补短,才能应对定位失效场景
好了,传感器基础就聊到这儿。下一章我们会深入讲IMU的数学模型和标定方法——嗯,那才是真正让人头疼的地方。