如果有一條線,可以穿起來所有自動駕駛的核心模塊,那么我感覺它就是最優化,選擇優化變量、構造優化問題、求解優化問題,這幾個步驟貫穿了自動駕駛的始終。
先從我的自身接觸順序寫起。最開始做個一點深度學習,那還是2016年,深度學習已經飛速發展了4年左右,各種方法層出不窮。有幸看了李飛飛的深度學習課,AK大神講的大部分內容,手寫了一個網絡,了解深度學習就是構造并求解一個優化問題,了解了BP,了解了隨機梯度下降,帶動量的梯度下降,等等一系列優化問題求解方法。
學校里課題選了一個機器人機械臂作業方向,用到了一些圖像處理手段包括識別和跟蹤,了解了kalman filter, particle filter都可以用來做圖像固定片段的跟蹤。
后來工作之后做自動駕駛控制問題。了解了kalman filter, 知道了它是求解一個優化問題,可以用來平滑信號。后來從pid一路了解到LQR MPC,知道了LQRMPC都是最優控制里的一種方法,其本身也是構造優化問題,求解優化問題。
到這里其實我已經開始有點疑惑,為什么自動駕駛從上游感知到下游控制都有kalman filter, 都是構建優化問題,求解優化問題,這些優化問題之間有什么區別和聯系呢?當時試圖學習一些Boyd的凸優化課程,發現根本看不懂,當然現在看懂的可能性也不大。
后面換了工作,做了一陣子激光雷達定位。發現里面更全都是優化問題構造和求解,點云匹配是,前端里程計用的都是XXKF,eskf, ekf ,iekf, iesekf等等。后端里也是構造位姿優化問題。不過是直接利用求解器,過去10年,出現ceres, g2o, gtsam, sesync等等大規模位姿圖優化求解器。
后來做過一陣子決策規劃。看過一遍APOLLO,發現里面也都是優化問題求解,比如平滑路線是構造QP問題,局部軌跡規劃也是構造QP問題。后來寫了一陣子狀態機if-else,覺得沒有什么意思。于是看了一下強化學習的東西,發現核心也是優化問題的構造和求解。
我的疑惑更多了,從最開始的kalman filter 為什么從感知到控制都能用,到后面發現定位也都在用,也發現LQR MPC可以放在底層的控制階段用,也可以放在規劃用,現在很多決策博弈過程本質上也是優化問題求解過程。到DDP iLQR MPC等等從某種程度上也是強化學習。到Kalman filter和LQR的對偶性,等等。
從我接觸的東西,最后我得出了前面的結論如果有一條線,可以穿起來自動駕駛的核心模塊,那就是最優化。這個結論我自己是非常喜歡的,因為我通過實踐和總結,仿佛發現了什么了不得的東西。
后面會有一系列大雜燴,總結一下這10年來遇到的所有優化問題。順便做一些讀書筆記,看看有沒有更好玩的東西。