Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

優化 OpenPilot 方向盤控制

優化 OpenPilot 的方向盤控制主要涉及 橫向控制算法車型參數設定。以下是如何透過調整 latcontrol_pid.pyvalues.py 中的參數來優化方向盤控制的步驟與建議。


1. latcontrol_pid.py – 調整 PID 控制器

latcontrol_pid.py 是 OpenPilot 中的橫向控制算法,用於計算方向盤轉向所需的扭矩。優化的核心在於調整 PID 的三個增益參數:

  • P(Proportional)增益:響應車道偏差的幅度。
  • I(Integral)增益:修正長期累積的偏差。
  • D(Derivative)增益:抑制快速變化,減少超調。

如何修改

  1. 找到 PID 參數:python複製程式碼self.pid = PIDController( kp=0.2, # P增益 ki=0.01, # I增益 kd=0.05, # D增益 rate=100, # 更新頻率 (Hz) ) 這些參數通常位於 LatControlPID.update() 或初始化部分。
  2. 調整建議:
    • P 增益:增加 P 會讓車輛快速響應車道偏差,但過大可能導致方向盤震盪。
      • 調整建議:每次增加或減少 0.1,例如從 0.2 增加到 0.3
    • I 增益:適合修正小幅但長期的偏差,過大會導致方向盤慢速來回擺動。
      • 調整建議:每次增加或減少 0.005,例如從 0.01 減少到 0.005
    • D 增益:幫助減少超調,讓方向盤平穩運行。
      • 調整建議:從小值開始(例如 0.01),逐步增加。
  3. 測試調整:
    • 修改後運行 OpenPilot,觀察車輛行駛在直線和彎道時的方向盤穩定性與精準度。
    • 調整至方向盤穩定且無明顯延遲為止。

2. values.py – 車型參數設定

values.py 文件包含每個車型的方向盤限制和其他動態參數。調整這些參數可以進一步優化轉向控制的範圍與響應。

關鍵參數

  1. STEER_MAX:方向盤的最大扭矩輸出。
    • 如果方向盤在彎道上感覺不夠靈敏,可以增加該值。
    python複製程式碼STEER_MAX = 1500 # 默認值,數值越大扭矩越大
  2. STEER_RATIO:方向盤轉角與車輪轉角的比例。
    • 如果車輛在直線或彎道中方向盤控制過度或不足,可以調整此值。
    python複製程式碼STEER_RATIO = 15.5 # 大部分車輛的常見值
  3. STEER_ACTUATOR_DELAY:方向盤反應延遲(秒)。
    • 如果方向盤響應慢,可以減少該值。
    python複製程式碼STEER_ACTUATOR_DELAY = 0.1 # 默認值

如何修改

  1. 打開對應車型的 values.py 文件,例如:bash複製程式碼selfdrive/car/volvo/values.py
  2. 找到上面提到的參數,逐步進行調整,測試後觀察效果。

3. 測試與優化流程

  1. 測試條件
    • 測試直線行駛和不同半徑彎道。
    • 測試不同車速下的方向盤反應(低速 vs 高速)。
  2. 逐步優化
    • 首先調整 latcontrol_pid.py 中的 PID 增益。
    • 接著在 values.py 中微調車型參數,優化方向盤靈敏度和轉角。
  3. 記錄測試結果
    • 記錄每次修改後的效果,找出最佳配置。
  4. 觀察方向盤動態
    • 查看是否有以下問題:
      • 過度震盪:減小 P 或增加 D 增益。
      • 控制遲滯:增加 P 或減小延遲。

4. 常見問題與解決方案

問題調整方法
車輛無法穩定保持車道增加 P 增益,但不超過震盪的臨界值。
方向盤來回擺動減小 P 增益或適當增加 D 增益。
彎道處理不足(過小轉角)增加 STEER_MAX 或減小 STEER_RATIO
彎道處理過度(過大轉角)減小 P 或增加 STEER_RATIO,讓方向盤轉動更平滑。
高速方向盤響應遲緩減少 STEER_ACTUATOR_DELAY 或適當增加 P 增益。

具體的車型或測試情況,需要更精確地調整參數。

進行優化時建議保持數據備份,方便隨時還原默認設定。