本文是無(wú)人駕駛技術(shù)系列的第四篇,著重介紹基于Spark與ROS的分布式無(wú)人駕駛模擬平臺(tái)。無(wú)人駕駛的安全性和可靠性是通過(guò)海量的功能和性能測(cè)試來(lái)保證的。無(wú)人駕駛系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng)工程,在它的整個(gè)研發(fā)流程中,測(cè)試工作至關(guān)重要同時(shí)也繁重復(fù)雜。顯然將全部測(cè)試工作都集中在真車(chē)上進(jìn)行是一種成本異常高昂且安全系數(shù)非常低的方案。通過(guò)綜合考慮測(cè)試中各種可能發(fā)生的正?;虍惓顩r,軟件模擬成為了面向無(wú)人駕駛系統(tǒng)的更安全且更經(jīng)濟(jì)有效的替代測(cè)試手段。
無(wú)人駕駛模擬技術(shù)
無(wú)人車(chē)駕駛系統(tǒng)由感知、預(yù)測(cè)、決策、控制等眾多功能模塊組成,每個(gè)模塊都各自擁有復(fù)雜的結(jié)構(gòu)和算法。絕大部分情況下,系統(tǒng)開(kāi)發(fā)人員在測(cè)試過(guò)程中很難對(duì)海量的輸出參數(shù)作評(píng)價(jià)。同時(shí),開(kāi)發(fā)人員不僅需要單獨(dú)測(cè)試一個(gè)功能模塊,也需要集合聯(lián)調(diào)多個(gè)模塊。因此,系統(tǒng)開(kāi)發(fā)人員所需要的模擬器必須能夠直觀正確地反映出輸出參數(shù)的意義,同時(shí)還要既能對(duì)各個(gè)模塊進(jìn)行單一的測(cè)試,又能將各個(gè)模塊按照不同需求組合后進(jìn)行集成測(cè)試。
模擬器技術(shù)主要有兩種:第一種是基于合成數(shù)據(jù)對(duì)環(huán)境、感知以及車(chē)輛進(jìn)行模擬,這種模擬器主要用于控制與規(guī)劃算法的初步開(kāi)發(fā)上;第二種是基于真實(shí)數(shù)據(jù)的回放以測(cè)試無(wú)人駕駛不同部件的功能及性能。在本文中,我們主要討論基于數(shù)據(jù)回放的模擬器。
出于需盡量真實(shí)地模擬真車(chē)環(huán)境的需求,我們的模擬器采用了和真車(chē)相同的機(jī)器人操作系統(tǒng)ROS。ROS是一種基于消息傳遞通信的分布式計(jì)算框架。這種框架方便開(kāi)發(fā)人員進(jìn)行模塊化編程,這一特性對(duì)于模擬器來(lái)說(shuō)至關(guān)重要。在無(wú)人駕駛系統(tǒng)中,每一個(gè)功能模塊在ROS中都部署在一個(gè)節(jié)點(diǎn)上,節(jié)點(diǎn)間的通信依靠事先定義好格式的message完成。在模擬器中開(kāi)發(fā)人員只需要使用相同的通信格式,針對(duì)每個(gè)功能模塊制作模擬模塊,然后根據(jù)測(cè)試需求搭配真實(shí)功能模塊和模擬模塊。例如,如果想進(jìn)行決策模塊和控制模塊的功能聯(lián)調(diào),我們需要將決策模塊、控制模塊搭配其他的模擬模塊,安裝到模擬器中進(jìn)行測(cè)試。如果決策模塊需要單獨(dú)測(cè)試新的決策算法,我們可以只將新的決策模塊搭配其他的模擬模塊安裝到模擬器上,這樣的測(cè)試結(jié)果就是只針對(duì)決策模塊的。
模擬器的組成元素
首先,無(wú)人駕駛汽車(chē)模擬器中包含了車(chē)的動(dòng)態(tài)模型,用來(lái)加載測(cè)試無(wú)人車(chē)駕駛系統(tǒng),并模擬無(wú)人駕駛汽車(chē)自身的行為。其次,需要模擬的是外部環(huán)境,包括靜態(tài)和動(dòng)態(tài)的場(chǎng)景。靜態(tài)場(chǎng)景中包括各種靜態(tài)的交通標(biāo)志,例如停止線、交通指示牌等;動(dòng)態(tài)場(chǎng)景主要指車(chē)周?chē)膭?dòng)態(tài)交通流模型,例如車(chē)輛、行人、交通燈等。所有這些元素構(gòu)建了與現(xiàn)實(shí)環(huán)境相對(duì)應(yīng)的模擬世界。
模擬器的應(yīng)用
無(wú)人駕駛汽車(chē)真實(shí)上路后所要面臨的外部環(huán)境是復(fù)雜多變的。模擬器在模擬測(cè)試中需要做的就是將復(fù)雜的外部環(huán)境拆解成最簡(jiǎn)單的元素,然后重新排列組合,生成各種測(cè)試用例。
圖1 模擬器應(yīng)用
拿一組簡(jiǎn)單的測(cè)試用例舉例。圖1是一個(gè)簡(jiǎn)單的直線行駛的車(chē)道,需要測(cè)試的是無(wú)人駕駛汽車(chē)對(duì)于一輛障礙車(chē)的反應(yīng)。按照障礙車(chē)可能出現(xiàn)的起始位置劃分,它可能出現(xiàn)于無(wú)人駕駛汽車(chē)的左前、左中、左后、前、后、右前、右中、右后總計(jì)八個(gè)位置。按照障礙車(chē)和無(wú)人駕駛汽車(chē)的相對(duì)速度,可分為比無(wú)人駕駛汽車(chē)快、和無(wú)人駕駛汽車(chē)速度相等以及比無(wú)人駕駛汽車(chē)慢三類(lèi)。按照障礙車(chē)的行為劃分則分為直行、向左變道和向右變道三種。將這些變量相乘,再去掉其中不需要的個(gè)例,就得到了一組我們需要的測(cè)試用例。
模擬器面臨的問(wèn)題
模擬器的核心問(wèn)題在于“真”上,人工模擬的場(chǎng)景和真實(shí)場(chǎng)景多少會(huì)有差異,真實(shí)場(chǎng)景中仍然會(huì)存在許多令人想象不到的突發(fā)事件。因此,如果能采用真實(shí)的行車(chē)數(shù)據(jù)復(fù)現(xiàn)真實(shí)場(chǎng)景,就會(huì)得到比人工模擬的場(chǎng)景更好的測(cè)試效果。但采用真實(shí)數(shù)據(jù)復(fù)現(xiàn)的方案帶來(lái)的問(wèn)題就是海量數(shù)據(jù)的處理。如果我們想在模擬器上復(fù)現(xiàn)真實(shí)世界中每一段道路的場(chǎng)景,就需要讓無(wú)人駕駛汽車(chē)去采集每一段道路的信息,這些海量的信息是單機(jī)無(wú)法處理的,而且在每個(gè)場(chǎng)景下拆解元素重新排列組合生成測(cè)試用例的做法會(huì)使計(jì)算量翻倍。因此,將模擬器搭載到分布式系統(tǒng)上就成為了無(wú)人駕駛模擬測(cè)試的最佳選擇。
2025-09-04 21:58
2025-08-28 11:13
2025-08-27 14:14
2025-08-26 13:50
2025-08-23 20:37
2025-08-22 10:33
2025-08-18 14:20
2025-08-13 11:12
2025-08-13 10:55
2025-08-08 09:53