陳存銅
摘要:近些年來,隨著的汽車智能化技術和互聯(lián)網技術的不斷發(fā)展,智能無人駕駛逐步走進大眾的生活。智能無人車如何更加智能化,安全化是人們不斷研究的課題。“途靈”智能無人車借鑒了國內外智能無人車的設計,結合自身特點,制定了合適的軟件架構和通信機制,不斷提升決策、控制的穩(wěn)定性和智能化,并在2016年常熟舉辦的中國智能無人車未來挑戰(zhàn)賽中取得不俗的成績。
關鍵詞:智能無人車;軟件架構;通信機制;智能化; 機器人技術
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)35-0190-03
The Software Architecture and Communication Mechanism of TiEV
CHEN Cun-tong
(Department of Computer Science and Technology, Tongji University, Shanghai 201804, China)
Abstract:With the development of automotive technology and Internet technology, autonomous vehicles have entered into the public life during recent years. How to make the autonomous vehicle more intelligent and safer has become the topic which the numerous scholars study unceasingly. On the basis of the designs of domestic and overseas autonomous vehicles, TiEV proposes a reasonable software architecture and communication mechanism which fits its peculiarities for improving the stability and intelligence of decision making and control constantly. TiEV has achieved great success in Future Challenge 2016 held in Changshu.
Key words:autonomous vehicle; software architecture; communication mechanism; intelligence; robotics
1 引言
智能無人車也可以稱之為輪式移動機器人,主要依靠車內的以計算機系統(tǒng)為主的智能駕駛儀來實現(xiàn)無人駕駛[1]。隨著無人駕駛概念的不斷升溫,越來越多的汽車制造商和科技公司投入到智能無人車的研發(fā)隊伍中,這極大地促進了智能無人車的發(fā)展。
2016年11月12日第八屆中國智能無人車未來挑戰(zhàn)賽在常熟舉辦。本屆比賽主要包含考察智能無人車認知水平能力離線測試和真實綜合道路環(huán)境測試兩部分。其中,離線測試是在真實道路交通場景數(shù)據(jù)庫的基礎上,通過仿真環(huán)境評估智能五人車的認知水平;道路測試分為城區(qū)道路測試路段(約13公路)和高速道路測試路段(約22公里),考察智能無人車交通場景識別能力及不同環(huán)境的適應性和行駛機動性等。同濟大學“途靈”智能無人車在離線測試和道路測試中均獲得了不俗的成績,“途靈”TiEV智能無人車如圖1所示。
“途靈”智能無人車軟件系統(tǒng)由多個功能模塊組成,每個功能模塊以進程的方式獨立運行。功能模塊間協(xié)調工作:通過感知道路環(huán)境,自動規(guī)劃行車路徑從而控制車輛到達預定目標。在此過程中,模塊間需要進行數(shù)據(jù)交互:如感知模塊需要將采集到的點云信息發(fā)送給決策模塊;決策模塊需要將控制命令發(fā)送給控制模塊控制車輛運動等。因此,為了保證智能無人車決策的正確性和控制的穩(wěn)定性,需要建立穩(wěn)定的軟件架構模型以及高效的數(shù)據(jù)傳輸機制。
2 軟件架構
2.1 感知模塊
目前,許多智能無人車如谷歌智能無人車配備多種傳感器,如GPS,攝像頭,激光雷達等,但由于激光雷達造價昂貴及其機械特性的限制等原因,許多智能無人車如特斯拉采用毫米波雷達和先進駕駛輔助系統(tǒng)的攝像頭代替激光雷達。毫米波雷達與攝像頭的組合相比激光雷達雖然價格便宜,但是其精度低、可視范圍的角度偏小,導致其在遠距離物體的識別、3D成像和識別準確性上都有明顯缺陷。目前,“途靈”TiEV智能無人車配備了多個激光雷達和攝像頭等傳感器從而實現(xiàn)360度無死角地感知周圍環(huán)境的功能。
感知模塊接收、融合傳感器采集的數(shù)據(jù),識別靜態(tài)與動態(tài)障礙物,獲取周圍環(huán)境信息便于之后決策模塊的路徑規(guī)劃。在車載的各類傳感器中,GPS獲取智能無人車當前的位置信息,該位置信息應用于之后的路徑規(guī)劃。攝像頭采集智能無人車周圍環(huán)境的圖像信息,識別車身周圍的車,人,交通標志牌等。激光雷達獲取車身周圍障礙物的相關信息,如障礙物離車的距離,障礙物速度等。在實際運用的過程中,攝像頭容易受到光照等外在環(huán)境因素的影響,而激光雷達受到的影響較小,此外,在激光雷達采集到的點云數(shù)據(jù)中,障礙物通常表示成一簇點,這不利于障礙物類型的識別,影響路徑規(guī)劃,因此需要攝像頭采集的圖像數(shù)據(jù)識別障礙物的類型。在智能無人車正常行駛的過程中,任何單一的傳感器不能提供足夠的信息跟蹤識別障礙物,因此,“途靈”TiEV無人車在障礙物識別跟蹤時,融合攝像頭和激光雷達的信息,有效識別障礙物,為決策模塊提供了依據(jù)。
2.2 決策模塊
決策模塊接收感知模塊融合的數(shù)據(jù)并結合路網文件規(guī)劃出一條到達指定的目的地的路徑。“途靈”將感知模塊融合的周圍環(huán)境的信息映射到一個柵格中,該柵格將包含障礙物的柵格標記為障礙柵格,反之則標記為自由柵格,決策模塊在柵格的基礎上進行路徑的規(guī)劃。
在城市道路中,決策模塊可以根據(jù)路網文件及GPS等信息,以路口為節(jié)點,道路信息為路徑信息,構造出復雜的路徑信息拓撲網絡。決策模塊根據(jù)起點和終點,應用路徑搜索算法在路徑信息拓撲網絡中規(guī)劃出合理路徑,并沿著該路徑從不同多角度延伸出多條候選路徑。決策模塊結合道路信息及周圍環(huán)境信息,選擇最優(yōu)路徑,并根據(jù)該路徑計算車速、轉角等控制命令發(fā)送給控制模塊。
2.3 控制模塊
控制模塊接收決策模塊發(fā)送的控制命令,控制車身達到預期的車速和轉角?!巴眷`”控制模塊采用了閉環(huán)控制技術,即通過被控變量的實際值與期望值的偏差糾正系統(tǒng)的響應,執(zhí)行調節(jié)控制。目前,應用最廣泛的調節(jié)器控制規(guī)律為比例、積分、微分控制即PID控制[2]。
由于傳統(tǒng)PID算法主要針對惰性系統(tǒng),即變化較慢的系統(tǒng)。而智能車的電機調速變化快,因此在實際應用過程中,需要改進、變化傳統(tǒng)的PID算法。由于P參數(shù)反應快,控制精度高,適合控制周期短系統(tǒng),所以“途靈”通過PID控制車速、轉角時,先將ID參數(shù)設為0,調整P參數(shù)。在調整完P參數(shù)后,車身可能會出現(xiàn)震蕩現(xiàn)象,此時,通過調整I參數(shù)可以減少震蕩。最后調整D參數(shù),D參數(shù)主要是調整控制靈活性和預見性,如通過D參數(shù)可以控制速度平滑過渡且速度可以長時間穩(wěn)定在給定速度附近。通過PID控制,“途靈”在車速在50km/h時的行駛軌跡與預期軌跡的偏差在1cm內。
3 通信機制
智能無人車軟件系統(tǒng)由多個功能模塊組成,在模塊間高效、可靠地傳輸數(shù)據(jù)是智能無人車系統(tǒng)運行的重要保障。目前,國內外大多數(shù)智能無人車采用基于套接字(Socket)的消息傳輸機制進行數(shù)據(jù)傳輸[3],如ROS(Robot Operating System)[4],LCM(Lightweight Communications and Marshalling)[5]等。其原因一方面是Sockets易于使用;另一方面,Sockets容易部署在分布式的控制器環(huán)境中。ROS早期的版本主要采用TCP的方式實現(xiàn)進程間的通信,在新的版本中,增加了UDP和Spread等的消息傳輸方式。LCM(Lightweight Communications and Marshalling)采用UDP組播的方式傳輸數(shù)據(jù),所有的功能模塊加入同一個組播地址,訂閱特定的消息。國內的虛擬交換VirtualSwitch[6]機制同樣采用了基于UDP組播的方式,模塊間通過特定端口號實現(xiàn)消息傳輸,目前在多個智能無人車團隊中得到了應用。
3.1 “途靈”通信機制
目前的消息傳輸機制廣泛采用了“Pub/Sub”模式進行數(shù)據(jù)傳輸。在該模式中,發(fā)布者將特定事件的消息發(fā)送給所有的訂閱者;每個訂閱者訂閱自己感興趣的一個或一類消息,若它接收到的消息是自己感興趣的則進行處理,反之,丟棄。由于發(fā)布者只負責發(fā)送消息,并不需要確認其他的訂閱者是否接收到該消息,所以該模式移除了發(fā)布者與訂閱者之間的捆綁,降低了模塊間的耦合。在網絡傳輸協(xié)議中,UDP協(xié)議由于不需保證數(shù)據(jù)的可靠性,因此其相比其他面向連接、可靠的消息傳輸協(xié)議傳輸速率更快。“途靈”目前主要采用基于UDP組播的VirtualSwitch的消息傳輸機制。在該消息傳輸機制中,所有的功能模塊加入到同一個組播組中并采用“Pub/Sub”模式進行數(shù)據(jù)傳輸。不同的功能模塊通過特定的端口發(fā)送、接收自己感興趣的一個或者一類消息,從而實現(xiàn)低延遲、高帶寬的數(shù)據(jù)傳輸。
然而,隨著智能無人車集成控制器性能的提升以及環(huán)境感知手段的發(fā)展,對功能模塊間傳輸?shù)臄?shù)據(jù)量以及帶寬提出了更高的要求?,F(xiàn)有基于套接字的消息傳輸機制因其受網絡協(xié)議的限制,需要分塊傳輸大數(shù)據(jù)包,不僅增加了收發(fā)雙方的開銷,而且還增加了消息傳輸延遲。 因此,“途靈”不僅采用VirtualSwitch消息傳輸機制,還采用基于共享內存的消息傳輸機制進行大數(shù)據(jù)包的傳輸。在基于共享內存的消息傳輸機制中,每個發(fā)布者發(fā)送數(shù)據(jù)前申請一個獨立的共享內存空間,為了有效管理該共享內存空間,將共享內存空間分成一個超級塊和多個數(shù)據(jù)塊:超級塊管理數(shù)據(jù)塊,數(shù)據(jù)塊保存?zhèn)鬏數(shù)臄?shù)據(jù)。為了控制數(shù)據(jù)的收發(fā),系統(tǒng)在超級塊內為發(fā)送方創(chuàng)建一個寫環(huán)形隊列,保存空閑的數(shù)據(jù)塊的索引,并為每個接收方創(chuàng)建一個讀環(huán)形隊列,保存存放數(shù)據(jù)的數(shù)據(jù)塊的索引。發(fā)送方發(fā)送數(shù)據(jù)時,訪問寫環(huán)形隊列head指針指向的空閑數(shù)據(jù)塊,將數(shù)據(jù)拷貝到該數(shù)據(jù)塊內。接收方接收數(shù)據(jù)時,遍歷自己的讀環(huán)形隊列,獲取每一個隊列項指向的數(shù)據(jù)塊內的數(shù)據(jù)。收發(fā)雙方通過對讀寫環(huán)形隊列的交叉操作,異步實現(xiàn)數(shù)據(jù)的收發(fā)。該模型內的收發(fā)雙方由于不需要建立同步機制,從而降低了模塊間的耦合,降低了延遲,提高了系統(tǒng)吞吐量。
3.2 實驗分析
本實驗模擬了智能無人車正常運行時,模塊間按照固定頻率傳輸數(shù)據(jù)的典型情形,主要測試數(shù)據(jù)傳輸延遲。本實驗運行在Ubuntu12.04系統(tǒng)中,實驗機配備酷睿i5(2.1GHz)四核處理器,2G DDR3內存。
為了測試數(shù)據(jù)傳輸延遲,發(fā)布者發(fā)送一定大小的數(shù)據(jù),訂閱者數(shù)量從1增加到4,利用數(shù)據(jù)發(fā)送和接收的時間差計算傳輸延遲。由于VirtualSwitch消息傳輸機制最大支持65536字節(jié)數(shù)據(jù)包的傳輸,所以在本實驗中,發(fā)布者發(fā)送100000個60KB大小的數(shù)據(jù)包,計算VirtualSwitch消息傳輸機制的平均數(shù)據(jù)傳輸延遲,實驗結果如表1所示。
4 結論
本文介紹了“途靈”TiEV智能無人車軟件架構模型及其通信機制。通過感知模塊、決策模塊和控制模塊協(xié)調工作,“途靈”能夠實時感知周圍環(huán)境,規(guī)劃合理的路線,行駛到指定的位置。在常熟舉辦的2016年中國智能車未來挑戰(zhàn)賽中,“途靈”在高架快速道路和城區(qū)道路中均取得了不俗的成績,因此本文能為無人駕駛和智能輔助系統(tǒng)提供了參考價值。
參考文獻:
[1] 楊帆. 無人駕駛汽車的發(fā)展現(xiàn)狀和展望[J]. 上海汽車, 2014(3):35-40.
[2] 陶永華. 新型PID控制及其應用──第二講 自適應PID控制[J]. 工業(yè)儀表與自動化裝置, 1997(5):50-53.
[3] Elkady A, Sobh T. Robotics Middleware: A Comprehensive Literature Survey and Attribute-Based Bibliography[J]. Journal of Robotics, 2012, 2012(1687-9600).
[4] Quigley M, Conley K, Gerkey B P, et al. ROS: an open-source Robot Operating System[C] ICRA Workshop on Open Source Software. 2009
[5] Moore D, Olson E, Huang A. Lightweight Communications and Marshalling for Low-Latency Interprocess Communication[J]. Computer Science & Artificial Intelligence Laboratory Mit Tech Rep, 2009.
[6] 李德毅,韓威,鄭思儀,等. 智能車分布式進程虛擬交換機通信方法[P].中國:2015104048428,2015.