今天我們來分享另一個基於 openpilot (以下簡稱 op)的小 project - xnxpilot。
源由
很多人一直在找能夠跑 op 的替代硬體方案,但有礙於 comma.ai 一直未把模型開源 (一直以來都是 dlc 格式,只能用於 Qualcomm 晶片),所以直到 0.7 版左右都沒有任何手機以外的平台出現。
後來他們推出了 tensorflow 版的模型後,便開始有人將 op 移植到 Nvidia Jetson TX2,但是當時的程式碼對非 Qualcomm 的平台非常不友好, 所以也沒有看到有任何後續的消息。
直到 2021 年初,他們推出了 onnx 版的模型以及 comma zero (https://comma-ai.medium.com/self-driving-car-for-free-82e871fe0587) ,讓 op 可以在不需要大更改的修改程式碼下在 PC 平台上運作,引起了我對移植到不同平台上的興趣。
選擇
那為什麼選擇 Nvidia Jetson Xavier NX 平台呢,理由也很簡單,它是當時市面上能力最強的 SBC (Single Board Computer - 單板電腦),而且比 TX2 沒有貴多少。
既然都是要花錢,最安全的就是買一個最強悍的平台來測試,如果不能跑、或是跑得不順,則其它的平台也就不用考慮了。
這裡我也順帶提一下另一個 project - raspberry-pilot (https://github.com/Gernby/raspberry-pilot) 讓你用 raspberry pi 跑 op。
如果 raspberry pi 可以跑 openpilot ,為什麼要花大價錢買 Xavier NX?我們就要先了解到 raspberry-pilot (以下簡稱 rpi-pilot) 跟 op 最大的差別: rpi-pilot 不用處理圖像。
rpi-pilot 是依賴原車 ADAS 相機處理好的訊號再加工做控車判斷,想像一下,就如同有一個人告訴你前方的車道線在那,你只能依照他講出來的話來做判斷。換個角度說,這樣的方法做出來的控車系統有極限,一是無法對圖像做進一步的處理,二是如果換了 ADAS 相機,需要再重新寫訊號轉譯層。
這便是為什麼 rpi-pilot 只能在特定的 Honda 車型上使用,並且 comma.ai 沒有考慮這樣的解決方案的原因,只有在能取得原始圖像訊號的情況下,AI 模型才有更大的進步空間。
過程
op 已經最大程度的做到硬體抽象化,換言之,將 op 放上 Xavier NX 不難,這裡我分享幾個移植的重點:
Jetson 平台目前只到 ubuntu 18.04 而 op PC 版需要 ubuntu 20.04,所以需要研究如何在 18.04 上安裝 20.04 的套件。
修改 SConstruct、SConscript 讓 op 在編譯時能找到正確的硬體參數。
挑選合適的相機/鏡頭。 (我買了六個 mipi 相機模組測試)
在 Jetson 平台上對 opencv、opencl、onnx 幾個程式庫做優化。
關閉、刪除所有用不上的服務 (OS、op)。
結論
完成後的硬體成本約為 700 美金,費時約 1 個月,從這裡面我們更能看到 comma.ai 在 Qualcomm 821 平台上做到的極致優化,而且其製作成本 (C2) 遠遠不如 xnxpilot 的一半,體驗卻比 xnxpilot 好上好幾倍。
這也不難看出為什麼副廠們不願也做不出能跟 C2 或是 C3 媲美的硬體平台, 複製 C2 可以得到更高的利潤,也不用為了優化平台浪費時間以及人力資源。
我們也真心希望副廠們能夠對 op 這個平台有所貢獻,而不是只做一個伸手黨,只為了營利而高價販賣複製品。
(是的,目前的副廠們「沒有一個」對 op 平台有任何實質的貢獻,如果我有說錯的地方請指正)
最後,對 xnxpilot 有興趣的車友們可以到 github (https://github.com/eFiniLan/xnxpilot) 來看相關的安裝教學,如果只想看看它的效果的可以觀看以下的影片:
我們盡量以最簡單易懂的方式說明,若有任何錯誤也麻煩各位指正。
未經授權請勿任意轉發,轉發請註明出處,謝謝。