openpilot 為什麼限制那麼多?談談 openpilot 的安全設計
感謝 @吳柏霖 車友的建議,openpilot (簡稱 op) 的安全設計一直是個討論不完的話題,當然隨著新功能的加入,有些曾經的安全限制也都慢慢的解封了。我們今天就從官方討論區 (Discord: https://discord.com/invite/avCJxEX) 討論過的幾個跟安全相關的話題來談談 op 的安全設計。
提醒
大家在用 openpilot 要記得:
它只是個 L2 等級的輔助駕駛系統。(遵守 ISO 26262/15622 等等的規範)
它只是個開發用套件。(Dev kit,代表它可能會出現錯誤、問題,任何因為使用它而導致車禍的發生、晚七天回家,都是自已的責任)
它不是個車規級的硬體。(e.g. 無法完全在 -40 ~ 105 之間的溫度運作)
油門、剎車、轉向的限制
在大多數的情況下,comma.ai 並沒有對這些控制有任何的限制。
但是,如果 op 突然在高速下轉 90 度怎麼辦?op 突然急踩剎車怎麼辦?
這裡我們不得不順帶的講一下 op 平台的防火牆:panda (內建於 C2/C3 內)。
它能夠適時的允許、擋下 op 發送的控車指令,防止做出任何出格的控制。
除非能拿出數據給 comma.ai 證明原車系統使用了更高的扭力、加/減速度控車,否則目前的限制是不太可能再做調整的。(當然對 fork 來講可以亂改,出事誰負責?)
而 comma.ai 也明文禁止 fork 修改 panda 裡面的安全檢測碼。
踩油門不解除控車
為什麼要踩油門 op 就解除控車,主要的理由是 commaa.ai 認為控車要嘛全控,要嘛就全解除,不要有一堆的條件增加系統的複雜性。
後來因為大多數的車廠的系統都是可以踩油門不解除 ACC,他們也就放鬆讓 fork 能夠踩油門不解除控車,而原 op 還是保持原樣。
這功能在 0.7.6 之前是不允許的,我們也在 George Hotz (以下稱 GH) 的指導下將這個修改提交進 panda 裡 (https://github.com/commaai/panda/pull/480),至於為什麼是提交至 panda 而不是 op,我們以後再討論。
全時置中
全世界車子有「車道置中(LKA) 和自適應巡航控制 (ACC)」的 ADAS 系統在踩剎車時會全部解除,在手動剎車的情況下駕駛應該要有整台車子的主控權, ADAS 不應該再繼續控制方向盤。
這就是個暗黑的功能,有安全的疑慮,完全不納入 op 的設計考量。
半時置中
最近有些 fork 加了半時置中的功能,稱有與原車系統雷同的操作習慣:
打開 ACC 開關馬上就有 LKA。
按 SET 後開始 ACC。
踩剎車時同時取消 ACC 和 LKA。
剎車放開後只自動恢復 LKA 不恢復 ACC。
關閉 ACC 開關後完全取消 ACC 和 LKA。
類似的功能很早以前就討論過但是被 GH 給禁止了,理由是:原車的 LKA 在一般的情況下只是在壓線時稍稍的幫你拉回來,只有在開啟 ACC (按 SET)後才有車道置中。
換句話說,如果 op 也要做這樣的功能,在沒按 SET 之前方向盤只能稍稍的施力,按了 SET 之後可以施更大的控制力度。
而為了達到這樣子的功能,op 和 panda 都需要寫入很多的條件去檢查,又得增加系統的複雜性,所以最終就沒再繼續討論下去。(當時也有幾個知名的 fork 因為加入了這類的功能改了 panda 原始碼被 ban)
我們認為為什麼 GH 這次會讓步,主要是因為:
這個功能當初被 spektor56 推出時,並沒有很多人在用也不是個主流的 fork,所以他們不太在意 spektor56 改 panda 原始碼這件事。
comma.ai 正在弄 comma three 沒空管討論區。
當被注意到時,已經有很多的 C2/C3 在跑這個功能,如果禁止的話可能會限制他們取得 C3 行車記錄的速度。
調整駕駛監控 (Driver Monitor, 簡稱 DM) 的相關設定
comma.ai 強制使用 op 的車友全都要開 DM,任何調整相關設定的行為都會被 ban。
目前這個功能在各車廠的系統裡並沒有任何強制性的規範,我們相信這個限制純粹是考慮到系統並非一個 L3 級別以上的系統,他們也不願意承擔任何的風險。
結論
這篇講的比較亂,但還是希望這些解說能讓車友們了解為什麼會有這些的限制,如果有任何問題或是有講解不清的地方,也請大家留言,我們會再補充說明,謝謝。
參考: https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md
我們盡量以最簡單易懂的方式說明,若有任何錯誤也麻煩各位指正。
未經授權請勿任意轉發,轉發請註明出處,謝謝。



