4. 核心传感器(三):超声波传感器与红外传感器的测距原理、优缺点对比

聊完了激光雷达和IMU,咱们来看看另外两个在扫地机器人上非常常见的“小兄弟”——超声波传感器和红外传感器。说实话,这两个传感器在精度上没法跟激光雷达比,但为什么几乎所有扫地机上都有它们的身影?

原因很简单:便宜、皮实、能补位。激光雷达再厉害,碰到全黑镜面或者透明玻璃也得抓瞎。这时候,超声波和红外就能顶上。我在项目里见过太多次,单靠激光雷达撞上黑色踢脚线直接“失明”的情况。嗯,咱们今天就好好掰扯掰扯这两个传感器。

4.1 超声波传感器:靠“回声”吃饭的老实人

超声波的工作原理,说白了就是蝙蝠的回声定位。传感器发射一束人耳听不到的高频声波(通常40kHz左右),然后等着听回波。声波碰到物体反射回来,根据发射到接收的时间差,就能算出距离。

公式很简单:

距离 = (声速 × 时间差) / 2

除以2是因为声波走了个来回。声速在空气中大约是340m/s,但会随温度变化。我建议你在做高精度应用时,加个温度补偿。我在一个项目中没做补偿,夏天和冬天的测距差了将近3厘米,这在小空间避障里是致命的。

超声波的优势很明显:

  • 不怕光学干扰:透明玻璃、黑色物体、强光直射,对它统统无效。它靠声波,不是光。
  • 测距范围适中:一般家用超声波模块,有效范围在2cm到4米左右,够用。
  • 成本极低:一个HC-SR04模块几块钱,坏了不心疼。

但缺点也不少:

  • 精度差:受声波波束角影响,一般精度在厘米级,没法跟激光雷达的毫米级比。
  • 有盲区:太近的物体(小于2cm)测不到,因为发射的余震还没消失。
  • 波束角大:典型的超声波传感器波束角在30°到60°之间。你想想看,它告诉你前方30cm有障碍物,但到底是正前方还是偏左30°?你根本不知道。这就是所谓的“角分辨率低”。
  • 容易串扰:如果扫地机上装了多个超声波,它们同时发射会互相干扰。我曾经遇到过两台扫地机在同一个房间工作,结果互相“听”对方的回波,数据全乱了。

核心结论:超声波适合做“有无检测”和“粗略测距”,不适合做精细建图。在扫地机上,它最常用的场景是检测透明玻璃门和黑色踢脚线——这些是激光雷达的噩梦。

4.2 红外传感器:靠“反射光”吃饭的近视眼

红外传感器用的是三角测距原理。传感器发射一束红外光,照射到物体上,反射光被一个位置敏感探测器(PSD)接收。物体距离不同,反射光落在PSD上的位置也不同。通过几何关系,就能算出距离。

你可能会问:这和激光雷达的TOF原理有什么区别?区别大了。红外三角测距的有效距离通常只有10cm到80cm,精度也一般。而激光雷达TOF动辄测几十米。说白了,红外传感器就是个“近视眼”,但胜在便宜。

红外传感器的优点:

  • 响应速度快:测量一次只需要几毫秒,比超声波快得多。
  • 体积小:一个红外收发管加个透镜,比拇指盖还小,非常适合集成。
  • 波束角窄:一般只有5°到15°,方向性比超声波好很多。

缺点也很要命:

  • 极度依赖物体表面特性:白色物体反射率高,黑色物体吸收率高。同一个距离,测白色墙和黑色墙,结果能差好几倍。我在项目中遇到过,扫地机对着黑色踢脚线,红外传感器直接报“无障碍物”,然后一头撞上去。
  • 受环境光干扰严重:太阳光里含有大量红外成分,在强光下,红外传感器基本失效。
  • 测距范围短:超过80cm基本就不靠谱了。

避坑指南:我曾经在一个项目中,把红外传感器装在扫地机正前方,用来检测低矮障碍物。结果发现,在阳光直射的窗边,传感器完全失灵。后来我加了个遮光罩,并在软件里做了环境光自适应阈值,才算勉强解决。如果你要用红外,一定要考虑环境光的影响。

4.3 超声波 vs 红外:一张表说清楚

为了方便你对比,我整理了一个表格。在实际选型时,你可以直接参考:

对比项 超声波传感器 红外传感器
工作原理 声波反射(TOF) 光三角测距
典型测距范围 2cm ~ 4m 10cm ~ 80cm
精度 厘米级(±1~3cm) 厘米级(±1~5cm,依赖表面)
波束角 30° ~ 60°(宽) 5° ~ 15°(窄)
抗光学干扰 强(不怕光、不怕黑) 弱(怕强光、怕黑色)
抗声学干扰 弱(怕串扰、怕噪声) 强(不受声音影响)
响应速度 慢(20~50ms) 快(1~5ms)
成本 极低
典型应用场景 检测玻璃、黑色物体、悬崖检测 近距离避障、沿墙检测

4.4 实战中的融合策略

在真正的扫地机器人上,你不会只用一种传感器。我个人的习惯是:用激光雷达做全局建图和定位,用超声波和红外做局部补盲

具体来说:

  • 超声波:装在机器人的前方和侧方,专门用来检测激光雷达看不到的透明障碍物。比如玻璃门、落地窗、黑色踢脚线。当激光雷达在某个方向上报“无障碍物”,但超声波却报“有障碍物”时,我会优先相信超声波。
  • 红外:装在机器人的底部,做悬崖检测(防止从楼梯掉下去)。或者装在正前方,做近距离的“防撞”检测。当机器人距离障碍物小于10cm时,激光雷达可能已经进入盲区,这时候红外就是最后一道防线。

一个小技巧:如果你用超声波做悬崖检测,记得考虑地面材质。地毯会吸收声波,导致测距不准。我建议在软件里加一个“地面类型识别”逻辑,根据地面的反射强度动态调整阈值。

好了,关于超声波和红外传感器,咱们就聊这么多。下一章,我会带你看看如何把这些传感器数据融合到一起,做一个真正能“看懂”世界的扫地机器人。到时候,你会发现,1+1真的可以大于2。