首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

開源飛控中 US100 超聲波模組作用:測量相對地面高度,輔助定高/著陸,非避障用途

     編輯:程式設計疑難解答

飛控(如 ArduPilot、PX4、Betaflight)集成 US100 超聲波測距模組,主要用於低空精確定高(0-10m),而非橫向避障。本文詳解其工作原理、安裝位置、數據融合邏輯及局限性。

US100 在飛控中的核心定位

  • 測量目標: 機體正下方地面/水面距離(相對高度 AGL)。
  • 工作範圍: 2cm - 4m (官方) / 實際可靠 0.3m - 8m。
  • 安裝位置: 機身底部中央,波束朝下,避開電機氣流、起落架、電池線干擾。
  • 數據用途:
    • 定高模式 (AltHold/Loiter) 低空融合氣壓計/ GPS 高度。
    • 精準著陸:最後 1-2 米切換超聲波為主高度源。
    • 地形跟隨:掃描地面高度變化(需前向安裝多個)。

為什麼不用於四周避障?

維度超聲波 (US100)避障首選:激光雷達/深度相機/毫米波雷達
視場角 (FOV)窄 (約 15-30° 錐面)寬 (激光 270°/360°、深度相機 90°+)
更新率低 (~20-50Hz)高 (激光 10-20Hz/線、深度相機 30FPS)
抗干擾差(風聲、電機噪聲、多路徑)強(光學/毫米波不受聲學干擾)
最小探測距離~2cm激光 ~0.1m、TOF ~0.2m
成本/重量極低 ($2/5g)中高 ($50-500/20-100g)

飛控軟件中的融合邏輯 (以 ArduPilot 為例)

// 簡化邏輯
float sonar_alt = read_US100();          // 讀取超聲波高度
float baro_alt = read_Barometer();       // 氣壓計高度
float gps_alt = read_GPS();              // GPS 高度

float fused_alt;
if (sonar_alt < SONAR_MAX_RELIABLE_ALT) { // 如 8m
    // 低空:超聲波權重高,氣壓計修正長期漂移
    fused_alt = complementary_filter(sonar_alt, baro_alt, 0.8); 
} else {
    // 高空:超聲波不可靠,切換氣壓計+GPS
    fused_alt = ekf_fuse(baro_alt, gps_alt);
}

// 輸出給控制器
set_target_altitude(fused_alt);

常見問題與調試

現象原因對策
定高模式下高度跳變超聲波多路徑反射/地面材質吸聲增加中值濾波、設置可靠高度上限、換激光雷達 (TFmini/LidarLite)
著陸前瞬間衝高/衝低地面效應導致氣流干擾超聲波著陸最後 0.5m 禁用超聲波,純氣壓計/光流
數據一直為 0/最大值接線錯誤 (TX/RX 反接)、波特率不匹配、模組損壞示波器抓波形、邏輯分析儀抓串口協議

參考資料

結論:US100 是「低空定高神器」,不是「避障雷達」。飛控設計時,超聲波管高度,激光/視覺管避障,各司其職才穩健。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved