Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Openpilot 主要控制車輛程式模組介紹

OpenPilot 的功能是透過多個程式模組實現的。以下是對 OpenPilot 原始碼中主要相關功能實現的介紹,以及各部分所在的程式位置:


1. 車道線偵測與識別

  • 模組名稱selfdrive/modeld
  • 檔案
    • modeld.py: 負責加載車道線和路徑預測模型,與神經網絡進行交互。
    • 模型文件selfdrive/modeld/models/supercombo.onnx
      • 這是訓練好的神經網絡,用於處理攝影機影像,預測車道線位置與道路曲率。

2. 車速與車輛動態

  • 模組名稱selfdrive/car/
  • 檔案
    • selfdrive/car/<car_brand>/interface.py:
      • 每個車型的 CAN 資料解析與動態參數在這裡處理,例如車速、方向盤角度、扭矩限制。
    • carstate.py:
      • 定義車輛狀態的資料結構,包括車速、方向盤角度等。

3. 地圖和導航數據

  • 模組名稱selfdrive/navd(如果使用導航功能)
  • 檔案
    • navd.py: 負責處理 GPS 與導航數據,幫助預測未來的彎道。
    • 地圖數據目前僅在特定車型上有限支持。

4. CAN 總線數據

  • 模組名稱selfdrive/car/
  • 檔案
    • can_parser.py:
      • 用於解析 CAN 總線數據,提取車輛的實時資訊(如車速、方向盤角度)。
    • sendcan.py:
      • 用於將控制指令發送到車輛,例如轉向扭矩命令。

5. 控制算法

  • 模組名稱selfdrive/controls
  • 檔案
    • controlsd.py:
      • 核心控制流程,包含方向盤控制邏輯,整合車道線數據和車速等信息。
    • latcontrol_pid.pylatcontrol_indep.py:
      • 橫向控制(方向盤)的具體實現。PID 和其他控制器用於計算方向盤需要的扭矩。
    • pathplanner.py:
      • 根據車道線數據規劃行駛路徑。
    • planner.py:
      • 綜合車輛動態數據和路徑規劃結果,輸出方向盤轉角或扭矩指令。

6. 駕駛人干預處理

  • 模組名稱selfdrive/monitoring
  • 檔案
    • driver_monitoring.py:
      • 負責監控駕駛人是否干預方向盤,或者駕駛人是否注意力集中。
    • 如果檢測到駕駛人干預,會暫停自動轉向。

7. 車型參數

  • 模組名稱selfdrive/car/<car_brand>/values.py
  • 檔案
    • 包含每個車型的參數,例如:
      • 最大轉向扭矩(maxSteerTorque
      • 最大方向盤角度(maxSteeringAngle
      • 轉向校準數據。
    • 例如,對於 Volvo 的部分車型,可以在 selfdrive/car/volvo/values.py 中找到。

8. 感知與控制的整合點

  • 模組名稱selfdrive/controls/controlsd.py
    • 這是核心控制模組,負責整合上述模組的數據(車速、車道、導航、CAN 總線數據等),並計算最終的方向盤控制指令。
    • 函數
      • update(): 收集來自其他模組的數據。
      • run(): 執行控制邏輯並發送控制命令。

如何查看和修改程式?

  1. 下載原始碼:從 OpenPilot 官方 GitHub 獲取原始碼。
  2. 關鍵搜尋
    • 搜尋關鍵詞 steeringtorquelanepath,可以快速找到與方向盤相關的程式部分。
  3. 測試與調整
    • 通過調整 latcontrol_pid.pyvalues.py 中的參數進行方向盤控制優化。

這些功能和邏輯讓 OpenPilot 能夠根據車輛的感知資訊實現高效的方向盤轉向控制。