超声波与红外传感器——近距离避障的低成本方案

发布时间:2026/8/16 21:43:47
超声波与红外传感器——近距离避障的低成本方案 上篇讲了GPS/RTK定位原理从距离交会到载波相位模糊度解算再到NMEA协议解析和ROS2集成。今天讲两种最便宜的近距离传感器——超声波和红外它们虽然精度不高但在机器人避障、悬崖检测、液位测量等场景中不可替代。面试时候被问超声波和红外传感器有什么区别很多人会说一个用声波一个用光。但面试官想听的是更工程化的内容超声波的盲区怎么解决红外的距离-电压曲线怎么标定两种传感器怎么互补在ROS2中怎么集成多传感器之间的串扰怎么处理超声波传感器原理超声波传感器通过压电换能器发射和接收超声波脉冲。发射时压电陶瓷片在电信号激励下振动产生频率通常在40kHz左右的超声波。超声波遇到障碍物后反射回来接收器检测到回波通过测量发射到接收的时间差计算距离距离 声速 × 时间 / 2。声速和温度有关v 331.4 0.6 × TT为摄氏温度。如果不做温度补偿夏天35°C和冬天0°C的声速差了21m/s距离误差会达到6%左右。所以工业级超声波传感器都会内置温度传感器做补偿。import numpy as np class UltrasonicSensor: 超声波传感器模型 def __init__(self, min_range0.02, max_range4.0, beam_angle15.0, temperature25.0): self.min_range min_range # 最小测量距离m self.max_range max_range # 最大测量距离m self.beam_angle beam_angle # 波束角度 // ... (代码省略) return None # 表面太倾斜无法检测 return max(valid) - min(valid) # 距离差异越大表面越倾斜超声波传感器有几个显著的特点。优点不受光照条件影响黑暗中也能工作能检测透明物体玻璃、薄膜价格极低几块钱一个。缺点波束角大15-30度空间分辨率低对吸声材料泡沫、布料检测困难存在盲区通常2-5cm多传感器之间容易串扰。盲区是超声波传感器最大的限制之一。超声波传感器在发射脉冲后需要一段时间才能切换到接收模式余振时间这段时间内无法接收回波形成了盲区。普通超声波传感器的盲区在2-5cm特殊设计的窄盲区传感器可以做到1cm以内。实际安装超声波传感器有几个注意事项。第一传感器前方不能有遮挡物——安装支架、线缆、机器人外壳任何在波束锥角内的物体都会产生虚假回波。波束锥角通常是标称波束角的1.5-2倍标称15度的传感器实际有效波束可能到30度。安装前一定要看传感器的数据手册确认波束图的形状。第二多超声波传感器的串扰问题。如果两个超声波传感器同时工作A发射的脉冲可能被B的接收器检测到经过物体反射后导致B的读数异常。解决方法是分时复用——让传感器轮流发射每次只有一个传感器在工作。比如4个超声波传感器每个发射周期10ms总周期就是40ms25Hz。class UltrasonicMultiplexer: 超声波传感器分时复用控制器 def __init__(self, num_sensors, cycle_time_ms10): self.num_sensors num_sensors self.cycle_time cycle_time_ms / 1000.0 self.current_sensor 0 self.last_switch_time 0.0 def get_active_sensor(self, current_time): // ... (代码省略) self.last_switch_time current_time return self.current_sensor第三超声波传感器对表面材质很敏感。光滑坚硬的表面金属、玻璃、塑料反射效果好。柔软多孔的表面泡沫、布料、地毯会吸收超声波导致检测距离大幅缩短甚至检测不到。在设计避障系统时不能假设所有障碍物都能被超声波检测到——这就是为什么还需要红外或者激光雷达作为补充。超声波和红外的融合策略实际避障系统中超声波和红外传感器通常配合使用取长补短。超声波擅长检测中距离0.1-3m的障碍物不受物体颜色影响但波束角大、空间分辨率低。红外擅长检测近距离0.02-0.8m的障碍物空间分辨率高但受物体颜色和光照影响。两者融合时可以构建一个分层的距离检测模型红外负责近距离精确测距超声波负责中距离预警激光雷达负责远距离建图。数据融合的方法可以很简单取两种传感器读数的最小值作为障碍物距离估计。也可以更复杂用贝叶斯估计融合两种传感器的概率分布。对于避障这种安全相关的功能保守策略更合适——宁可误报虚警也不要漏报。面试中怎么聊面试官问超声波和红外传感器按这个顺序回答先说超声波原理压电换能器ToF和特点盲区、波束角、温度补偿再说红外原理三角测距/反射强度和特点受颜色影响、环境光干扰然后说两者的互补关系和融合策略最后说ROS2集成和串扰处理。如果面试官追问为什么不用激光雷达代替超声波你可以说成本。一个激光雷达几百到几千块一个超声波传感器几块钱。在只需要检测前方有没有障碍物的简单场景中超声波完全够用。另外超声波能检测透明物体玻璃门激光雷达对透明物体的检测不稳定激光可能穿透或者被折射。但如果是需要精确建图的场景激光雷达的优势就体现出来了。如果面试官追问悬崖检测用什么传感器你可以说红外对射传感器发射器和接收器分开安装。朝地面发射红外光如果地面存在反射光被接收器检测到。如果接收不到反射光说明前方是悬崖。这种方案简单可靠扫地机器人都在用。超声波不适合做悬崖检测因为超声波的波束角太大朝地面发射时反射信号太分散。如果面试官追问扫地机器人的传感器方案你可以展开说扫地机器人是近距离传感器应用的经典案例。它通常包含底部3-4个悬崖检测红外传感器防止跌落楼梯前端6-8个超声波或红外传感器检测墙壁和家具顶部一个激光雷达SLAM建图和导航侧面一两个接触式 bumper 传感器最后的物理保护。这些传感器形成一个完整的感知层次bumper是最后一道防线距离0红外/超声波负责近距离避障0.02-1m激光雷达负责中远距离建图和定位0.1-10m。这种分层设计在面试中说出来会让面试官觉得你对系统架构有整体理解。如果面试官追问红外传感器怎么标定你可以说三角测距型红外传感器的标定很简单。在已知距离比如20cm、40cm、60cm处测量传感器的输出电压然后用最小二乘法拟合距离-电压曲线通常是V a/d b的形式。标定完成后在几个验证距离上测试误差应该在标称精度以内。需要注意的是标定要在典型工作环境下进行——如果机器人会在不同光照条件下工作标定数据应该在室内和室外分别采集取最坏情况的参数。补充一个超声波传感器在实际项目中的踩坑经验。当时我们在仓库里部署AGV用了8个超声波传感器做近距离避障。测试时发现一个奇怪的现象有时候明明前方没有障碍物传感器却报告有物体在0.3米处。排查后发现是超声波的串扰——对面另一台AGV的超声波传感器在同一时间发射两台AGV的超声波信号互相干扰。解决办法是错开各传感器的发射时间给每个传感器分配不同的时隙比如8个传感器分成4组每组间隔5毫秒轮流发射。改完之后误报就消失了。这个经验说明多超声波系统的时序设计很重要不能简单地同时触发所有传感器。下一篇讲多传感器时间同步——硬件触发/PTP/软件时间戳的工程实践。前面讲了这么多传感器它们的数据怎么在时间上对齐是多传感器融合的关键前提。如果这篇文章对你有帮助欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。「机器人软件开发面试·从入门到精通」连载系列上一篇第162篇 GPS/RTK定位原理——室外机器人的定位方案 下一篇预告第164篇 多传感器时间同步——硬件触发/PTP/软件时间戳的工程实践有任何问题欢迎评论区留言我会尽量回复。