李明明 王吟松 盛鑫
星覓(上海)科技有限公司 上海市 201804
V2X技術將“人、車、路、云”等交通參與要素有機地聯系在一起,不僅可以支撐車輛獲得比單車感知更多的信息,促進自動駕駛技術創新和應用;還有利于構建一個智慧的交通體系,促進汽車和交通服務的新模式新業態發展。在國家的發展戰略[1]、各部委的建設指南[2-3]以及產業的發展[4]指導下,V2X的各項標準也逐步完善并發布,V2X行業得以蓬勃發展。
隨之而來的V2X測試需求也越來越多,鑒于實車測試諸多問題,仿真測試的重要性日益凸顯。有一些學者或研究機構,提出基于PreScan或CarMaker在Simulink中搭 建車輛模型的V2X硬件在環仿真測試系統方案,以及根據實際測試場景選擇能夠反映車輛移動特性的車輛移動模型來進行V2X的仿真測試。整體來說當前生成V2X仿真測試所需的數據對其他軟件具有一定的依賴性,且操作復雜,所需技術門檻高,并忽略了道路的實際線形對車輛動力學的影響;或者具有一定的局限性,僅能模擬一些軌跡下的V2X數據信息。
本文在考慮實際道路線形規律的前提下,并結合車輛動力學特性,提出基于Bezier曲線的V2X仿真測試軌跡數據生成方法。在保證高效生成模擬車輛行駛軌跡數據的前提下,無依賴性、且符合車輛在真實環境下的運動狀態及特點。最后,通過軟件封裝及界面設計,形成可視化且易操作的界面型V2X測試數據生成軟件,大大降低操作復雜度及使用的門檻,有助于V2X仿真測試的快速開展,推動V2X的快速發展及大規模落地。
本V2X仿真測試軌跡數據生成方法是基于經緯度點信息以及道路線形的特點進行分段軌跡擬合,并在相鄰兩段連接處通過Bezier曲線的應用,使得整個曲線的擬合符合車輛的實際行駛特性。再根據所需仿真的場景并根據V2X的車輛基本安全消息(Basic Safety Message,BSM)內容進行車輛運行狀態及車輛操作信息的設置,最終生成可用于仿真測試V2X場景的模擬數據。本V2X仿真測試軌跡數據生成方法流程如圖1所示。

圖1 V2X仿真測試軌跡數據生成方法流程圖
本文的核心內容在于分段軌跡擬合、Bezier的應用確保分段軌跡連接處的平順性以及基于車輛運動狀態特性設計車輛行駛狀態并輸出車輛行駛狀態數據。車輛行駛軌跡點的獲取可通過采集實車的行駛軌跡或地圖上拾取一系列點實現;經緯度坐標轉平面坐標,是為降低算法的復雜度做準備;最終的平面坐標轉經緯度坐標,為滿足BSM消息中的坐標數據格式。
對整段軌跡進行擬合,會出現軌跡點與擬合曲線間存在較大偏差問題。本文采用分段擬合的方案解決此問題。
2.1.1 選取單次擬合點
從參與擬合的第一個點開始查找沿X和Y方向上的單向最大點數,如圖2所示,具體實現如下:

圖2 單向最大點數示意圖
(1)散點A-L進行描述單向最大點數,如圖2所示,單向點數算法如下:
若N_1_x(/y)≥N_2_x(/y),則計算 滿 足N_i_x(/y)≥N_i+1_x(/y)的i最大值,i∈[2,n];
若N_1_x(/y)≤N_2_x(/y),則計算 滿 足N_i_x(/y)≤N_i+1_x(/y)的i最大值,i∈[2,n];
x(/y)方向的單向最大點數max_direc_x(/y)=i+1。
(2)由圖中散點的分布情況,可知散點坐標情況如下:
A_x<B_x<C_x<D_x<E_x<F_x<G_x<H_x<I_x<J_x>K_x>L_x;
A_y<B_y<C_y<D_y>E_y<F_y<G_y<H_y<I_y<J_y<K_y>L_y;
(3)在X方向上A->J 10個點的坐標值是單向變化的,故max_direc_x=10;同理,max_direc_y=4;故max_direc=max(max_direc_x,max_direc_y)=10。
2.1.2 單向最大點數的函數擬合
根據實際道路設計原理,設定擬合函數的階次不超過4階,選取出滿足設定偏差且點數最多的擬合。如圖3所示,具體實現如下:

圖3 單向最大點數擬合示意圖
(1)以2.1.1中求出的單向最大點數max_direc即A-J點進行擬合;
(2)逐個增加點數,進行1-4階的軌跡擬合,如圖3中灰色線、綠色線、橙色線和藍色線分別為1、2、3和4階擬合曲線;
(3)計算擬合點與擬合軌跡的差值,如圖3的藍虛線,并選取最大差值≤可接受的偏差值且參與擬合點數最多的擬合,如圖3中橙色A-G點的3階擬合。
2.1.3 完成分段擬合
從上次擬合軌跡最后一個點的下一個點開始,重復2.1.1和2.1.2中的步驟,直至所有點均參與了擬合。如圖4所示,具體實現如下:

圖4 軌跡擬合起點選取及結束擬合條件
(1)圖4中G點為上段擬合結束點,其下一個點H作為本段擬合的起始點;
(2)循環小節2.1.1,即Y方向的單向最大點為H-L max_direc_y=5個點;故單向最大點數max_direc = max_direc_y=5,且自變量坐標為Y軸;
(3)循 環 小 節2.1.2,對H-L 5個 沿Y方向的單向變化點進行軌跡擬合;
(4)直至最后一個點L或倒數第二個點K已經參與擬合,則分段擬合完成。
應用三階Bezier對相鄰兩段擬合軌跡的連接處進行連接,保障相鄰兩段擬合軌跡的連續可導性。如圖5所示,具體實現如下:

圖5 三階Bezier曲線4個定點選取示意圖
(1)選取前段擬合曲線L1的終點B作為Bezier曲線的第一個定點,后一段曲線L2的起點C作為Bezier曲線的第四個定點;
(2)做輔助射線BE和FJ,BE為與L1曲線相切于B點的射線,方向為軌跡的駛向;同理FJ為與L2曲線相切于C點的射線,方向為軌跡的駛向;
(3)自B點起在BE射線的方向上選取一點E作為Bezier的第二個定點;
(4)自C點起向FJ射線的反方向上選取一點F,作為Bezier的第三個定點;
(5)根據B點坐標(X_B,Y_B),E點坐標(X_E,Y_E),F點坐標(X_F,Y_F)以及C點坐標(X_C,Y_C),求得Bezier曲線的方程為:

其中,t∈[0,1]
(6)計算Bezier曲線的起點到終點的弦長Lchord(直線長度)和弧長Larc,并將(弧長-弦長)/弦長的值Real_rate與可接受偏差Accept_rate進行比較;

(7)若Real_rate小于Accept_rate,則接受此Bezier曲線作為前后兩段軌跡的連接曲線。若Real_rate大于Accept_rate時,則調整Bezier第二點和第三點位置,調整方法為逐漸縮短第一點和第二點以及第三點和第四點之間的距離。
根據設定的初始速度以及分段行駛狀態,輸出以設定頻率的與實際行車數據相符的車輛坐標(平面坐標)、速度、加速度、航向角、橫擺角速度等車輛行駛狀態數據。如圖6所示,具體實現如下:

圖6 車輛行駛狀態數據示意圖
(1)計算車輛行駛軌跡點的坐標:S=V0*t+0.5*a*t2;V=V0+a*t;
其中:V0為車輛初速度;V為當前車速,a為車輛加速度,t為時間,S為車輛當前累計行駛路程。
根據曲線長度計算公式,求軌跡點的平面坐標(bx,by);
(2)如圖6中假設點a(綠色點)為上一幀軌跡點的位置,b(紅色點)為當前軌跡點的位置,則當前位置的行駛狀態參數:
航向角為:γ(黃色虛線所示角度);橫擺角速度為:φ=(β-α)/t;
α為過a點的切線與X軸的夾角,β為過b點的切線與X軸的夾角;
(3)計算所有軌跡點上的車輛行駛狀態數據,包括但不限于以下內容:

點平面坐標 航向角 速度 加速度 橫擺角速度 ……
將上表中數據的平面坐標轉化為經緯度坐標,并結合其他車輛行駛狀態數據經過編碼生成用于仿真測試V2X場景的BSM模擬信息。
根據上述的V2X仿真測試軌跡數據生成方法實現車輛BSM數據制作,并按時序生成BSM數據文件,供V2X仿真測試使用。如圖7所示,具體操作流程如下:

圖7 V2X仿真測試軌跡數據生成系統流程圖
(1)選擇軌跡生成方式。即車輛行駛路徑點,支持三種方式:選擇現有樣本軌跡數據、導入實車軌跡數據以及手動繪制行車軌跡。
(2)生成軌跡信息。此階段包含兩部分內容:顯示軌跡點和擬合軌跡;因此此部分是核心算法的實現內容。圖8為生成的軌跡信息示例。

圖8 生成軌跡信息
(3)添加車輛信息。支持兩種方式:從已有車輛庫中直接選擇,或新增車輛信息。新增車輛信息時,需編輯車輛的基本信息(車輛的屬性-HV/RV、車輛ID、車輛匹配的軌跡、車輛類型、車輛尺寸、車輛上OBU天線的位置等信息)。
(4)編輯行車數據。首先,選定一個已經添加的車輛;其次,設計此車輛的分段行駛路段;最后,逐條編輯軌跡分段行車數據(上下游節點車速、下游節點持續靜止時長、加減速狀態、制動狀態、車燈狀態、特殊狀態等)。
(5)導出行車軌跡數據。用戶根據測試需求,選擇“導出車輛”以及“數據頻率”,即可導出目標車輛的行車軌跡數據。
本文提出一種基于Bezier曲線的V2X仿真測試軌跡數據生成方法,解決實車測試過程中存在操作復雜、危險性高、高成本、效率低以及難以復現等問題。該系統不依賴交通仿真軟件,采用自研的車輛軌跡擬合算法,解決軌跡擬合過程中的偏差偏離較大、分段擬合不連續等問題,以及生成滿足車輛行駛動力學的車輛行駛軌跡數據。
在本文研究的V2X仿真測試軌跡數據生成方法中,已經實現生成模擬的V2X BSM消息,后續還將繼續實現生成V2X國標一階段應用場景里面提到的RSM、RSI、SPAT、MAP等其他V2X消息類型,以及生成V2X國標二階段應用場景里面提到的所有V2X消息類型。