
上篇講了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/軟件時間戳的工程實踐有任何問題歡迎評論區留言我會盡量回復。