JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

清理與融合訊號:取樣、濾波與融合

從抖動的數字流到一個可信的估計:多久取樣一次、如何平滑,以及如何把多個感測器合併成一個答案。

多久看一次:取樣與奈奎斯特法則

機器人感測器並不會給你一條平滑的曲線,而是每隔一段時間給你一張快照。把連續的物理量變成一串等間隔的數字,這個過程叫作取樣,而取樣率就是你每秒抓取多少張快照,單位是赫茲(Hz)。輪式編碼器可能每秒被讀取一千次,而GNSS接收機可能每秒只報告十次。選擇這個速率,是任何感測系統中最早要做的實際決定之一。

如果取樣太慢,你就會錯過那些快速的擺動,而它們會偽裝成緩慢的擺動重新出現——一個從來不曾真正存在的假訊號。這種視覺騙局叫作混疊。防止它的法則就是奈奎斯特準則:要誠實地捕捉一個訊號,你的取樣速度至少要達到訊號中最快變化的兩倍。想捕捉每秒擺動五十次的振動?那就用每秒一百次以上的速度取樣——而在實際中,還要遠高於這個數。

所以速率並不是隨便選的。取樣太慢,會帶來混疊,以及一個反應遲鈍的機器人;取樣太快,則浪費算力、佔滿記憶體,還會引入超出你所能利用的電氣雜訊。誠實的做法是:先弄清楚你真正關心的最快運動,再從容地越過它之上的奈奎斯特下限。

撫平抖動:低通濾波器

即便取樣正確,每一次讀數也都帶著感測器雜訊——疊加在真實值之上的微小隨機抖動。把一個靜止的加速度計畫出來,那條線是毛糙的,而非平直的。經典的解藥是低通濾波:一套配方,讓緩慢的、真實的運動通過,同時擋住快速的、隨機的毛刺。這個名字說得很直白——低頻通過,高頻被壓低。

最簡單的版本,就是你在精神上早已熟悉的滑動平均:與其只信任最新的那個數字,不如把它與不遠的過去溫和地融合。一種常見的單行寫法會保留一個平滑值,並讓它朝著每個新讀數輕輕偏移一點。這個偏移越小,輸出就越平靜——也就越固執地無視雜訊。

# Exponential low-pass filter, one line of state
# alpha in (0,1): small alpha = smoother but laggier
smoothed = alpha * new_reading + (1 - alpha) * smoothed
一個指數低通濾波器:每個輸出大部分來自舊的平滑值,再加上一小口最新的讀數。

兩個弱答案,一個強答案:感測器融合

濾波清理的是一條資料流。但沒有哪個單獨的感測器樣樣都好,更深的訣竅在於把好幾個組合起來。這就是感測器融合:把互補感測器的讀數合併起來,讓每一個去覆蓋另一個的盲點,得到一個比任何單獨感測器都更好的估計。

教科書式的一對就住在IMU裡面。陀螺儀能又快又平滑地測量轉動速率,但把它的讀數累加起來去追蹤角度,會讓微小的誤差不斷堆積,於是估計會慢慢游走——這就是漂移。與此同時,加速度計能憑重力感知哪邊朝下,給出一個永不漂移、卻跳動劇烈、在快速運動中毫無用處的傾角。把它們融合——短期靠陀螺儀、長期用加速度計來錨定——你就得到一個既靈敏又穩定的姿態。

同樣的模式在機器人學裡反覆出現。輪式編碼器給出平滑、高頻的運動,卻會隨距離漂移;GNSS給出永不漂移的絕對位置,卻來得很慢,還會在橋下或室內失聯。把它們融合,一台配送機器人即使穿過隧道也能保持篤定的位置——因為GNSS沉默時由編碼器扛著它,而GNSS一回來就立刻糾正它。

前沿:學習式融合與視覺慣性融合

經典的卡爾曼濾波器假設你能為每個感測器如何出錯寫下乾淨的方程。真實的相機、雷射雷達深度相機比這要混亂得多,於是現代系統朝兩個方向發力。其一是把相機影像與IMU資料融合成視覺慣性里程計——慣性感測器去平滑掉快速的急動和短暫的視覺中斷,而相機則消除長期的漂移。許多無人機和頭顯正是這樣,在毫無GNSS的情況下知道自己身在何處。

另一個方向是學習式融合:不再手寫誤差模型,而是用海量真實資料訓練一個神經網路,去直接組合原始的感測器資料流。它能吸收那些古怪、難以書寫的怪癖——雨中真實雷射雷達的怪癖,或眩光裡相機的怪癖——代價是需要資料,並且在失敗時更難解釋。

退一步看,整章構成了一條流水線。每個感測器——無論是感受機器人自身身體的本體感知,還是觀察外部世界的外感知——都遞上一條原始而嘈雜的資料流。取樣決定你多久看一次,濾波擦去抖動,融合則把這些資料流編織成一個關於機器人身在何處、周遭為何的可信估計。這個乾淨的估計,正是感知、規劃與控制接下來要在其上構建的東西。