關於 SDSU 這騎事
我身騎白馬啊 走三關~
對於許多豐田 (Toyota) 或凌志 (Lexus) 的 openpilot 使用者來說,「SDSU」這個詞可能並不陌生。在過去很長一段時間裡,它是讓 openpilot 能夠完整接管車輛縱向控制(油門與剎車)的關鍵硬體。
然而,隨著 openpilot 的快速迭代,一個重大的轉變發生了。這篇文章的目的,就是為了清楚地說明 SDSU 的來龍去脈、dragonpilot 在這過程中做了哪些努力,以及在現階段,使用者該如何選擇最適合自己的方案。
1. 起點:DSU 是什麼?
要了解 SDSU,得先從部分豐田車系的 ACC (主動式車距維持定速系統) 說起。
在這些車款上,原廠的 ACC 功能是由一個稱為 DSU (Driving Support Unit) 的電腦所控制。如果 openpilot 想要接管油門和剎車,就必須繞過 DSU。
2. 挑戰:不穩定的 DSU 軟體模擬
在 SDSU 這個硬體方案出現以前,openpilot 其實已經嘗試透過純軟體的方式來模擬原廠 SDSU 的行為。
理論上,只要將車輛的 DSU 接頭拔除 (Disconnect DSU),openpilot 就會接手,開始發送它認為正確的 CAN 訊號來控制車輛,同時防止儀表板亮起錯誤碼。然而,這個方法在實際應用中似乎問題多多,穩定性並不理想。
正是因為這個背景,社群才會開發出 SDSU 這樣的硬體解決方案,期望透過更穩定的方式來攔截訊號,進而解決 DSU 模擬所帶來的問題。
3. 方案:SDSU 硬體的誕生
SDSU (Smart DSU) 扮演的,正是一個「智慧守門員」的角色。它會攔截並阻擋來自原廠 DSU 的訊號,讓 openpilot 得以發號施令;但同時,它又聰明地保留了最關鍵的安全功能,例如 AEB (自動緊急煞車),確保在任何情況下,行車安全都是第一優先。
4. 轉變:openpilot 0.9.8
openpilot 從 0.9.8 版本開始,官方決定為了簡化系統架構與維護,全面停止支援所有外接的非官方硬體。
https://github.com/commaai/openpilot/issues/31745
這項政策性的改變影響深遠,首當其衝的就是:
SDSUComma PedalRadar Filter (雷達攔截器,也是 SDSU 的一種)
這也意味著,所有依賴這些硬體來實現縱向控制的車輛,在升級到新版 openpilot 後,都會面臨挑戰。
5. 嘗試
面對 openpilot 0.9.8 的轉變,dragonpilot 其實在第一時間就將 SDSU 的支援移植了回來。然而,由於當時的用戶不多,惱人的「騎馬感」問題直到後來才被陸續回報。
當問題浮現後,dragonpilot 便進行了一連串的實驗,希望能為使用者找回過去流暢的縱向控制體驗。然而,過程比想像中要複雜許多。
第一步:問題根源的交叉比對
當出現騎馬感時,第一個想到的便是「是不是
SDSU因為某種原因沒有正常工作?」為了驗證這點,我們便嘗試了直接斷開DSU的方案,結果發現openpilot早期的DSU模擬功能本身就有問題,車子會報錯無法使用。這個發現目前也已回報給openpilot開發人員。
第二步:深入 Log,確認訊號傳遞
在交叉比對後,我們進一步查看
Log,發現 SDSU 的攔截 (Intercept) 功能完全正常,openpilot也如預期地送出了0x343(加減速) 的訊號。這一步初步排除了「SDSU程式碼移植失敗」的可能性,將問題指向更後端的控制邏輯。
第三步:將舊版 longcontrol 控制邏輯加回去
既然訊號傳遞沒問題,我們推測可能可以先將舊版的
longcontrol模組移植回來試試。不幸的是,惱人的騎馬感依舊存在。
第四步:將舊版 longitudinal_planner 規劃器加回去
最後的嘗試,是將更底層的縱向規劃器
longitudinal_planner也換成舊版。但這次直接宣告失败,原因是新版openpilot的駕駛模型,已經缺少了舊版規劃器運作時所需要的幾個關鍵參數。
第五步:將舊版 0.9.7 模型移植回來另一個嘗試的方向,是將舊版的駕駛模型移植回來。但這麼做等於放棄了新版本在橫向控制等方面的所有進步,與
openpilot持續進化的核心價值相悖,意義不大。
這樣便跟我原先想的一樣,只有重新的調整 PID 產數以及在 carcontroller 調整控制條件,才能根本的解決這個問題。
6. 選擇
考量到穩定性與新功能之間的取捨,目前建議使用者以下兩種方案:
方案一:追求最穩定的縱向控制
如果你非常重視
openpilot控制的加減速平順度,暫時不追求最新的模型,那麼最好的選擇是繼續使用基於openpilot0.9.7 穩定版開發的分支,例如舊版的dragonpilot (C3)、frogpilot (C3/C3X)或sunnypilot (C3/C3X)。方案二:體驗最新的駕駛模型
如果你想使用
openpilot最新的駕駛模型,享受其在橫向控制(車道維持)上的進步,那麼你有兩個選擇:使用最新版的官方
openpilot:但這意味著你將沒有openpilot的縱向控制,油門與剎車將交由原廠 ACC 系統負責。使用最新版的
dragonpilot:在設定中開啟 "Use Stock Longitudinal" (使用原廠縱向控制) 的選項。這樣你就能體驗到最新的車道維持模型,同時由原廠系統處理加減速。
結語:探索仍在繼續
openpilot 的架構更新帶來了挑戰,而 dragonpilot 的探索也將繼續。感謝社群的支持,您的回饋與討論是我們前進的最大動力,歡迎隨時提出您的想法。
✍️ 本文在 gemini 協力下完成,一起調校的不只是 openpilot,還有這篇文章。
我們盡量以最簡單易懂的方式說明,若有任何錯誤也麻煩各位指正。未經授權請勿任意轉發,轉發請註明出處,謝謝。








