关于「无人驾驶」的学习路线...
來源 |?知乎冰銳
二次排版 |?張巧龍
目前我的研究方向是多傳感器融合感知和定位,所以關于這個方向的可能說的多一些。
先上傳一張百度Apollo 1.0的全棧工程師的技術圖譜吧。
下面進入正題吧!
首先是編程語言的學習了,Python,C++,Matlab,C這幾門是必須要會的,有空閑是時間可以學學Java,畢竟是排名第一的語言。
首先,python人工智能的標配語言,可以看看廖雪峰的教程,B站上搜一下很多不錯的教程。
其次,C++,被稱為最難的語言,性能是這門語言的關鍵。可以看看C++ Primer 做入門,后面關于STL、多線程和socket編程等進階了在說,到時候你自然知道看什么了。
Matlab學車輛的要會,這個多參加幾次數學建大賽就都會了。
C語言,做嵌入式開發離不開它,單片機(如STM32)有時間可以玩一玩,不要求精通到會畫PCB,但是車載網絡的基本協議都要掌握,尤其是CAN,其次包括電機控制,各種車載傳感器的控制和數據解析等都要會,自己有了想法想實現的時候,這不能成為你的障礙。
接下來說一些工具類吧!
首先是ROS系統,作為最流行的機器人操作系統應該熟練掌握,其中很多的思想對你學習其他的系統很有幫助。比如百度的Apollo系統就是從ROS中出來,雖然現在已經換成了他們自己開發的Cyber RT系統,但是ROS訂閱和發布的機制仍然保留了,且那個系統從底層進行更改,我們在上層開發,只需要熟悉API就可以很快學會。除此之外ROS系統還有很強大的社區和各種開源的工具像Rviz(數據可視化),Gazebo(物理仿真模型)等工具很好用,關于ROS暫時說這些。
ROS的資料首推古月居前輩的《ROS機器人開發與實踐》,深藍學院有他的課,你可以看看,還有ROS的官網,要好好看看。
接下來是Bazel、Cmake、Protobuf等編譯工具,這個上官網學習即可,Cmake有一個叫做《Cmake Practice》的小冊子寫的不錯。
然后是Docker,容器的優點我就不細說了,主要是Apollo的系統是基于Docker的,一定要理解好容器的本質還有鏡像和倉庫的概念,這樣對你理解docker的命令很有幫助。
接下來是Opencv和PCL了,一個2D視覺一個3D點云,我覺得視覺的發展一定會從2D走向3D,這兩個庫必須要會。Opencv就不說了,資料太多,自己搜就行,PCL有一本叫做《點云庫PCL學習教程》的書,但是感覺就是官網翻譯,不想看英語的可以看這個,把書里的代碼全部跑一邊,并且讀懂每行代碼的含義就行,以后用到哪一部分在細致學習即可。
接下來說一說人工智能的流行框架
首先是TensorFlow和Keras,這個主要是基于靜態圖的, ?TensorBoard是很好的可視化工具,TensorFlow2.0改進后也可以進行動態圖的編程了。TensorFlow主要是工業界在用,所以學習它是不可避免的。TensorFlow學習來還挺簡單但是Debug的時候不是那么友好,底層代碼晦澀難懂,這個的教程太多了,自己搜B站有很多。
其次是Pytorch,這個主要基于動態圖,主要在學術界使用,但是最近Pytorch發展迅猛,剛剛發布1.2版本,感覺已經追上TensorFlow了。這個學起來簡單易用,上手快,代碼清晰易懂。
如果做視覺的話Caffe是個不錯的選擇,Caffe 中的數據結構是以 Blobs-layers-Net 形式存在的,擴展性好且專精于圖像處理。學習起來和前面兩個區別挺大,但是畢竟都是框架,都不是很難學。
前面說的那些你都會了,下面就要學些上檔次的了。
首先數據結構和算法,這個你可以看看《大話數據結構》做為入門,之后上LeetCode上刷題,還有《劍指Offer》可以看看,不僅對你學習算法有好處,還對以后找工作有幫助。然后《操作系統原理》、《計算機網絡》、《計算機組成原理》有時間都學一學,這是你和那些培訓班出來的學生的區別。
關于機器學習和深度學習的原理課程的推薦。
首推Coursera上Andrew Wu的深度學習課程,配上課后的編程練習,一遍下來,最起碼是個入門水平了,真正明白深度學習中的那些細節和原理。李宏毅的課程也很好,就是臺灣腔聽著有點不習慣,還有Standford的CS231N,李飛飛的課程,推薦自然沒什么說的。書的話,可以看看周志華的《西瓜書》,還有著名的《花書》,以及《強化學習》都是圣經類的書籍了。
最關鍵的是數學了,這是一切的基礎。
首先,本科階段學的高數,線代,概率論都要熟練掌握,不能比考研的同學差,其次要自己學一學離散數學,線性代數要學的更高級,像奇異值分解,三角分解等要會,尤其是把概率論和線性代數結合起來,要看懂。線性代數可能需要你至少學三遍以上,才能逐漸理解它的美。然后是優化理論,像非線性優化和凸優化等,最后還有信息論的東西要學習一下。對了還有現代控制理論的東西必須要會,這是很基礎的,也是很重要的。
最后再來推薦一波SLAM的相關書籍和視頻吧!雖然,目前SLAM還不能在無人車上有太大的應用,但是學會了它,可以說,學其他東西都很簡單。
首推,高翔的課程,他的《視覺slam十四講》,SLAM入門非常好的書籍,還有他的視頻課程。接下來推薦高翔翻譯的《機器人學中的狀態估計》讀懂了這門書就在也不怕數學了,還有《概率機器人》讓你對各種濾波器有很好的理解,最后要想深入視覺SLAM,《計算機視覺中的多視圖幾何》這本書是逃不開的,想要成為精英,就要付出代價,可以慢慢啃。還有推薦高翔在深藍學院的《從零手寫VIO》課程,這可能是視覺SLAM真正應用的很好的方向了,多傳感器融合的趨勢已經不可阻擋了。還有激光SLAM,我看到是曾書格的視頻。
還有Udacity的無人駕駛課程挺好的,要是能自己完成全部項目,相信已經超過70%的人了,我打算這個假期把這個課程看的差不多。
最后,也來展示一下我們前一陣利用百度Apollo做的無人校園快遞車的Demo吧!
校園無人駕駛演示
在車輛工程專業想做無人駕駛的小伙伴,這個專業可能成為你的劣勢,但是把握好,這可能會變成我們的優勢。
雖然我一直是為了拿獎學金和保研被迫學了車輛的知識,但是四年下來,我對車的理解真的和大一剛來的時候有了很大區別,真的敢說自己懂點車了。
總之,技多不壓身,雖然是被迫學習,但是也都挺過來了。也許這就是命,可能當初高考少打20分我就去學計算機了,也許在計算機專業我再也不會接觸到車,也許會有更好的選擇,但是現在也不后悔,在車輛的這幾年我變的更加立體了,學了很多課外的東西,過的也很充實。
我從沒有被自己的專業限制,本科階段我們就應該廣泛接觸,多學自己感興趣和對未來的發展有幫助的知識,研究生在選一個小的方向繼續深入。
不要被專業限制了自己,覺得自己是車輛工程的學生編程就是不行,數學就是不好。
專業只是你的一個小小的標簽,除去它,你練就的各種各樣的能力才是真正重要的東西,車輛專業的你,代碼能力依舊可以很好,數學水平仍然可以練就,要對自己有自信!
-END-
往期好文合集
電路與愛情<<戳這里
是否要從單片機轉嵌入式Linux?<<戳這里
分享GitHub上一些嵌入式相關的高星開源項目<<戳這里
??最 后??
?若覺得文章不錯,轉發分享,也是我們繼續更新的動力。
5T資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等!
在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~
長按識別圖中二維碼關注
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的关于「无人驾驶」的学习路线...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文带你认识FPGA~
- 下一篇: 香港科技大学鼓励学生使用 ChatGPT