环境感知基础:扫地机如何“看见”世界

做扫地机路径规划,第一件事不是写代码,而是搞清楚一个问题:机器人到底怎么感知环境的?

我刚开始做这个方向时,也犯过傻。以为只要给个地图,机器人就能自己跑。结果第一次实测,机器直接撞墙上了。嗯,那时候我才意识到——感知是规划的前提,感知不准,规划全是白搭

这一章,咱们就把扫地机上那些传感器挨个捋一遍。激光雷达、红外、碰撞、悬崖、陀螺仪、里程计,每个我都会讲讲原理,再聊聊实际项目中踩过的坑。

1. 激光雷达:扫地机的“眼睛”

激光雷达,说白了就是发射激光,测反射回来的时间,算出距离。扫地机上最常见的是单线激光雷达,旋转扫描一圈,得到360度的距离数据。

我个人习惯把激光雷达的数据叫做“点云”,虽然单线雷达的点云只有一圈,但足够建图用了。

核心原理:

  • 发射激光脉冲
  • 接收反射信号
  • 根据飞行时间计算距离:d = c * t / 2

我在项目中遇到过一个问题:激光雷达在阳光下会失效。因为太阳光里也有红外成分,会干扰接收器。所以如果你打算做户外扫地机,记得选带滤光片的雷达。

避坑指南:

我曾经以为激光雷达数据是完美的,后来发现玻璃墙、黑色物体、镜面都会导致数据丢失。黑色吸光,玻璃透光,镜面反射到别处去了。做SLAM时,这些“坏点”一定要先过滤掉。

2. 红外传感器:低成本测距方案

红外传感器,原理跟激光雷达有点像,但用的是红外LED,不是激光。成本低,精度也低。

扫地机上通常用红外做短距离避障,比如检测前方10厘米内有没有障碍物。我一般把它当作“保险丝”——激光雷达没检测到的,红外来兜底。

但红外有个毛病:受环境光影响大。阳光直射时,红外信号会被淹没。你想想看,大白天扫地,红外基本等于废了。

注意:

红外传感器不适合做精确测距,只适合做“有/无”检测。我在项目里吃过这个亏,想用红外做精确避障,结果数据跳得跟心电图似的。

3. 碰撞传感器:最后的防线

碰撞传感器,其实就是个机械开关。机器人撞到东西了,开关闭合,告诉主控:“我撞了!”

听起来很原始对吧?但说实话,这是最可靠的传感器。激光雷达可能漏掉细桌腿,红外可能被阳光干扰,但碰撞传感器永远不会骗你。

我习惯在代码里给碰撞传感器最高优先级。一旦触发,立即停车,然后后退转向。为什么?因为撞坏了家具,用户会骂人的。

实际经验:

碰撞传感器的安装位置很重要。我见过一些扫地机,碰撞条太硬,撞到东西也不触发。太软又容易误触。建议用弹性适中的橡胶条,触发力度控制在2-3牛顿。

4. 悬崖传感器:防止“跳楼”

悬崖传感器,其实就是朝下安装的红外或超声波传感器。检测地面是不是突然没了——比如楼梯边缘。

原理很简单:发射信号,看反射回来的强度。地面反射强,悬崖反射弱(因为信号跑远了)。

我在测试时遇到过一件尴尬事:黑色地毯导致悬崖传感器误触发。因为黑色吸光,反射信号弱,机器人以为下面是悬崖,死活不肯上地毯。

解决办法:

可以融合多个传感器的数据。比如悬崖传感器触发时,再查一下激光雷达的数据,如果激光雷达显示前方有地面,那就别停车。说白了,就是别让一个传感器说了算。

5. 陀螺仪与里程计:知道自己在哪

陀螺仪测角速度,里程计测位移。两者结合,就能估算机器人的位姿。

但这里有个大坑:误差会累积。陀螺仪有零偏,里程计有打滑。跑个几分钟,位置估计可能偏到姥姥家去了。

我刚开始做时,以为IMU数据很准。结果有一次让机器人直线前进,它愣是走出了个弧线。查了半天,发现是轮子打滑导致的里程计误差。

核心公式(简化版):

// 里程计推算位置
x += speed * cos(theta) * dt
y += speed * sin(theta) * dt
theta += gyro_z * dt

你想想看,如果陀螺仪有0.1度/秒的零偏,10秒后就偏了1度。看起来不多,但乘以移动距离,位置误差就大了。

重要提醒:

千万别只用里程计做定位。一定要融合激光雷达或视觉数据,用卡尔曼滤波或粒子滤波来修正。我见过有人只用里程计做路径规划,结果机器人越跑越偏,最后撞墙了。

6. 传感器融合:1+1 > 2

单个传感器都有缺陷。激光雷达怕玻璃,红外怕阳光,碰撞传感器只能事后补救,里程计会漂移。

所以,真正的工程方案是融合

我个人习惯的做法是:

  • 激光雷达做主传感器,建图和定位
  • 红外做短距离补充,检测低矮障碍物
  • 碰撞传感器做最后一道防线
  • 悬崖传感器单独处理,优先级最高
  • 陀螺仪+里程计做运动估计,但定期用激光雷达修正

说白了,就是让每个传感器干自己最擅长的事。别指望一个传感器搞定所有场景。

一个小技巧:

我在代码里给每个传感器分配一个“置信度”。激光雷达置信度0.9,红外0.6,碰撞传感器触发时置信度直接拉满。融合时按置信度加权,效果比简单平均好得多。

总结一下

这一章咱们聊了扫地机上常见的传感器。每个都有用,每个也都有坑。做路径规划之前,先把这些传感器的特性摸透,不然代码写得再漂亮,跑起来也是歪的。

下一章,咱们会讲地图表示方法。有了传感器数据,怎么把它变成机器人能理解的地图?到时候见。


公众号:蓝海资料掘金营,微信deep3321