一、传感器基础:SLAM的“眼睛”与“耳朵”

做SLAM这么多年,我越来越觉得,传感器就是机器人的“感官”。没有好的感官,再牛的算法也白搭。今天咱们就来聊聊这四种最核心的传感器:激光雷达、IMU、轮式里程计和相机。

说白了,这四种传感器各有各的脾气。你得摸透它们的性子,才能让它们好好配合。

1.1 激光雷达:测距的“硬汉”

激光雷达的工作原理,其实没那么神秘。就是发射一束激光,打到物体上反射回来,根据时间差算距离。嗯,就这么简单。

核心原理:TOF(飞行时间法)

激光发射→物体反射→接收器捕获。光速是恒定的,所以时间差直接换算成距离。

关键公式:

距离 = (光速 × 飞行时间) / 2

除以2是因为光走了个来回。

数据特性:

  • 稀疏性:16线激光雷达一帧也就几万个点,跟相机比差远了
  • 精度高:毫米级,我见过最好的能做到±2cm
  • 不受光照影响:黑夜里照样干活,这点比相机强太多
  • 怕反射:玻璃、镜面、水面,这些是激光雷达的“克星”

我的经验:做室内导航时,我习惯把激光雷达装在机器人前方30cm高处。太低容易被地面杂物干扰,太高又测不到桌腿。这个高度是我试了三次才定下来的。

避坑指南:我曾经在玻璃幕墙的大厅里做测试,激光雷达直接“瞎”了。后来加了反光条才搞定。记住,透明物体是激光雷达的天敌。

1.2 IMU:惯性测量单元

IMU这东西,说白了就是个“感觉器官”。它感受加速度和角速度,但不直接告诉你位置。

核心组成:

  • 加速度计:测三轴加速度
  • 陀螺仪:测三轴角速度
  • 磁力计(可选):测方向

数据特性:

参数 典型值 说明
零偏稳定性 10°/h(消费级) 静止时陀螺仪输出不归零
噪声密度 0.01 m/s²/√Hz 加速度计白噪声
更新频率 100-1000 Hz 比激光雷达快得多

核心问题:IMU有累积误差。你想想看,加速度积分一次得速度,再积分得位置。每次积分都带误差,时间一长,位置就飘到天边去了。

我的用法:IMU我一般只用来做短时间内的姿态估计,或者跟其他传感器做融合。单独用IMU做定位?那是在给自己挖坑。

1.3 轮式里程计

轮式里程计,说白了就是“数轮子转了多少圈”。每个轮子装个编码器,转一圈发N个脉冲。

工作原理:

位移 = 轮子周长 × 脉冲数 / 每圈脉冲数

数据特性:

  • 短距离准:几米内误差很小
  • 长距离飘:打滑、轮胎磨损都会引入误差
  • 更新快:通常100Hz以上
  • 成本低:一个编码器几十块钱

避坑指南:我曾经在瓷砖地面上做测试,机器人一转弯就打滑,里程计数据直接废了。后来加了IMU做辅助,才把这个问题解决。记住,轮式里程计最怕打滑。

1.4 相机模型与图像数据

相机嘛,大家都熟悉。但做SLAM用的相机,跟手机拍照不太一样。

针孔相机模型:

这是最基础的模型。说白了就是小孔成像原理。

// 相机投影公式
u = fx * X/Z + cx
v = fy * Y/Z + cy

// 其中:
// (X,Y,Z) 是三维空间点
// (u,v) 是图像像素坐标
// fx,fy 是焦距
// cx,cy 是光心坐标

图像数据特性:

  • 信息丰富:一张图几十万个像素,每个像素有RGB值
  • 受光照影响大:太亮过曝,太暗欠曝
  • 有畸变:镜头边缘的物体变形
  • 帧率有限:通常30fps,运动快了会模糊

我的习惯:做视觉SLAM时,我一般先用标定板把相机畸变参数算出来。不标定?那你重建出来的地图都是弯的。

知识体系总览

这四种传感器各有千秋,我画了张图帮你理清关系:

SLAM传感器知识体系 激光雷达 IMU 轮式里程计 相机 高精度测距 不受光照影响 高频更新 有累积误差 短距离准 怕打滑 信息丰富 受光照影响大 多传感器融合(SLAM核心) 高精度地图 + 稳定定位

你看,没有哪个传感器是完美的。激光雷达精度高但稀疏,IMU快但会飘,轮式里程计便宜但怕打滑,相机信息丰富但怕光照变化。做SLAM的核心,就是让它们取长补短。

总结一下:

  • 激光雷达:建图的“主力军”
  • IMU:短时间内的“救火队员”
  • 轮式里程计:低成本下的“辅助选手”
  • 相机:视觉SLAM的“眼睛”

记住,没有最好的传感器,只有最合适的组合。

可可精品资料库