好久沒寫東西了,今天就來科普一下這些在 discord 上見的幾個字見: e2e、VOACC、OP LONG、Laneless、Laneful …
openpilot 從一開始,著重的便是橫向控制 (lateral control) 的開發,其一是大多數能用 openpilot 的車型至少都有橫向控制,其二是縱向控制的開發難度比橫向控制 (longitudinal control) 還來得高。
橫向控制
openpilot 橫向控制一開始便是從偵測左右車道線開始,利用 AI 模型去判斷左右車道線,再外加 Lane Planner 將車子精準的控制在左右兩線的中間,就像是台火車一樣穩穩的置中,很多人喜歡早期的版本主要也是因為這個原因。
但是這樣子並不像人在開車,就如同他們在 這段影片 裡展示一樣,在一個比較彎的道路上,人類是會稍微切直線駕駛,這樣的乘坐體驗才是最舒適的。
從 0.7/0.8 開始,他們便導入了所謂的 Laneless (無車道線)模式,便是讓用戶們能體驗這樣子的行駛方式。
Lanless 不再利用所謂的 Lane Planner 去將車子精準的控制在兩線中間,反而,模型會決定那裡是可行駛的區域,然後直接告訴車子是該開左點或是開右點。
到了 0.8.13,comma two 正式退役,他們也正式的將 Laneless 納為主要的控制模式,拿掉了先前供用戶選擇的 Lanless 開關。
這也便是在目前 fork 裡面常見到的 Lanless/Laneful 開關的由來。讓用戶仍然可以使用 Laneful (車道線) 模式,享受如火車般的行駛。
Dynamic Lane Profile (DLP)、Lane Priority Mode 這些功能,則是讓 op 在有清楚的線道時使用車道線 (Laneful) 模式,路口、或是沒有明顯標示的線道時則自動改用無車道線 (Laneless) 模式行駛。
VOACC 縱向控制
在 openpilot 支持的 230+ 車型 中,能完全支持縱向控制 (openpilot longitudinal control) 的其實並不多。
早期支持縱向控制的車子裡,openpilot 使用常見的感測器融合 (Sensor Fusion) 方案來達到更好的控車效果。
什麼是感測器融合?簡單的來說,就是利用前方的毫米波雷達的判斷,配合上 openpilot AI 模型的判斷,來決定是不是有前車。
毫米波雷達的特質在於,它可以精準的告訴你前方幾「公分」有個物體,它的距離、相對速度是多少,好一點的雷達甚至可以同時追蹤數十個物體。
但是大多數的雷達無法告訴你前方的物體是車、人、還是一隻狗,而且路上的金屬物百百種,吐出來的內容便有很多的雜訊。
而利用鏡頭配合 AI 模型判斷出來的內容剛好可以替補雷達的不足,但是除非對鏡頭、模型有精準的調校,不然它對前方物體的速度、距離會有非常大的誤差。
利用感測器融合方案有一個非常大的問題,這裡也舉幾個例子:
1.
鏡頭:前面 100m 我覺得有一台車
雷達:前面 100m 我沒看到任何物體
2.
鏡頭:前面我沒發現任何東西
雷達:前方 50m 有一個金屬物
3.
鏡頭:前方我認為有個人走過來,概率為 60%
雷達:前方沒有東西
試問,在1、2、3的例子裡,到底要聽誰的話?
隨著模型判斷愈來愈精準,便有所謂的 VOACC (Vision Only Adaptive Cruise Control) 視覺縱向控制的出現,也就是說,與其在兩者之前做選擇,我寧願眼見為憑 (鏡頭)。
在我的 2021 C-HR 上或是 VAG 車系,因為其雷達訊號無法被 openpilot 給參考,所以若是想要讓 openpilot 能縱向控制,便只能用所謂的視覺縱向控制。
若是有看得懂代碼的車友,可以看一下 radar_interface.py 這裡面的代碼,如果只有不到 10 行的內容,代表該車系的車子雷達訊號是沒用上的
E2E 縱向控制
openpilot 並沒有宣傳所謂的 VOACC 功能,想像一下,它其實就跟一直以來的 openpilot 縱向控制沒差別,只是少了雷達訊號的輔助而已,而且在 comma EON、comma TWO 的時代,因為鏡頭太差,算力也不夠,便無法像 comma 3 / comma 3X 能繼續的進化提升對前方物體識別的精準度 (也就是判斷其速度和距離),自然也不推薦用戶使用 VOACC。
從 0.9 開始,comma.ai 開始主推所謂的 End-to-End (E2E) Longitudinal Control (Experimental Mode),而它又跟一般的縱向控制有什麼不一樣呢?
舊有的縱向控制是人為的將控制規則寫下來,例如:
當前方有車時
找出前方物體的相對速度、距離
當前車加速時,以 TTC 1.45 秒的安全車距,增加自已的車速,並維持在最高定速內。
當前車減速時,以 TTC 1.45 秒的安全車距,減少自已的車速。
當前方沒有車時
將車速維持在最高定速。
當前方路口紅燈亮時
…
當前方路口綠燈亮時
…
當到路口要轉彎時
…
…
這個列表可以一直持續寫不停,直到涵蓋所有的可能性為止,但能做到嗎?很難,很多的邊緣案例 (Edge Case) 在上面的例子裡根本辦法處理。
而 E2E 就不同了,反而比較像是人在開車:
給我一小段影片,我就可以告訴你接下來是要走還是要停。
結語
e2e:無論是橫向(lateral)還是縱向(longitudinal),其控制是不需要經過人為去刻寫規則。
OP LONG:指的是由 openpilot 做縱向控制。
VOACC:指的是 openpilot 縱向控制,但是不融合雷達訊號。
e2e LONG:指的是 openpilot 用 e2e 的方式做縱向控制,有雷達訊號的車子還是會融合雷達訊號,沒有雷達的車便是純視覺。
Laneless:說白了就是 e2e lateral (e2e 橫向控制)。
Laneful:傳統的橫向控制,用人為刻寫的規則置中。
最後還是要小酸一下,物以類聚,要相信一群專業的人,小心一群只會話術的人。以上。
我們盡量以最簡單易懂的方式說明,若有任何錯誤也麻煩各位指正。未經授權請勿任意轉發,轉發請註明出處,謝謝。