
上篇講了GPS/RTK定位原理從距離交會(huì)到載波相位模糊度解算再到NMEA協(xié)議解析和ROS2集成。今天講兩種最便宜的近距離傳感器——超聲波和紅外它們雖然精度不高但在機(jī)器人避障、懸崖檢測(cè)、液位測(cè)量等場(chǎng)景中不可替代。面試時(shí)候被問超聲波和紅外傳感器有什么區(qū)別很多人會(huì)說一個(gè)用聲波一個(gè)用光。但面試官想聽的是更工程化的內(nèi)容超聲波的盲區(qū)怎么解決紅外的距離-電壓曲線怎么標(biāo)定兩種傳感器怎么互補(bǔ)在ROS2中怎么集成多傳感器之間的串?dāng)_怎么處理超聲波傳感器原理超聲波傳感器通過壓電換能器發(fā)射和接收超聲波脈沖。發(fā)射時(shí)壓電陶瓷片在電信號(hào)激勵(lì)下振動(dòng)產(chǎn)生頻率通常在40kHz左右的超聲波。超聲波遇到障礙物后反射回來接收器檢測(cè)到回波通過測(cè)量發(fā)射到接收的時(shí)間差計(jì)算距離距離 聲速 × 時(shí)間 / 2。聲速和溫度有關(guān)v 331.4 0.6 × TT為攝氏溫度。如果不做溫度補(bǔ)償夏天35°C和冬天0°C的聲速差了21m/s距離誤差會(huì)達(dá)到6%左右。所以工業(yè)級(jí)超聲波傳感器都會(huì)內(nèi)置溫度傳感器做補(bǔ)償。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 # 最小測(cè)量距離m self.max_range max_range # 最大測(cè)量距離m self.beam_angle beam_angle # 波束角度 // ... (代碼省略) return None # 表面太傾斜無法檢測(cè) return max(valid) - min(valid) # 距離差異越大表面越傾斜超聲波傳感器有幾個(gè)顯著的特點(diǎn)。優(yōu)點(diǎn)不受光照條件影響黑暗中也能工作能檢測(cè)透明物體玻璃、薄膜價(jià)格極低幾塊錢一個(gè)。缺點(diǎn)波束角大15-30度空間分辨率低對(duì)吸聲材料泡沫、布料檢測(cè)困難存在盲區(qū)通常2-5cm多傳感器之間容易串?dāng)_。盲區(qū)是超聲波傳感器最大的限制之一。超聲波傳感器在發(fā)射脈沖后需要一段時(shí)間才能切換到接收模式余振時(shí)間這段時(shí)間內(nèi)無法接收回波形成了盲區(qū)。普通超聲波傳感器的盲區(qū)在2-5cm特殊設(shè)計(jì)的窄盲區(qū)傳感器可以做到1cm以內(nèi)。實(shí)際安裝超聲波傳感器有幾個(gè)注意事項(xiàng)。第一傳感器前方不能有遮擋物——安裝支架、線纜、機(jī)器人外殼任何在波束錐角內(nèi)的物體都會(huì)產(chǎn)生虛假回波。波束錐角通常是標(biāo)稱波束角的1.5-2倍標(biāo)稱15度的傳感器實(shí)際有效波束可能到30度。安裝前一定要看傳感器的數(shù)據(jù)手冊(cè)確認(rèn)波束圖的形狀。第二多超聲波傳感器的串?dāng)_問題。如果兩個(gè)超聲波傳感器同時(shí)工作A發(fā)射的脈沖可能被B的接收器檢測(cè)到經(jīng)過物體反射后導(dǎo)致B的讀數(shù)異常。解決方法是分時(shí)復(fù)用——讓傳感器輪流發(fā)射每次只有一個(gè)傳感器在工作。比如4個(gè)超聲波傳感器每個(gè)發(fā)射周期10ms總周期就是40ms25Hz。class UltrasonicMultiplexer: 超聲波傳感器分時(shí)復(fù)用控制器 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第三超聲波傳感器對(duì)表面材質(zhì)很敏感。光滑堅(jiān)硬的表面金屬、玻璃、塑料反射效果好。柔軟多孔的表面泡沫、布料、地毯會(huì)吸收超聲波導(dǎo)致檢測(cè)距離大幅縮短甚至檢測(cè)不到。在設(shè)計(jì)避障系統(tǒng)時(shí)不能假設(shè)所有障礙物都能被超聲波檢測(cè)到——這就是為什么還需要紅外或者激光雷達(dá)作為補(bǔ)充。超聲波和紅外的融合策略實(shí)際避障系統(tǒng)中超聲波和紅外傳感器通常配合使用取長(zhǎng)補(bǔ)短。超聲波擅長(zhǎng)檢測(cè)中距離0.1-3m的障礙物不受物體顏色影響但波束角大、空間分辨率低。紅外擅長(zhǎng)檢測(cè)近距離0.02-0.8m的障礙物空間分辨率高但受物體顏色和光照影響。兩者融合時(shí)可以構(gòu)建一個(gè)分層的距離檢測(cè)模型紅外負(fù)責(zé)近距離精確測(cè)距超聲波負(fù)責(zé)中距離預(yù)警激光雷達(dá)負(fù)責(zé)遠(yuǎn)距離建圖。數(shù)據(jù)融合的方法可以很簡(jiǎn)單取兩種傳感器讀數(shù)的最小值作為障礙物距離估計(jì)。也可以更復(fù)雜用貝葉斯估計(jì)融合兩種傳感器的概率分布。對(duì)于避障這種安全相關(guān)的功能保守策略更合適——寧可誤報(bào)虛警也不要漏報(bào)。面試中怎么聊面試官問超聲波和紅外傳感器按這個(gè)順序回答先說超聲波原理壓電換能器ToF和特點(diǎn)盲區(qū)、波束角、溫度補(bǔ)償再說紅外原理三角測(cè)距/反射強(qiáng)度和特點(diǎn)受顏色影響、環(huán)境光干擾然后說兩者的互補(bǔ)關(guān)系和融合策略最后說ROS2集成和串?dāng)_處理。如果面試官追問為什么不用激光雷達(dá)代替超聲波你可以說成本。一個(gè)激光雷達(dá)幾百到幾千塊一個(gè)超聲波傳感器幾塊錢。在只需要檢測(cè)前方有沒有障礙物的簡(jiǎn)單場(chǎng)景中超聲波完全夠用。另外超聲波能檢測(cè)透明物體玻璃門激光雷達(dá)對(duì)透明物體的檢測(cè)不穩(wěn)定激光可能穿透或者被折射。但如果是需要精確建圖的場(chǎng)景激光雷達(dá)的優(yōu)勢(shì)就體現(xiàn)出來了。如果面試官追問懸崖檢測(cè)用什么傳感器你可以說紅外對(duì)射傳感器發(fā)射器和接收器分開安裝。朝地面發(fā)射紅外光如果地面存在反射光被接收器檢測(cè)到。如果接收不到反射光說明前方是懸崖。這種方案簡(jiǎn)單可靠掃地機(jī)器人都在用。超聲波不適合做懸崖檢測(cè)因?yàn)槌暡ǖ牟ㄊ翘蟪孛姘l(fā)射時(shí)反射信號(hào)太分散。如果面試官追問掃地機(jī)器人的傳感器方案你可以展開說掃地機(jī)器人是近距離傳感器應(yīng)用的經(jīng)典案例。它通常包含底部3-4個(gè)懸崖檢測(cè)紅外傳感器防止跌落樓梯前端6-8個(gè)超聲波或紅外傳感器檢測(cè)墻壁和家具頂部一個(gè)激光雷達(dá)SLAM建圖和導(dǎo)航側(cè)面一兩個(gè)接觸式 bumper 傳感器最后的物理保護(hù)。這些傳感器形成一個(gè)完整的感知層次bumper是最后一道防線距離0紅外/超聲波負(fù)責(zé)近距離避障0.02-1m激光雷達(dá)負(fù)責(zé)中遠(yuǎn)距離建圖和定位0.1-10m。這種分層設(shè)計(jì)在面試中說出來會(huì)讓面試官覺得你對(duì)系統(tǒng)架構(gòu)有整體理解。如果面試官追問紅外傳感器怎么標(biāo)定你可以說三角測(cè)距型紅外傳感器的標(biāo)定很簡(jiǎn)單。在已知距離比如20cm、40cm、60cm處測(cè)量傳感器的輸出電壓然后用最小二乘法擬合距離-電壓曲線通常是V a/d b的形式。標(biāo)定完成后在幾個(gè)驗(yàn)證距離上測(cè)試誤差應(yīng)該在標(biāo)稱精度以內(nèi)。需要注意的是標(biāo)定要在典型工作環(huán)境下進(jìn)行——如果機(jī)器人會(huì)在不同光照條件下工作標(biāo)定數(shù)據(jù)應(yīng)該在室內(nèi)和室外分別采集取最壞情況的參數(shù)。補(bǔ)充一個(gè)超聲波傳感器在實(shí)際項(xiàng)目中的踩坑經(jīng)驗(yàn)。當(dāng)時(shí)我們?cè)趥}(cāng)庫(kù)里部署AGV用了8個(gè)超聲波傳感器做近距離避障。測(cè)試時(shí)發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象有時(shí)候明明前方?jīng)]有障礙物傳感器卻報(bào)告有物體在0.3米處。排查后發(fā)現(xiàn)是超聲波的串?dāng)_——對(duì)面另一臺(tái)AGV的超聲波傳感器在同一時(shí)間發(fā)射兩臺(tái)AGV的超聲波信號(hào)互相干擾。解決辦法是錯(cuò)開各傳感器的發(fā)射時(shí)間給每個(gè)傳感器分配不同的時(shí)隙比如8個(gè)傳感器分成4組每組間隔5毫秒輪流發(fā)射。改完之后誤報(bào)就消失了。這個(gè)經(jīng)驗(yàn)說明多超聲波系統(tǒng)的時(shí)序設(shè)計(jì)很重要不能簡(jiǎn)單地同時(shí)觸發(fā)所有傳感器。下一篇講多傳感器時(shí)間同步——硬件觸發(fā)/PTP/軟件時(shí)間戳的工程實(shí)踐。前面講了這么多傳感器它們的數(shù)據(jù)怎么在時(shí)間上對(duì)齊是多傳感器融合的關(guān)鍵前提。如果這篇文章對(duì)你有幫助歡迎點(diǎn)贊、在看、轉(zhuǎn)發(fā)三連。 你的支持是我持續(xù)更新的最大動(dòng)力?!笝C(jī)器人軟件開發(fā)面試·從入門到精通」連載系列上一篇第162篇 GPS/RTK定位原理——室外機(jī)器人的定位方案 下一篇預(yù)告第164篇 多傳感器時(shí)間同步——硬件觸發(fā)/PTP/軟件時(shí)間戳的工程實(shí)踐有任何問題歡迎評(píng)論區(qū)留言我會(huì)盡量回復(fù)。