無人駕駛,個人如何研究?
網站啦,ios,android,linux kernel等只要有一台筆記本連網就能自學。無人駕駛技術應該怎麼學習(研究就說不上了)
都需要哪些基礎課程?哪些演算法?無非就是智能控制技術,人工智慧,模式識別等知識吧?
作為一個在公司義務給應屆生和實習生培訓的「小師」,結合我自己學習的經歷,從操作手冊的角度,手把手教你「無人駕駛」從入門到轉行。
前言
先看看無人駕駛基本的硬體構造及其成本
圖片出處:https://www.wired.com/2015/04/cost-of-sensors-autonomous-cars/
看完圖,就會發現一個十分尷尬的問題——除了超聲波雷達以外,剩下的設備都買不起。
所以個人做無人駕駛研究,在沒有大資金支持的情況下,就不要考慮基於實車做研究了。
斷了從硬體方面著手做研究的念頭,我們直接看看軟體方面。
軟體方面可以做的工作就很多了,掌握其中某一項或多項技能,對你在該領域的發展都大有裨益。
操作系統安裝
必學指數:
易學指數:
既然是做軟體,首先得有個操作系統。常見的操作系統Windows/Linux/Mac...(打...的操作系統我也沒用過),考慮到社區支持、開發效率,推薦使用 Linux 作為無人駕駛研究的操作系統。
大部分做無人駕駛的團隊都用的 Linux,跟著大趨勢走,可以省很多事。
Linux 又分為很多版本,最常用且普及率很高的當屬 Ubuntu 系列。雖然 Ubuntu 已更新至 17.04,但從穩定性上,推薦安裝 14.04 版本。
推薦用一塊單獨的SSD安裝Linux,或者使用虛擬機安裝,最不推薦裝雙系統(不太穩定)
奉上 Linux Ubuntu 14.04 安裝包 + 虛擬機安裝方法
鏈接:http://pan.baidu.com/s/1jIJNIPg 密碼:147y
Linux基本指令
必學指數:
易學指數:
作為Linux的核心——命令行操作不僅對開發大有幫助,而且是裝X利器。
另一個好處是使用指令 apt-get install,可以快捷地完成很多軟體的安裝,不用像Windows那樣,在網上四處尋覓適配的安裝包。
Linux的指令很多,而且比較雜,使用起來需要多學,多用。
有道雲筆記分享:有道雲筆記-Linux基本指令介紹
開發環境安裝
必學指數:
易學指數:
開發環境會涉及很多實際使用的庫,不同的程序員處理相同的問題,可能使用不同的庫。
下面通過安裝我在工作和學習中經常使用到的庫,拋磚引玉,將開發者"引進門"。
搭建環境所需安裝包:
鏈接:http://pan.baidu.com/s/1sllta5v 密碼:eyc8
詳細的安裝方法見筆記:有道雲筆記-Linux開發環境搭建
開發環境介紹
必學指數:
易學指數:
集成開發環境IDE
前面安裝了一款開源的IDE qt,目前 qt 在 Linux 中的地位,就和 Visual Studio 在 Windows 中的地位一樣。除非是不使用 IDE 開發的高玩,大部分在 Linux 下做開發的團隊還是會選擇用 qt 開發的。
qt 的主要作用是做互動式的界面,比如在界面中顯示當前感測器採集到的各種信息。界面交互會明顯加快開發者調試程序和標定參數的過程。
Tips:
熟悉 qt 可以網上找教程,我更推薦系統地學習,比如買一本 Qt 的書。
買書或者去圖書館借書,注意看寫書的日期,越新越好,太老的書,相應的版本也很舊。
OpenCV
OpenCV是一個非常強大的庫,其中封裝了大量的可應用於無人駕駛研究的函數,包括各種濾波器演算法、特徵點提取、矩陣運算、投影坐標轉換、機器學習演算法等。
當然最重要的是,它在計算機視覺領域的影響力,相機標定,目標檢測、識別、跟蹤的介面使用起來十分方便。使用OpenCV庫完全可以做出這張圖展現的效果。
圖片出處:https://www.nvidia.com/en-us/gtc/sessions/self-driving-and-ai-cars/
Tips:
請至少購買版本為2.4以上的教程學習OpenCV,但目前市面上買得到的OpenCV中文教程都講的太淺,甚至連經典的Kalman Filter都不介紹。我推薦直接學習英文版的 Learning OpenCV3。
奉上電子版,講解很詳細,每次列印一章閱讀,循序漸進。
鏈接:http://pan.baidu.com/s/1dE5eom9 密碼:n2dn
libQGLViewer
libQGLViewer是大名鼎鼎的 OpenGL 適配 qt 的一個庫,編程介面及方法與 OpenGL 大同小異,我們經常在各大無人駕駛公司宣傳畫上看到的環境感知信息的顯示,就完全可以用 QGL 做出來。
圖片出處:http://open.163.com/movie/2015/10/U/U/MB1G83TR9_MB1GMCRUU.html
Tips:
學習 libQGLViewer 不需要購買任何教材,官網及壓縮包內的 example 就是最好的老師,按照官網的tutorial,把每個例子實現一遍,就基本入門了。
官網鏈接:libQGLViewer Home Page
Boost
Boost庫是有著「C++准標準庫」之稱。這個庫裡面有大量的」輪子「,對於C++開發者來說,方便直接調用,避免重造"輪子"。
Tips:
Boost是基於標準C++開發,其構造用盡精巧手法,不要貿然費時研讀,找一份和 Boost 庫相關的(電子或紙質)書,把目錄讀一遍,大致知道裡面有哪些功能即可,需要時就某一個點,花時間做研究。
QCustomplot
除了上面提到的libQGLViewer外,還可以通過平面圖的形式顯示車載感測器的信息。鑒於 qt 內部只提供了基本的直線、圓等繪圖工具,使用起來並不是很方便,因此QCustomplot誕生了。簡單地調用API,然後把想要顯示的數據作為參數輸入進去,就可以繪製出下面這些很棒的圖形。而且可以很方便地拖動和縮放。
圖片出處:QCustomplot Home Page
下面是我在實際開發過程中,使用 QCustomplot 顯示的部分感測器信息。
Tips:
官網提供了該庫的源碼下載,你只需要在你的工程中導入 .cpp 和 .h 文件即可。跟著官網提供的 tutorials 學習,可以快速上手。對照著example中的常式寫代碼,可以快速把自己的數據變成可視化圖像。
LCM(Lightweight Communications and Marshalling)
團隊開發軟體必然存在程序(多進程)的通信問題,多進程通信的方式很多,也各有優缺點,使用起來就見仁見智了。2014年12月MIT公布了他們在美國DARPA機器人挑戰賽中使用到的信號傳輸機制LCM,出處:MIT releases LCM driver for MultiSense SL。
LCM含多種語言如java,c++等專門針對實時系統在高帶寬和低的延遲的情況下進行消息發送和數據封送處理。它提供了一個發布/訂閱消息模型、自動封裝/解封代碼生成工具含多種編程語言版本。這個模式和 ROS 現在節點間的通信方式很類似。
Tips:
LCM兩個進程間通信的demo官網上有源代碼,按照官網上的tutorial就能快速建立屬於你自己的LCM通信機制。
官方網站:LCM Projcect
Git Github
Git是團隊開發不可缺少的版本控制工具,大家在寫論文時肯定每天一個版本,如果沒有特別標註每個版本改了些什麼時間久了就會忘記。寫代碼更是如此。
使用Git可以極大地提高多人開發的效率,而且版本管理規範,代碼追溯起來十分方便。
Github在軟體開發領域如雷貫耳,需要某些代碼時,直接上去搜索即可。
Tips:
目前世面上介紹Git的書,讓人看起來十分吃力,而且對細枝末節的東西介紹地太過深入,讓人無法快速上手。
於是我要強烈推薦Git入門的教程:廖雪峰的Git教程,淺顯易懂,而且還配合圖文+視頻,簡直良心。
以上基本介紹完了開發所需要的東西,掌握好這些東西,就可以來我司面試了。
———————分割線———————
現在有了自動駕駛開發的工具,那麼再掌握一些自動駕駛開發的流程就如虎添翼了。
下面開始介紹做自動駕駛開發過程需要了解的基礎知識。
自動駕駛開發流程
必學指數:
易學指數:
先分享某創業公司公開的一份PPT
鏈接:http://pan.baidu.com/s/1qYoJcUo 密碼:o3wx
實現一個智能駕駛系統,會有幾個層級:
感知層 → 融合層 → 規劃層 → 控制層
更具體一點為:
感測器層 → 驅動層 → 信息融合層 → 決策規劃層 → 底層控制層
各個層級之間都需要編寫代碼,去實現信息的轉化。
最基本的層級有以下幾類:採集及預處理、坐標轉換、信息融合
採集
感測器跟我們的PC或者嵌入式模塊通信時,會有不同的傳輸方式。
比如我們採集來自攝像機的圖像信息,有的是通過千兆網卡實現的通信,也有的是直接通過視頻線進行通信的。再比如某些毫米波雷達是通過CAN匯流排給下游發送信息的,因此我們必須編寫解析CAN信息的代碼。
不同的傳輸介質,需要使用不同的協議去解析這些信息,這就是上文提到的「驅動層」。
通俗地講就是把感測器採集到的信息全部拿到,並且編碼成團隊可以使用的數據。
預處理
感測器的信息拿到後會發現不是所有信息都是有用的。
感測器層將數據以一幀一幀、固定頻率發送給下游,但下游是無法拿每一幀的數據去進行決策或者融合的。為什麼?
因為感測器的狀態不是100%有效的,如果僅根據某一幀的信號去判定前方是否有障礙物(有可能是感測器誤檢了),對下游決策來說是極不負責任的。因此上游需要對信息做預處理,以保證車輛前方的障礙物在時間維度上是一直存在的,而不是一閃而過。
這裡就會使用到智能駕駛領域經常使用到的一個演算法——卡爾曼濾波。
坐標轉換
坐標轉換在智能駕駛領域十分重要。
感測器是安裝在不同地方的,比如毫米波(上圖中紫色區域)是布置在車輛前方的;當車輛前方有一個障礙物,距離這個毫米波雷達有50米,那麼我們就認為這個障礙物距離汽車有50米嗎?
不是的!因為決策控制層做車輛運動規劃時,是在車體坐標系下完成的(車體坐標系一般以後軸中心為O點),因此毫米波雷達檢測到的50米,轉換到自車坐標系下,還需要加上感測器到後軸的距離。最終所有感測器的信息,都是需要轉移到自車坐標系下的,這樣所有感測器信息才能統一,供規劃決策使用。
同理,攝像機一般安裝在擋風玻璃下面,拿到的數據也是基於攝像機坐標系的,給下游的數據,同樣需要轉換到自車坐標系下。
自車坐標系:拿出你的右手,以大拇指 → 食指 → 中指 的順序開始念 X、Y、Z
然後把手握成如下形狀:
把三個軸的交點(食指根部)放在汽車後軸中心,Z軸指向車頂,X軸指向車輛前進方向。
各個團隊可能定義的坐標系方向不一致,只要開發團隊內部統一即可。
信息融合
信息融合是指把相同屬性的信息進行多合一操作。
比如攝像機檢測到了車輛正前方有一個障礙物,毫米波也檢測到車輛前方有一個障礙物,激光雷達也檢測到前方有一個障礙物,而實際上前方只有一個障礙物,所以我們要做的是把多感測器下這輛車的信息進行一次融合,以此告訴下游,前面有一輛車,而不是三輛車。
當然,信息融合中還涉及時延的補償,具體如下:
對於一些大容量數據,確實不能以很高的頻率發送(比如10Hz,100ms才發送一次)。這樣的數據對高速行駛中的汽車來說,肯定會有偏差。
這些偏差我們算一下:
感測器檢測到前方有一個靜止障礙物,我100ms之後收到了這個感測器的信息,告訴我這個障礙物離我有30m。如果自車這時正以60KM/h的速度行駛,則這100ms,自車行駛了60 / 3.6 * 0.1 = 1.67m。
所以實際上這個障礙與我的距離為31.67m。
所以面對通信中產生的時延問題,尤其是低頻率的信息,一定要考慮時延產生的後果。
時延補償的另外一個問題:程序處理時,不能保證任何時候都是按固定的頻率發送的。
這取決於硬體系統當時的環境,可能溫度高了,性能下降,處理速度變慢,10Hz 的發送頻率變成了 8Hz。如果我們的程序還是按固定的100ms去計算時延導致的偏差,必定會出現計算錯誤的情況。
因此我們需要引入時間戳,即在我們發送的信息中加入當前的系統時間,通過兩幀數據的時間差來判斷接受到的信號到底延時了多久,這種方式比根據頻率判斷來得更準確。
決策規劃
這一層次主要設計的是拿到融合數據後,如何正確做規劃。
規劃包含縱向控制和橫向控制。
縱向控制即速度控制,表現為 什麼時候加速,什麼時候制動。
橫向控制即行為控制,表現為 什麼時候換道,什麼時候超車等。
個人對這一塊不是很了解,不敢妄作評論。
———————分割線———————
微信公號:自動駕駛乾貨鋪
知乎專欄:無人駕駛乾貨鋪
更多無人駕駛的內容:
互聯網公司和汽車企業都在開發自動駕駛,你更看好誰?
自動駕駛汽車涉及哪些技術?
高精地圖對自動駕駛來說有多重要?在自動駕駛上和一般的導航地圖有什麼區別?
無人駕駛,個人如何研究?
更多段子:
你珍藏了哪些高級黑的段子?
你這麼好看,一定很會點贊~
硬體我不懂,軟體方面推薦直接關注我寫的總結文章,或者去Udacity上課。附上我的第一篇入門級車道檢測。
作者:Fei Xia
鏈接:https://zhuanlan.zhihu.com/p/25354571
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
從零開始學習無人駕駛技術 --- 車道檢測
前言
個人興趣愛好,最近在學習一些無人駕駛相關的技術,便萌生了循序漸進的寫一系列文章的想法,這是第一篇。文章主要會以Udacity為主線,綜合自己在學習過程中搜集的各種材料,取其精華,補其不足,力求通俗易懂,理論明確,實戰有效,即作為一個學習總結,potentially又可以幫助對無人駕駛有興趣但是零基礎的朋友們 —— 注意這裡的零基礎是指未接觸過無人駕駛領域,本系列還是需要一些簡單的數學和機器學習知識。
因為本文是從零開始的第一篇,這裡的車道檢測是基礎版本,需要滿足幾個先決條件:(1)無人車保持在同車道的高速路中行駛(2)車道線清晰可見(3)無人車與同車道內前車保持足夠遠的距離。
TLDR (or the take-away)
一個基礎版的車道檢測步驟主要分為以下幾點:
- Gray Scale Transformation
- Gaussian Smoothing
- Canny Edge Detection
- ROI (Region of Interest) Based Edge Filtering
- Hough Transformation
- Lane Extrapolation
代碼:Github鏈接
最後的效果如下視頻所示,其中紅線表示自動檢測到的車道。
車道檢測基礎版 - 騰訊視頻
從圖片開始談起
無人車往往配備有數個camera,常見的情況是有一個camera固定在車的前方,用來perceive前方道路情況,生成視頻。計算機對該視頻進行分析,綜合其他sensor的信息,對車輛行為進行指導。視頻是由圖片組成,如果能夠成功檢測圖片上的車道,那我們就幾乎解決了車道檢測問題。下面是一張車輛行駛過程中的圖片,讓我們動手吧!
import matplotlib.image as mplimg
img = mplimg.imread("lane.jpg")
Gray Scale Transformation
這個變換比較簡單,是將RGB圖片轉換成灰度圖片,用來作為Canny Edge Detection的輸入。
import cv2
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# Note that if you use cv2.imread() to read image, the image will
# be in format BGR.
Gaussian Smoothing
Gaussian Smoothing是對圖片apply一個Gaussian Filter,可以起到模糊圖片和消除雜訊的效果。其基本原理是重新計算圖片中每個點的值,計算時取該點及其附近點的加權平均,權重符合高斯分布。下圖左側展示了一個kernel_size = 5的Gaussian Filter,55是高斯分布的中心點,341是網格中所有值的和。假設網格矩陣為,圖片為,新圖片為,則:
Gaussian Filter是一種低通過濾器,能夠抑製圖片中的高頻部分,而讓低頻部分順利通過。那什麼是圖片的高頻部分呢?下圖給出了一個比較極端的例子。愛好攝影的朋友們都知道相機ISO適當時能夠得到右側圖片,畫質細膩;如果ISO過大,就會導致產生左側圖片,畫質差,噪點多。這些噪點就是圖片中的高頻部分,表示了像素值劇烈升高或降低。
介紹完了Gaussian Filter,現在可以將其應用到我們的灰度圖片上:
blur_ksize = 5 # Gaussian blur kernel size
blur_gray = cv2.GaussianBlur(gray, (blur_ksize, blur_ksize), 0, 0)
Canny Edge Detection
John F. Canny在1986年發明了Canny Edge Detection技術,其基本原理是對圖片中各個點求gradient,gradient較大的地方往往是edge。Canny Edge Detection精妙的地方在於它有兩個參數:low_threshold和high_threshold。演算法先比較gradient與這兩個threshold的關係,如果gradient &> high_threshold,就承認這是一個edge point;如果gradient &< low_threshold,就斷定這不是edge point;對於其他的點,如果與edge point相連接,那麼這個點被認為也是edge point,否則不是。
canny_lthreshold = 50 # Canny edge detection low threshold
canny_hthreshold = 150 # Canny edge detection high threshold
edges = cv2.Canny(blur_gray, low_threshold, high_threshold)
ROI Based Edge Filtering
Woohoo! It"s awesome! 經過了Canny Edge Detection,我們發現物體的輪廓都被檢測到了!但是似乎東西有點兒太多了… 沒關係,還有一個重要的條件沒有用:camera相對於車是固定的,而無人車相對於車道的左右位置也是基本固定的,所以車道在camera視頻中基本保持在一個固定區域內!據此我們可以畫出一個大概的Region of Interest (ROI),過濾掉ROI之外的edges。
def roi_mask(img, vertices):
mask = np.zeros_like(img)
mask_color = 255
cv2.fillPoly(mask, vertices, mask_color)
masked_img = cv2.bitwise_and(img, mask)
return masked_img
roi_vtx = np.array([[(0, img.shape[0]), (460, 325),
(520, 325), (img.shape[1], img.shape[0])]])
roi_edges = roi_mask(edges, roi_vtx)
Hough Transformation
目前看起來我們似乎已經得到了車道線了呢,然而…並沒有! 因為最終目標是得到exactly兩條直線!而目前現在圖中不僅有多條線,還有一些點狀和塊狀區域,Hough Transformation的目的就是找到圖中的線。
下圖中左側是image space,中間和右側是Hough space。先看左側和中間的圖(右側圖見本節備註),image space中的一個點對應Hough space的一條線;image space中的兩個點()對應Hough space的兩條相交線,且交點對應的線必經過image space的這兩個點。
那麼,如果Hough space中有多條線相交於一點,則在image space中對應的那些點應位於同一條線上,例如:
在實際操作中,我們往往將Hough space劃分為網格狀,如果經過一個格子的線的數目大於某threshold,我們認為這個經過這個格子的線在原image space對應的點應在同一條線上。具備了這些知識,我們可以用Hough Transformation來找線啦!
# Hough transform parameters
rho = 1
theta = np.pi / 180
threshold = 15
min_line_length = 40
max_line_gap = 20
def draw_lines(img, lines, color=[255, 0, 0], thickness=2):
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(img, (x1, y1), (x2, y2), color, thickness)
def hough_lines(img, rho, theta, threshold,
min_line_len, max_line_gap):
lines = cv2.HoughLinesP(img, rho, theta, threshold, np.array([]),
minLineLength=min_line_len,
maxLineGap=max_line_gap)
line_img = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)
draw_lines(line_img, lines)
return line_img
line_img = hough_lines(roi_edges, rho, theta, threshold,
min_line_length, max_line_gap)
備註:如果image space中兩個點,則其形成的直線斜率無限大,無法用中間的圖表示,可以採用右側的極坐標表示方式。
Lane Extrapolation
Almost there! 現在我們要根據得到的線計算出左車道和右車道,一種可以採用的步驟是:
- 根據斜率正負劃分某條線屬於左車道或右車道
- 分別對左右車道線移除outlier:迭代計算各條線的斜率與斜率均值的差,逐一移除差值過大的線
- 分別對左右車道線的頂點集合做linear regression,得到最終車道。
因為這部分代碼有點兒多,就不貼在這裡了,請參見我的Github代碼。結果如下:
最最後,我們將結果和原圖疊加:
cv2.addWeighted(img, 0.8, line_img, 1, 0)
圖片任務完成!
回到視頻上
現在我們將前面的代碼打個包放到叫process_an_image的函數中,然後
from moviepy.editor import VideoFileClip
output = "video_1_sol.mp4"
clip = VideoFileClip("video_1.mp4")
out_clip = clip.fl_image(process_an_image)
out_clip.write_videofile(output, audio=False)
將代碼應用到三個不同的video上,看看結果!
車道檢測基礎版 - 騰訊視頻
車道檢測基礎版2 - 騰訊視頻
車道檢測基礎版3 - 騰訊視頻
注意:對於不同的情況,有些參數可能需要調節,第三個視頻的處理需要一些額外的操作,會在我的Github代碼中有具體描述。
參考資料
1. High ISO Noise Reduction
2. Gaussian Smoothing
你如果感興趣的話可以參加我們景略集智最近聯合KITTCAMP無人駕駛社區的一個比賽。
個人認為「悶頭苦學」不如先「做出點小玩意」,這樣你對大部分環節也會有個清晰的認知:我該在這個階段幹什麼,而不是一頭霧水。
裡面會有不少大牛,自由組隊,抱好大腿即可。基本上報名參與了就差不多能獲得一個充電寶了。。努努力就價值千元的機械鍵盤,再加把勁就是1070TI顯卡了。
我來稍微說一下我的一些相關經驗。
我說在實驗室一直從事無人駕駛研究,最多人的時候有9個phd,4個博士後,我們做了3年,在slam上做出了許多成果,發表了不少論文,然而這只是涉及了無人駕駛的一小部分而已。
然而搞了這麼多年,去了真正從事無人駕駛的公司,才發現之前搞的雖然技術水平很高,但是根本應用不了。無人駕駛涉及車輛定位,物體檢測,跟蹤,路徑規劃等等一系列東西。現在60人的團隊忙死忙活,才能按部就班。而且團隊里哪一個不是諸如斯坦福mit的phd畢業。
總之,真正無人駕駛,沒有雄厚的財力和技術,弄不了的。需要學習kalman filter,particle filter,路徑規劃,避障演算法等等。但是非常不建議自己研究無人駕駛技術,工程非常複雜且危險。而且需要大量的資金。可以考慮從一些點切入,比如路標識別,全景視覺。
援引Udacity無人駕駛納米學位在讀學員王楓的答案:
我對汽車行業沒有背景,所以引用了該問題下面目前獲票最多的陳光(自動駕駛/段子手/車輛工程)對智能駕駛的概述:
「實現一個智能駕駛系統,會有幾個層級:感知層 → 融合層 → 規劃層 → 控制層。更具體一點為:感測器層 → 驅動層 → 信息融合層 → 決策規劃層 → 底層控制層。」
我還十分同意他的斷言「個人做無人駕駛研究,在沒有大資金支持的情況下,就不要考慮基於實車做研究了。斷了從硬體方面著手做研究的念頭,我們直接看看軟體方面」。
其實智能駕駛並不是一個新概念,在出廠的中高端汽車中早就配有了輔助駕駛系統,專有名詞叫高級輔助駕駛(ADAS)。主要功能是提醒駕駛員可能發生的危險,提前進行預警,提高駕駛的安全性。 車上配有各種昂貴的感測器幫助汽車獲得車身周圍的狀況,然後反饋到汽車電子系統進行計算。我們現在所說的最火熱的應該是如何將深度學習之圖像識別 + 計算機視覺把人眼看見的東西用機器來解決掉。這才是ADAS沒有涉足的地方。
而這一方面個人研究就大有可行空間。簡單來說,先去學一下車道線識別,再去學一下路標識別,再去學一下車輛檢測與跟蹤。有了這些基礎,就可以去探索更廣闊的空間,進入目前最前沿的計算機視覺領域,如圖像檢測,圖像分割,圖像標註。到此,基本上一個無人駕駛計算機視覺領域top10%的專家就煉成了,去公司應聘可以打遍天下無敵手了,面試主管看你基本上是不明覺厲。車道線識別,路標識別,車輛檢測與跟蹤的學習研究我強烈推薦優達學城的《無人車駕駛》課程,絕對的低進高出超性價比的學習捷徑。後面進階的圖像檢測,圖像分割,圖像標註那就得靠「師傅領進門修行在個人」了。它們到底是個什麼東東,推薦閱讀知乎上元峰的《深度學習在計算機視覺領域的前沿進展》。
最後但也最重要的建議是,學一樣東西一定要搞懂啊!搞懂懂不懂!Udacity是一個非常好的學步工具,課程設計由衷地希望學員畢業後能夠最後走向自由的研究空間,而且昨天剛發布了無人駕駛入門課程,只要會點兒編程就能學習無人車開發。
最後祝大家個人研究順利,順便推銷我自己的專欄《智能進化》,我將陪著大家一起把個人研究走下去!
無人駕駛入門 | Udacity 報名和矽谷同步開放,9月30日截止。現在報名還有優惠碼,需要的童鞋可以私信優達菌~
先說一下答主的情況。
答主的學校是工程強校理工技術這種偏應用的做的也特別好,然並卵我校沒有自動駕駛實驗室和實驗基地,我校只有玉米地……
專門的自動駕駛實驗室請移步隔壁密西根(安娜堡)。
然而這不意味著我校的學生不能選擇自動駕駛作為研究甚至論文的課題。目前來說我看到的解決方案有兩個,一個是交叉領域找課題(我老闆建議我這麼做,自動駕駛和另一個領域結合),另一個就是通過硬軟體模擬對某一特定課題進行研究。
題主你要真的想試試你拿樹莓派加RC Car搭一個自動小車試試你就知道大概是個什麼難度了。哦對了,這個屬於簡化的不能再簡化的模型,笑。無人駕駛,首先你要明白的是人是如何駕駛的。
以汽車為例。
人本身是一個反饋控制系統,對於駕駛這件事,眼睛作為感測器是整個迴路裡面無比重要的一環(當然大腦也不是不重要,控制理論裡面強調的最多的是閉環,也就是有一個感測器在整個迴路中扮演反饋的角色),大腦作為控制器,其控制的邏輯基本可以用模糊控制來匹配,最後,執行器,通常是手腳,方向盤,油門剎車等等。
所以簡單的講,按照上述流程,你要學習的是
1.怎樣用機器代替人眼的視覺,這個攝像頭可以做到,然後怎樣用機器判斷接收的圖像中的信息,比如至少要知道路在哪吧,至少要看到前方的障礙物吧。
2.如何用機器代替人腦。這個就複雜了,因為,人工智慧火了這麼多年,到現在最高水平的AI能夠達到的智力水平,恐怕比我們每個能坐在電腦前回答知乎里各種問題的各位知友的水平都低。再者,姑且不說AI,單單讓機器完成駕駛過程中對目標,障礙物的判斷就要費很大的功夫。
3.怎樣用機器代替人的四肢。這一步在整個體系裡面是相對簡單的了,因為執行器就是給信號有反應就可以,常用的執行器基本就是電機,液壓,配上相應的機械構件就ok了。
所以,如果真正要你去做一輛自動駕駛的汽車的話,呵呵,那可真是要學到老了。
不過,如果你說的自動駕駛不是一個真正能拿到汽車上用的技術,而是一個概念,換個說法,如果想用最簡單的硬體軟體去實現的話,很簡單,淘寶上去搜「單片機小車」,然後你就會發現那些業界良心賣給你一輛腳掌大小的模型車的時候,附送的資料已經完全夠你自己做一輛自動駕駛的車了。
我會說國內自動化專業的大學生畢業設計基本是上一段里講的故事么,呵呵。無人駕駛作為一個系統,涉及的範圍非常廣泛,從大方面說主要有:
- 智能交通基礎設施
- V2V
- 自主感知決策汽車
目前自主感知決策吸引了大部分的注意,僅就汽車的自主感知決策來說,個人研究主要就包括兩塊,一塊是系統工程方面,研究如何做一個感知完備、性價比高、決策智能的系統,這塊的特點是會涉及到很多實際設備,有很多繁瑣的工作,硬體開銷比較大,而且有一定的危險性,一般個人是比較難單獨進行研究的。但是從目前的現狀來看,激光雷達、毫米波雷達、攝像機、TOF相機、GPS、IMU等感知定位設備的優化組合、相應演算法的適配、多感測器融合還是很具有探索價值的,是一個很有價值的方向。
另一塊是無人駕駛的演算法研究,這塊主要就是進行各個通用演算法的研究,跟具體的設備關係不太大,是比較適合個人學習研究的點。具體來說無人駕駛涉及的演算法主要有:定位演算法、建圖演算法、感知演算法、預測演算法、決策演算法、控制演算法等,每種演算法又有很多細分方向,比如定位建圖就包括是高精度(0.1m)還是中等精度(1m),對精度要求不同會導致最終的設備演算法差別非常大,並且對整個系統的後續流程產生影響,演算法主要包括odometry、mapping、slam、gps+imu、semantic segmentation、feature、matching、optimization等(camera、lidar、rgbd);感知演算法主要輸出感興趣目標的詳細屬性供預測決策用,包括目標檢測、跟蹤、識別、重建,其中每個模塊根據設備速度性能等會有很多很多的研究方向;預測演算法主要關注根據目標的歷史軌跡屬性類別和自然的統計先驗預測目標的行為;決策演算法(無V2I和V2V)主要解決在當前的感知置信度、感知結果的情況下的給出最優的車輛軌跡、速度等控制信息,同時考慮效率、安全和舒適性等。
作為對智能駕駛行業的業餘愛好者,看到了大家很多的技術貼,這次我想通過自己對這個行業的局部了解,進而從行業的角度作答,希望對大家有所幫助。
這次的行業報告我從三個方面來進行闡述:行業的宏觀形勢及現狀;行業競爭與細分領域梳理;行業趨勢展望;
我們現在的階段處在2.0-3.0階段,像今年的最新款奧迪A8在60km/h的條件下,就做到了無人控制的無人駕駛。
智能駕駛可以分為兩大類,一方面是ADAS(高級輔助駕駛),更進一步是完全的無人駕駛,目前來講,已經有很多巨頭和細分領域的小公司已經走進這個行業並且已經有所突破。
智能駕駛行業的的市場規模與整車市場的規模是密不可分的,並且像智能駕駛系統在技術的不斷優化和成本控制方面的不斷進步,會直接導致智能駕駛佔比的上升,進而會有更大規模的資金和人才進入這個行業,取得更加快速的發展。
這是對整個智能駕駛模塊的分析,其實我們國內的研究方向主要集中在感應識別和地圖等模塊組件方面,在這一方面我們國內的發展起點比較高,發展也比較迅速,而像是在決策模塊,涉及到整車控制,像是車企巨頭賓士,奧迪以及控制方案供應商BOSCH等公司在這個行業已經深耕好多年,國內企業難以在短期內實現突破。
從以上兩頁的投融資數據分析也可以看出,這個行業的發展偏向中早期,並且整體的投資方向集中在了ADAS演算法類公司,平均每輪的融資規模達到了3200萬左右,在我之前看到的去年11月份的數據,到2016年底整體的融資規模是4.6億,而到了今年8月份,融資規模達到了16.4億,並且資本還有進一步進入的趨勢的,也可以看出來,在現在所謂的資本寒冬的情況下,資本市場的投資方向已經開始向科技創業的方向轉彎。這一趨勢會在之後的發展中日益明顯。(還有不得不說的兩個激光雷達的公司,一個是禾賽科技,一個是思嵐科技,激光雷達作為最精密的測距感測器,這兩個公司在上半年都獲的了上億規模的融資,和賽科技在去年十月底就做出了面向自動駕駛的32線激光雷達,今年四月份做出了面向自動駕駛的40線混合固態雷達,7月份加入了百度的Apollo計劃,由於激光雷達在大規模生產下的成本是可以控制的,所以在這方面有著很廣闊的發展前景;而思嵐科技,在基於激光的即時定位與地圖構建導航系統(SLAM)所建立的領先優勢下,激光雷達有望在之後幾年內實現成本的大規模下降。)
這是我對整個行業巨頭在該行業的布局及產業鏈圖譜現狀的梳理。
從整體的行業競爭和細分領域的梳理來看,機會存在於更低成本,更高效率,更高精確度的感知層的軟硬體供應商。
這是我對關於激光雷達的相關公司和ADAS演算法類的創業公司的梳理,對於這個行業,產品和團隊主導著公司的發展。激光雷達類的公司我之前已經又簡單的概述,這裡,我對ADAS演算法公司做簡單的概述:
智駕科技:今年年底將推出L3級別的自動駕駛系統;
Maxieye:國內最早拿到前裝量產訂單的ADAS企業;主要面向汽車市場的單目攝像頭的車載視覺ADAS產品,類似於Mobileye;
Momenta:數據驅動駕駛決策,類似於建立一個擁有1000億公里的智能司機,通過對海量駕駛車軌跡的學習,演算法可以根據當前環境感知高精度的地圖信息,做出駕駛決策。
佑駕科技:視覺感知技術,較低成本採集豐富的環境信息,在用戶授權下,獲取每台設備採集的數據,通過深度神經網路技術進行自我訓練,從而不斷優化演算法,。
圖森未來:基於計算機視覺的深度學習,以攝像頭為主要感測器。
中科慧眼:雙目立體視覺
縱目科技:計算機視覺,ADAS 360度無盲區
智行車科技:聚焦於限定區域內的低速無人駕駛垂直領域,特別是無人物流配送車和無人作業車。
馭勢科技:感知(汽車之眼);認知和決策(駕駛大腦);控制演算法和執行(轉向,加速,制動)
極目科技:手機app→感測器→手機支架
這是我對智能駕駛行業的個人分析總結,也是自己寫了兩天的關於該行業的分析報告,希望對大家準備入此行的大家有所幫助,我也是智能駕駛行業的愛好者,歡迎大家勾搭交流。
寫了這麼多,看到這裡,還不給我碼字碼了好幾個小時的我點個贊!!!
能看到這裡也辛苦你們了!
單槍匹馬搞產品那確實是不行。 但是一個人搞研究確實是可以! 首先你要有虛擬的車,簡單的是v-rep prescan 複雜到carmaker CarSim。 其次要有演算法,這就是一系列的知識積累。最重要的是各種工具完全熟悉,Matlab VS Labview 你應該全部熟練掌握。你就開始吧,真的可以,至少你可以搭個平台出來給你自己用,至少你能完全模擬出特斯拉level2的能力。要做到平時模擬,上車就能用,還確實不是一般戰士可以搞定的。
個人研究太難了。無人駕駛車輛的研究主要涉及
- 車輛的改裝,硬體控制電路的設計。
- 多種感測器的信息融合,主要是攝像頭、激光雷達、聲納、GPS等感測器。
- 車輛行駛路徑規劃,躲避各種靜態和動態額障礙物。
- 控制車輛跟蹤規划出來的路徑。
車輛行駛的工況非常複雜,每項研究需要處理的任務都比較多,夠寫好幾個博士論文的了。
個人,建議選取某一個方面來研究。「無人駕駛作為人工智慧重要的分支領域有望重迎風口」
工信部、國家發改委、科技部前段時間聯合發布的《汽車產業中長期發展規劃》提出,到2020年,汽車駕駛輔助、部分自動駕駛、有條件自動駕駛系統新車裝配率要超過50%,網聯式駕駛輔助系統裝配率要達到10%。而到2025年,高度和完全自動駕駛汽車將進入市場。
# 無人駕駛迎來五大重磅利好 #
·美眾議院本周將對無人駕駛汽車 立法提案進行投票
·高通發布汽車晶元 組劍指無人駕駛
·沒踏板沒方向盤!大眾將推出微型無人駕駛汽車
·三星無人駕駛汽車獲得加州路試許可
·百度無人駕駛迎里程碑事件 2019將推量產車型
無人駕駛相比傳統的汽車市場將是一個全新的市場,新的商業模式和用戶需求都會被重新創造出來。包括車載 運算平台、感測器、高精度地圖、無人汽車 運營商、自動駕駛演算法供應商、通信巨頭都將佔據重要的位置,並締造屬於自己的商業模式。
# 無人駕駛將迎商業化元年 #
從各大車企與互聯網巨頭公布的計劃看,2020年將成為無人駕駛車輛商業化元年,並從此進入爆發增長。據IHS預測,2025 年全球無人駕駛汽車銷量將達到23萬輛,2035年將達到180萬輛,屆時無人駕駛汽車保有量將達到5400萬輛。其中,北美市場上的份額將達到29%,中國為24%,西歐為20%。
產業鏈布局
無人駕駛汽車的產業鏈研究可以分為兩個階段,一個是單車智能階段,另一個是車聯網階段。
單車智能是無人駕駛技術的基礎
單車智能的技術核心是使汽車機器人化,通過綜合應用毫米波雷達,激光雷達和光學攝像頭等多種感測器使汽車感知車身周圍的環境。車載駕駛計算機再根據環境的變化,結合CAN 匯流排上收集的汽車工況信息,計算出下一秒的控制策略。
單車智能又可細分為環境感知系統、定位導航與路徑規劃系統、中央處理單元和運動控制系統四大模塊。
【環境感知系統相關企業】
部分企業信息
【定位導航與路徑規劃系統相關企業】
部分企業信息
【中央處理單元相關企業】
部分企業信息
【運動控制系統相關企業】
部分企業信息
車聯網是推進無人駕駛技術發展的催化劑
車聯網的終極目是組建感測器網路,實現數據的無縫傳輸,依託雲計算平台實現全網路的無人駕駛。
車聯網的發展將伴隨著車內網(In-Vehicle Network)的數據互通與向外延伸,輔之以車際網( V2x)的數據交換,再結合移動互聯(Mobile Internet)的數據全面貫通,並向著全網路無人駕駛的終極目標全速發展。
部分企業信息
投資動態分析
據參照系企業資料庫顯示,無人駕駛汽車領域的相關企業共有140家。下面將從最受機構追捧企業,投資機構布局,企業資本市場狀態和地區分布這四方面來做具體的分析。
最受投資機構追捧企業
最受投資機構追捧的企業是深迪半導體(上海)有限公司,投資機構介入數達12家,包括復聚投資,深創投,賽伯樂投資,架橋資本,德豐傑基金,阿甘投資等。
投資機構布局
從投資機構布局上,奇虎360投資在無人駕駛領域的投資企業最多,共有5家。其次是中投公司和無錫創業投資集團,分別投資了3家企業。
企業資本市場狀態
140家無人駕駛行業領域的企業中,公開資本市場狀態的企業共有60家。公開資本市場狀態的企業中,A股上市的有28家,新三板上市的有30家企業。
60家公開資本市場狀態企業分布
28家無人駕駛領域A股上市企業
區域分布
從無人駕駛行業關聯企業的市級分布情況來看,北京市有多達31家無人駕駛相關行業領域企業,位列第一。其次為深圳市,共有24家相關企業。其中杭州市有10家,位列第四。
企業市級布局(前十)
*數據基於參照系企業資料庫
完整版研究報告請戳鏈接:
閱讀原文
偶然發現這個問題,剛好今天去德國一個中學拍了一段視頻,無人駕駛加後向停車,用的是類似樂高的材料加了電池和感應器和控制器。 研發組成員是一群10歲到16歲的孩子。
為了便於無人駕駛研究者交流學習,並且及時了解行業發展,深藍學院參與創建了「無人駕駛技術交流」微信群。群內邀請學術界、企業界重量級嘉賓入群:
(1)教育部長江學者、西安交通大學薛建儒教授;
(2)清華大學猛師智能車團隊負責人張新鈺老師;
(3)圖森未來首席科學家王乃岩老師;
(4)環宇智行創始人、武漢大學李明老師;
(5)真機智能創始人劉智勇博士;
(6)Momenta研發總監孫剛;
(7)谷歌、百度、商湯科技、馭勢科技、Momenta、地平線、四維圖新等知名企業工程師;
(8)CMU、MIT、清華大學、西安交通大學、同濟大學等國內外知名高校博士、碩士生。
想要加群交流的夥伴,請添加深藍學院助教微信(shenlanedu),邀請入群(僅限技術工程師吆)。
單從問題看,基本可以判斷題主對無人駕駛技術並不熟悉。對於無人車技術的概述網上已經有不少很不錯的文章,我覺得也沒有再重複。對於很多關注這個問題的人來說我覺得一個比較可行的學習方向是看一看MITRaceCar(http://fast.scripts.mit.edu/racecar/)這類項目,其他學校諸如伯克利,賓大,ETH也有類似的東西,網上搜搜就能找到。大體上這些項目是用RC車模來實現完整的感知、規劃、控制,運行環境簡化了很多,同時整體硬體成本相對可控,能夠涉及的理論知識也比較全面,對於找更具體的研究方向很有幫助。實際的無人車涉及到的工程、技術問題太多,個人很難全面的深入研究學習,還是需要有個基本了解之後深入某一個小方向學習,所以我覺得這種RC車模項目對於個人學習演算法非常現實。對於絕大多數學習者這種硬體平台不太會成為學習的瓶頸。甚至可以說,如果水平達到了,完全可以把這種小車的軟體架構的跟實際無人車相當(當然複雜度的差別還是有的,但是達到了這種水平我覺得轉入做無人車的團隊不會有很多問題)。(幾年前的問題不知道還有幾個人會看我的回答,但是如果有感興趣的同學可以進一步交流,靠一個回答甚至一篇文章都不太可能把這個問題真正回答清楚。)
無人駕駛, level 5這是一個話題太大了,方向太多了,感測器層,融合決策層,還需要跑大量的路試測試,目前國內小公司或者團隊,一般都會選擇視覺方向,自己開發演算法移植到晶元供應商提供的demo上,做個demo車,然後融資,然後....80%可能就沒有後續了
記得以前做機器人,主要模塊有灰度、紅外、指南針,後來發展到複眼、超聲來辨別方向和距離。
不成熟。
無人駕駛需要大家都無人駕駛哦。
推薦閱讀:
※用汽車發動機煎牛排這事靠譜嗎?
※大眾這兩年為什麼這麼有如此多的負面評價?
※OBD 介面能獲取的車輛數據具體有哪些?
※去 4S 店買車需要知道哪些內幕以避免被忽悠?
※從二手車評估切入二手車市場,是否可行?