第二章:传感器选型与融合——复杂地形下的“感官”配置
做机器人导航,说白了就是让机器“看懂”路。但复杂地形下,单靠一种传感器,就像人闭着一只眼走路,迟早要摔跟头。这一章,我结合自己踩过的坑,聊聊激光雷达、深度相机、IMU、GPS这四类传感器在复杂地形下的真实表现,以及怎么把它们“拧成一股绳”。
2.1 激光雷达:精度之王,但怕“脏”
激光雷达,我个人最信赖的传感器。在结构化环境里,它的测距精度能到厘米级,建图效果非常漂亮。但复杂地形下,问题就来了。
优点:
- 测距远,精度高(±2cm以内)
- 不受光照影响,白天黑夜都能用
- 直接输出点云,便于建图和定位
缺点:
- 怕雨雪雾——激光会被水滴反射,点云里全是噪点
- 怕灰尘——矿区、土路上,扬尘会让雷达“致盲”
- 怕反光——玻璃、水面会直接打飞激光
- 贵——好的机械式雷达动辄几万
我的经验: 在矿区项目里,我遇到过扬尘导致雷达完全失效的情况。后来加了IMU做运动补偿,再配合算法滤除噪点,才算勉强能用。记住,激光雷达在干净环境是王者,在恶劣环境就是“瞎子”。
2.2 深度相机:便宜但“挑食”
深度相机(比如Intel RealSense、Kinect)这几年很火。便宜、轻便、还能输出RGB图像。但说实话,在复杂地形下,它有点“娇气”。
优点:
- 成本低(几百到几千)
- 同时提供深度和彩色图像
- 适合近距离(5米内)的精细感知
缺点:
- 强光下直接“罢工”——户外大太阳底下,红外结构光根本看不清
- 纹理依赖——面对白墙、光滑地面,深度数据全是洞
- 测距短——超过5米,误差就大得没法用
- 帧率低——快速运动时容易丢帧
避坑指南: 我曾经在户外测试时,把深度相机装在车顶,结果正午阳光下,深度图一片漆黑。后来才明白,这类相机本质上是为室内设计的。如果你要做户外复杂地形,深度相机只能当辅助,别指望它做主传感器。
2.3 IMU:短时准,长时飘
IMU(惯性测量单元)是个“老实人”——它只告诉你加速度和角速度,不依赖任何外部信号。但老实人也有毛病:积分误差会累积。
优点:
- 完全自主,不受外界干扰
- 更新频率高(200Hz以上)
- 短时间内的相对位姿非常准
缺点:
- 长时间积分后,位置漂移严重
- 对温度敏感,零偏会变化
- 低端IMU噪声大,高端IMU价格高
关键认知: IMU不能单独用来定位,但它是融合系统里的“粘合剂”。在激光雷达或相机丢数据的瞬间,IMU能顶上去,保证位姿估计不中断。我习惯把IMU当作“短跑冠军”——爆发力强,但跑不了马拉松。
2.4 GPS:室外神器,室内废物
GPS(全球定位系统)在开阔地带非常好用,但复杂地形下,它的局限性很明显。
优点:
- 提供绝对位置,无累积误差
- 覆盖范围广,全球可用
- RTK模式下精度可达厘米级
缺点:
- 室内、隧道、峡谷里完全失效
- 高楼遮挡下多路径效应严重
- 更新频率低(10Hz左右)
- RTK需要基站,部署麻烦
我的习惯: 在室外复杂地形(比如山区、城市峡谷),我会把GPS和IMU做紧耦合。GPS提供绝对位置约束,IMU填补GPS丢星时的空白。这样即使GPS信号断断续续,定位也不会崩。
2.5 数据融合策略:1+1>2
单一传感器都有短板,融合才是出路。我常用的融合策略分三种:
2.5.1 松耦合
各传感器独立处理数据,然后融合结果。简单、计算量小,但精度一般。
// 松耦合伪代码
while(true):
lidar_pose = lidar_localization()
gps_pose = gps_localization()
imu_pose = imu_integration()
fused_pose = kalman_filter(lidar_pose, gps_pose, imu_pose)
2.5.2 紧耦合
在传感器原始数据层面融合。精度高,但计算量大。我推荐在复杂地形下使用。
// 紧耦合(以激光+IMU为例)
while(true):
lidar_points = get_lidar_scan()
imu_data = get_imu_measurement()
// 用IMU数据去畸变激光点云
corrected_points = undistort(lidar_points, imu_data)
// 联合优化位姿
pose = joint_optimization(corrected_points, imu_data)
2.5.3 深度耦合
把传感器模型直接嵌入到状态估计器中。比如视觉-惯性SLAM(VINS),就是深度耦合的典型。
我的建议: 如果你做的是轮式机器人,松耦合就够了。但如果是四足或无人机,在复杂地形下必须上紧耦合。我踩过的坑是:在颠簸地形上用松耦合,结果IMU和激光雷达的位姿对不上,地图直接飘了。
2.6 实战组合推荐
| 场景 | 推荐传感器组合 | 融合策略 | 说明 |
|---|---|---|---|
| 室内平坦地面 | 激光雷达 + IMU | 松耦合 | 激光建图,IMU补帧 |
| 室外开阔地带 | GPS + IMU | 紧耦合 | RTK GPS + 高精度IMU |
| 复杂地形(山区/废墟) | 激光雷达 + 深度相机 + IMU + GPS | 紧耦合 | 多传感器冗余,互相弥补 |
| 隧道/室内长走廊 | 激光雷达 + IMU | 紧耦合 | GPS失效,全靠激光+IMU |
重要提醒: 传感器融合不是越多越好。每增加一个传感器,就多一个故障点。我见过有人堆了6个传感器,结果光标定就花了两个月。记住,融合的目的是“互补”,不是“堆料”。
嗯,传感器选型这块,说到底就是权衡。没有完美的传感器,只有最适合你场景的组合。我个人习惯是先确定场景的“最恶劣条件”,然后选能扛住那个条件的传感器,再用其他传感器补短板。这样设计出来的系统,才真正可靠。
公众号:蓝海资料掘金营,微信deep3321