1
本文作者: 新智駕 | 2017-06-24 20:31 |
雷鋒網(wǎng)按:2017 年 6 月 28 日至 6 月 29 日,「第四屆中國(guó)智能網(wǎng)聯(lián)汽車技術(shù)年會(huì)「(CICV 2017)將于上海舉辦。為提前引發(fā)行業(yè)對(duì)會(huì)議議題的思考和討論,雷鋒網(wǎng)新智駕與中國(guó)汽車工程學(xué)會(huì)合作組織公開課,邀請(qǐng)智能網(wǎng)聯(lián)汽車行業(yè)專家以及從業(yè)者分享相關(guān)成果和觀點(diǎn)。
MathWorks 今年推出自動(dòng)駕駛系統(tǒng)工具箱(ADST),借助這個(gè)新的工具箱提供的一系列設(shè)計(jì)和驗(yàn)證工具,能夠更快速地開發(fā)感知算法,并簡(jiǎn)化算法的驗(yàn)證工作。
本文內(nèi)容是 MathWorks 應(yīng)用工程師王鴻鈞在雷鋒網(wǎng)與中國(guó)汽車工程學(xué)會(huì)組織的公開課上的分享。由雷鋒網(wǎng)編輯與整理。
本期公開課要點(diǎn):
自動(dòng)駕駛系統(tǒng)工具箱簡(jiǎn)介
多目標(biāo)跟蹤原理
使用自動(dòng)駕駛系統(tǒng)工具箱設(shè)計(jì)多目標(biāo)跟蹤算法
使用基準(zhǔn)真值標(biāo)注工具分析計(jì)算結(jié)果
算法的實(shí)時(shí)驗(yàn)證技術(shù)
我們來回顧一下主動(dòng)安全和自動(dòng)駕駛系統(tǒng)的開發(fā)流程。
首先,我們會(huì)有一個(gè)系統(tǒng)的需求。然后,我們會(huì)在系統(tǒng)需求的基礎(chǔ)上進(jìn)行感知算法與控制算法的設(shè)計(jì)。感知算法包括了圖象、雷達(dá)、GPS 以及一系列傳感器的采集、目標(biāo)檢測(cè)以及感知算法。控制算法主要包括控制策略與控制執(zhí)行部分。
開發(fā)完算法之后,我們需要進(jìn)行系統(tǒng)的集成、測(cè)試和驗(yàn)證,然后自動(dòng)生成代碼,最后進(jìn)行代碼的測(cè)試和系統(tǒng)最終確認(rèn)驗(yàn)證。
傳感器融合與多目標(biāo)跟蹤的算法,其實(shí)是處于感知算法和控制算法中間的部分,對(duì)于控制工程師來說,我們需要對(duì)感知的傳感器信息進(jìn)行處理,得到用于控制的輸入信息。這就是我們的工作。
MathWorks 在最新的 2017A 版本中推出了一個(gè)全新的自動(dòng)駕駛系統(tǒng)工具箱,它希望為從事自動(dòng)駕駛以及主動(dòng)安全系統(tǒng)設(shè)計(jì)的工程師提供一系列加速自動(dòng)駕駛系統(tǒng)及主動(dòng)安全系統(tǒng)開發(fā)的工具。
主要包括三方面:
第一,測(cè)試與驗(yàn)證工具,包括真實(shí)值標(biāo)簽與場(chǎng)景生成;
第二,算法開發(fā)工具,包括傳感器融合與目標(biāo)跟蹤,和視覺系統(tǒng)設(shè)計(jì)工具;
第三,可視化工具,包括鳥瞰圖工具,以及雷達(dá)點(diǎn)云工具。
什么是目標(biāo)跟蹤?要進(jìn)行控制,首先必須從真實(shí)的世界采集到一定的信息,根據(jù)信息進(jìn)行閉環(huán)控制。
我們要從真實(shí)的世界進(jìn)行感知,感知部件包括一系列傳感器,比如雷達(dá)、視覺、激光雷達(dá)等等。然后,我們需要在感知的基礎(chǔ)上,對(duì)真實(shí)的世界進(jìn)行估計(jì)。
這就是我們要介紹的目標(biāo)跟蹤等相關(guān)算法和傳感器融合。
先介紹一些概念:
真實(shí)值指的是物體的實(shí)際運(yùn)動(dòng)。檢測(cè)指的是通過傳感器獲得的含有分類屬性的一系列目標(biāo)列表,檢測(cè)通常是根據(jù)時(shí)間的序列來完成的。
比如上圖右版部分 6 個(gè)時(shí)刻,我們分別檢測(cè)到了一系列目標(biāo):紅色和藍(lán)色代表車輛,綠色是行人。當(dāng)然,檢測(cè)的時(shí)候還可能出現(xiàn)一些問題,比如黑色的點(diǎn)就是我們沒有辦法對(duì)它進(jìn)行分類的目標(biāo),黃色的點(diǎn)屬于虛景,但是我們?cè)趯?shí)際檢測(cè)的時(shí)候是不知道的,所以我們也把它歸類為沒有分類的目標(biāo)。
其實(shí)從 T0 時(shí)刻一直到 T2、T3、T4、T5 時(shí)刻,我們對(duì)目標(biāo)檢測(cè)情況進(jìn)行一系列分析,通過跟蹤算法對(duì)物體進(jìn)行實(shí)際運(yùn)動(dòng)估計(jì)。
在 T0 時(shí)刻,我們成功檢測(cè)到了藍(lán)色的車輛與綠色的行人,那么我們就將它作為車輛與行人跟蹤。但是我們沒有檢測(cè)到紅色車輛,所以我們添加了兩個(gè)灰色的點(diǎn)進(jìn)行試探性跟蹤。
在 T1 時(shí)刻,我們觀測(cè)到了紅色車輛,所以我們現(xiàn)在確認(rèn)了灰色跟蹤當(dāng)中其中一個(gè)是車輛,但另一個(gè)沒有確認(rèn)的跟蹤,我們把它刪除了。
T3 時(shí)刻,我們并沒有觀測(cè)到行人,但是我們通過預(yù)測(cè),把被遮擋的行人目標(biāo)預(yù)測(cè)出來,也把它作為跟蹤的一部分。
T4 時(shí)刻,紅色和藍(lán)色的車輛離開了觀測(cè)范圍,所以我們對(duì)離開的目標(biāo)位置也進(jìn)行了預(yù)測(cè)。
最后,紅色和藍(lán)色的車輛都離開了觀測(cè)范圍,行人也穿過了馬路,于是我們完成了對(duì)這三個(gè)物體的跟蹤,我們將跟蹤從我們跟蹤的列表當(dāng)中刪除。
如果以上介紹過于抽象,我們?cè)?2017A 自動(dòng)駕駛系統(tǒng)工具箱當(dāng)中提供了一個(gè)前向碰撞預(yù)警的 Demo。你們可以通過這個(gè) Demo 來形象地了解到跟蹤器是如何工作的。
視頻當(dāng)中通過右側(cè)的鳥瞰圖可以發(fā)現(xiàn)藍(lán)色的是視覺目標(biāo),紅色是雷達(dá)目標(biāo),方塊形狀是我們跟蹤的目標(biāo)。
我們會(huì)對(duì)車輛進(jìn)行檢測(cè),然后將最近的最有可能發(fā)生碰撞的目標(biāo)作為 MIO(最重要目標(biāo)),防撞預(yù)警系統(tǒng)會(huì)對(duì)它進(jìn)行監(jiān)測(cè)并進(jìn)行告警。
現(xiàn)在我們看到的是前向碰撞預(yù)警系統(tǒng)算法的框圖,我們可以通過雷達(dá)目標(biāo)與視覺目標(biāo)進(jìn)行傳感器的融合以及卡爾曼濾波完成跟蹤器的工作。
然后,我們會(huì)對(duì)跟蹤到的目標(biāo)進(jìn)行威脅評(píng)估,最后得到 MIO,進(jìn)行防撞預(yù)警。預(yù)警的結(jié)果還可以輸入給 AEB(自動(dòng)剎車系統(tǒng))來進(jìn)行控制處理。
我們可以借助計(jì)算機(jī)視覺工具箱當(dāng)中代價(jià)矩陣的方法將雷達(dá)目標(biāo)與視覺目標(biāo)進(jìn)行配對(duì):根據(jù)配對(duì)的結(jié)果將匹配的雷達(dá)與視覺目標(biāo)進(jìn)行融合。
我們可以通過以下的函數(shù)來實(shí)現(xiàn):
實(shí)際的跟蹤算法會(huì)通過卡爾曼濾波來實(shí)現(xiàn)??柭鼮V波的含義或者是公式可能有些人比較熟悉,它就是通過前狀態(tài)和協(xié)方差來對(duì)當(dāng)前的狀態(tài)進(jìn)行預(yù)測(cè),通過當(dāng)前的測(cè)量值去更新當(dāng)前的狀態(tài),將更新的狀態(tài)進(jìn)行輸出。
在計(jì)算機(jī)視覺工具箱當(dāng)中同樣提供了卡爾曼濾波的函數(shù)。
實(shí)際多目標(biāo)的跟蹤,遠(yuǎn)遠(yuǎn)比一個(gè)卡爾曼濾波器更為復(fù)雜,因?yàn)樗婕暗搅宋覀兲岬降膫鞲衅魅诤?,以及多目?biāo)跟蹤管理,包括跟蹤的初始化、確認(rèn)、預(yù)測(cè)。
比如,剛才提到的可能會(huì)有一些未確認(rèn)的目標(biāo),但是我們同樣也要對(duì)這些目標(biāo)進(jìn)行跟蹤。同時(shí)有些目標(biāo)會(huì)被遮擋,我們要對(duì)被遮擋的目標(biāo)進(jìn)行預(yù)測(cè)。所以現(xiàn)在我們看到的就是一個(gè)完整的多目標(biāo)跟蹤器的邏輯。
上圖,分別是目標(biāo)檢測(cè)數(shù)據(jù)需要包括的信息、目標(biāo)跟蹤數(shù)據(jù)能夠提供的信息。
這些信息包括了時(shí)間測(cè)量值、測(cè)量噪聲、傳感器編號(hào)、目標(biāo) ID、目標(biāo)屬性等等。我們最后得到的跟蹤數(shù)據(jù)包括了跟蹤的 ID、時(shí)間、年齡、狀態(tài)、協(xié)方差、確認(rèn)標(biāo)志、遮擋標(biāo)志、目標(biāo)類別的 ID 以及目標(biāo)屬性(如果大家對(duì)以上的信息還有疑問的話,在我們的幫助文件里會(huì)有更詳細(xì)的描述)。
介紹一下多目標(biāo)跟蹤器的層級(jí),一共分為三個(gè)層級(jí)。
第一,頂層與用戶的交互界面,它同時(shí)負(fù)責(zé)分配多個(gè)檢測(cè)到多個(gè)跟蹤,進(jìn)行這樣一個(gè)匹配,以及維護(hù)跟蹤的列表,進(jìn)行新建或者是刪除跟蹤。
第二,對(duì)單個(gè)跟蹤來說,會(huì)處理對(duì)單個(gè)跟蹤的多個(gè)檢測(cè),就是完成傳感器融合的算法,同時(shí)也會(huì)負(fù)責(zé)單個(gè)跟蹤的確認(rèn)與刪除,以及維護(hù)跟蹤的 ID 分類等信息。
第三,跟蹤濾波器,用戶自定義的濾波器,負(fù)責(zé)處理測(cè)量產(chǎn)生的濾波器更新,以及維護(hù)濾波器的狀態(tài)和協(xié)方差。
對(duì)于非線性的擴(kuò)展卡爾曼濾波或者無界卡爾曼濾波,用戶還需要定義這一時(shí)刻的狀態(tài)轉(zhuǎn)移函數(shù)與測(cè)量函數(shù),它取決于用戶對(duì)目標(biāo)模型的分析情況。
比如,目標(biāo)運(yùn)動(dòng)狀態(tài),是否是勻速、勻加速或者是其他運(yùn)動(dòng)狀態(tài)。
同時(shí)用戶還需要配置跟蹤器的其他屬性,包括確認(rèn)跟蹤的閾值、被遮擋的更新次數(shù)、傳感器的數(shù)量以及最大數(shù)量的跟蹤數(shù)量等等。
簡(jiǎn)單介紹檢測(cè)到跟蹤的分配以及傳感器的融合是如何實(shí)現(xiàn)的。
圖一顯示的是目標(biāo)前一時(shí)刻的狀態(tài),圖二顯示的是跟蹤器對(duì)目標(biāo)當(dāng)前位置的預(yù)測(cè),圖三是根據(jù)跟蹤器對(duì)目標(biāo)當(dāng)前位置的預(yù)測(cè),將檢測(cè)到的一些目標(biāo)的信息分配到跟蹤的目標(biāo)。
比如,可能有雷達(dá)的測(cè)量數(shù)據(jù)、視覺的測(cè)量數(shù)據(jù),就是采用代駕矩陣的方法來進(jìn)行分配的。
最后一步,進(jìn)行傳感器融合的計(jì)算,獲得當(dāng)前目標(biāo)的位置,更新當(dāng)前的狀態(tài)。
對(duì)于跟蹤的預(yù)測(cè)以及狀態(tài)更新,我們提供了三種濾波的算法,分別是:KF 線性卡爾曼濾波、EKF 擴(kuò)展卡爾曼濾波、UKU 無界卡爾曼濾波。
我們預(yù)設(shè)了三種濾波器的初始化函數(shù),分別針對(duì)于勻速目標(biāo)、勻加速目標(biāo)和勻轉(zhuǎn)向速目標(biāo)。同時(shí)用戶也可以添加自定義的濾波器初始化函數(shù),這通常用于非線性的濾波器。
對(duì)于 EKF 和 UKF 來說,用戶還需要定義它的運(yùn)動(dòng)函數(shù)和測(cè)量函數(shù)。同樣,我們預(yù)先設(shè)置了勻加速、勻速、勻轉(zhuǎn)向速度這三種情況,對(duì)于其他一些更復(fù)雜的情況,用戶可以根據(jù)公式添加自定義模型。
單個(gè)跟蹤來說,有一個(gè)生命周期,一共分為三個(gè)步驟。
第一,跟蹤的初始化,我們會(huì)從從沒有分配到跟蹤的檢測(cè)創(chuàng)建一個(gè)新的跟蹤,這就說明我們檢測(cè)到了一個(gè)新的目標(biāo),同時(shí)我們會(huì)創(chuàng)建和初始化濾波器。
第二,跟蹤得到了確認(rèn),我們會(huì)將每個(gè)時(shí)刻的分配、檢測(cè)到跟蹤。通過檢測(cè)到的信息我們對(duì)跟蹤進(jìn)行修正,同時(shí)跟蹤也會(huì)計(jì)算一個(gè)預(yù)測(cè),這個(gè)就是典型的卡爾曼濾波算法。
第三,如果一段時(shí)間內(nèi)沒有觀測(cè)到跟蹤目標(biāo),那么我們會(huì)判斷是否刪除這個(gè)跟蹤,經(jīng)過一個(gè)閾值,如果在閾值的范圍之外,還是沒有觀測(cè)到跟蹤,那么我們將其刪除。
對(duì)于非線性濾波器來說,我們還會(huì)定期地修正它的測(cè)量函數(shù)與狀態(tài)轉(zhuǎn)移函數(shù)。
這是一個(gè)行人目標(biāo)跟蹤的案例,我們從案例中可以很清晰地看到一個(gè)跟蹤的生命周期:它是如何被初始化和如何確認(rèn)的,在被遮擋的時(shí)候如何進(jìn)行預(yù)測(cè)以及最后如何進(jìn)行刪除。
我們?cè)谧詣?dòng)駕駛系統(tǒng)工具箱當(dāng)中還提供了很多其他的工具,包括了一系列的算法驗(yàn)證工具,比如說真實(shí)值標(biāo)簽工具。
在 2012 版本的 Matlab2012B 之后,有一個(gè) APP 的功能:提供了一系列的應(yīng)用程序,這包括了我們?cè)谧詣?dòng)駕駛系統(tǒng)工具箱當(dāng)中提供的真實(shí)值標(biāo)簽應(yīng)用程序。
如上述右圖所示,我們可以通過這個(gè)工具,在一段視頻當(dāng)中添加真實(shí)值的標(biāo)簽,將目標(biāo)通過標(biāo)簽的形式記錄下來,可以使用矩形的目標(biāo)或者是直線的目標(biāo)。
右圖中,我們使用真實(shí)值標(biāo)簽標(biāo)記了卡車、汽車、交通指示牌、車道線等等。
按通常理解,真實(shí)值標(biāo)簽一般是用來訓(xùn)練目標(biāo)檢測(cè)的算法以及評(píng)估目標(biāo)檢測(cè)的算法。在這里,我們還可以通過真實(shí)值標(biāo)簽的工具,去驗(yàn)證、跟蹤和控制算法。
我們可以通過真實(shí)值標(biāo)簽去對(duì)視頻進(jìn)行處理,人工產(chǎn)生一些視覺目標(biāo),通過采集的記錄的或者是實(shí)驗(yàn)室產(chǎn)生的雷達(dá)目標(biāo)對(duì)它進(jìn)行融合,通過多目標(biāo)跟蹤器與控制算法對(duì)整個(gè)系統(tǒng)的功能進(jìn)行一個(gè)仿真工作。
使用真實(shí)值標(biāo)簽工具添加真實(shí)值標(biāo)簽的方法共分為五個(gè)步驟:
第一,載入視頻。
第二,定義標(biāo)簽的類型。比如,我們可以定義車輛、車道線等目標(biāo),定義環(huán)境,比如說天氣等全局的標(biāo)簽。
第三,通過時(shí)間軸的拖動(dòng),可以對(duì)每一幀進(jìn)行標(biāo)簽的繪制。
第四,我們可以使用部分自動(dòng)算法,為我們添加標(biāo)簽,包括中間幀的線性插補(bǔ)、KLT 目標(biāo)跟蹤以及 ACF 車輛檢測(cè)這些自動(dòng)化算法,可以逐幀地繪制選定的標(biāo)簽。
第五,我們通過手動(dòng)的微調(diào)得到最終結(jié)果,將數(shù)據(jù)導(dǎo)出到文件或者是工作空間。
設(shè)計(jì)完成之后,就需要進(jìn)行算法驗(yàn)證,我們可能會(huì)通過一些實(shí)車的測(cè)試進(jìn)行驗(yàn)證,也可以在實(shí)驗(yàn)室里通過模擬方式,在實(shí)驗(yàn)室里進(jìn)行可視化的驗(yàn)證。
Matlab 當(dāng)中提供的一些數(shù)據(jù)導(dǎo)入的程序,以及一些可視化的應(yīng)用,為仿真系統(tǒng)的搭建提供了便利。
比如,我們可以通過這些數(shù)據(jù)接口的操作函數(shù),導(dǎo)入 excel 工作表、視頻文件、CAN 總線數(shù)據(jù),我們也可以通過自動(dòng)駕駛系統(tǒng)工具箱當(dāng)中提供的函數(shù)來生成鳥瞰圖以及雷達(dá)點(diǎn)云圖。
上圖就是一個(gè)典型的仿真環(huán)境,上面是整個(gè)系統(tǒng)的架構(gòu),下面是仿真的硬件設(shè)備,我們采用一臺(tái)目標(biāo)機(jī)來運(yùn)行車輛與環(huán)境的模型,然后另一臺(tái)運(yùn)行感知與控制算法,完成一個(gè)硬件再回路的仿真工作。
通過這個(gè)視頻,我們所有的算法都是能夠自動(dòng)生成 C 語言代碼的,我們將生成的代碼下載到目標(biāo)計(jì)算機(jī)當(dāng)中,就可以很容易完成硬件再回路的仿真。
對(duì)算法進(jìn)行實(shí)車的測(cè)試,也是必不可少的一個(gè)環(huán)節(jié)。我們?cè)诟鞣N不同的路況下,可以對(duì)車載系統(tǒng)進(jìn)行實(shí)車測(cè)試,這個(gè)系統(tǒng)可以是一臺(tái)筆記本電腦,也可以是一臺(tái)實(shí)時(shí)的仿真計(jì)算機(jī)。
我們通過 USB、CAN 總線、以太網(wǎng)等等,將它與各個(gè)傳感器進(jìn)行連接,就可以測(cè)試我們的目標(biāo)跟蹤,以及控制算法。
我們可以看到,在整個(gè)系統(tǒng)的設(shè)計(jì)與驗(yàn)證的過程中,MATLAB、Simulink 提供了一個(gè)通用的軟件設(shè)計(jì)與硬件設(shè)施的平臺(tái),其中就包括使用 MATLAB 設(shè)計(jì)感知算法和 Simulink 來設(shè)計(jì)控制算法,將這些算法自動(dòng)生成 C 語言代碼,以及使用 Simulink Real-Time 完成算法的實(shí)時(shí)仿真工作,進(jìn)行系統(tǒng)的驗(yàn)證。
雷鋒網(wǎng)注:關(guān)于此次嘉賓演講的 PPT,請(qǐng)關(guān)注雷鋒網(wǎng)「新智駕」(公眾號(hào):AI-Drive),在后臺(tái)回復(fù)「ADAS微課堂」即可下載。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。