基于PanoSim仿真开发平台LDW验证以及LDP的构想
一、PanoSim簡介
PanoSim是一款面向汽車自動駕駛技術與產品研發的一體化仿真與測試平臺,集高精度車輛動力學模型、高逼真汽車行駛環境與交通模型、車載環境傳感器模型和豐富的測試場景于一體,支持與Matlab/Simulink聯合無縫仿真,提供包括離線仿真、實時硬件在環仿真(MIL/SIL/HIL/VIL)和駕駛模擬器等在內的一體化解決方案;支持包括ADAS和自動駕駛環境感知、決策規劃與控制執行等在內的算法研發與測試。PanoSim具有很強的開放性與拓展性,支持定制化開發,操作簡便友好,已在美國通用汽車、德國戴姆勒汽車、上汽集團和東風汽車等企業和科研院所廣泛使用。
PanoSim汽車智能駕駛一體化仿真測試平臺具備功能強大且齊全的模型庫和仿真測試工具鏈,結合靈活開放的云端一體軟件架構,為自動駕駛行業測試機構和產業鏈正向開發提供全流程實踐支撐。
二、LDW簡介
汽車車道偏移預警系統,LDW英文全稱為:Lane Departure Warning,縮寫為LDW。車道偏離預警LDW通過攝像頭監測前方道路車道線,當判斷發生駕駛員無意識狀態下、車輛偏離車道線情況,系統將通過聲音、振動等方式向駕駛員發出預警。 這是繼車道偏離預警(LDW)旨在幫助駕駛員在高速公路、快速道路等類似主干道上減少因為車身偏移而造成各種危險事故,當車速大于或等于60km/h且道路標線清晰可見時,車道偏離預警功能啟用,車道偏離預警(LDW)將通過視覺、聽覺和觸覺的方式警告駕駛員。如果轉向信號指示燈處于開啟狀態或駕駛員有明顯的轉向意圖(如快速轉動方向盤等),車道偏離預警(LDW)將不會發出警示。
這種系統的主要作用,就是當汽車偏離原車道時,能夠迅速判斷該動作是否屬于駕駛者的無意識行為,從而在0.5秒內作出反應。在對駕駛者進行明確警示的基礎上,提醒駕駛者盡快糾正錯誤的駕駛行為,從而減少汽車因車道偏離而發生交通事故。
三、LDW開發背景
據交通部統計,約有50%的汽車交通事故是因為汽車偏離正常的行駛車道引起的。究其原因,主要有駕駛員情緒不穩定、注意力不集中或駕駛疲勞等幾種情形。另據統計,23%的汽車駕駛者一個月內至少在轉向盤上睡著一次;66%的卡車駕駛者在駕駛過程中會有打瞌睡的經歷;而28%的卡車駕駛者在一個月內會有在轉向盤上睡著的經歷。如此驚人的比例足以證明防止車道偏離的重要意義。
另外,根據美國聯邦公路局的估計,美國2002年所有致命的交通事故中44%是跟車道偏離有關的,同時車道偏離也被看成車輛側翻事故的主要原因。四個駕駛員中就有一個駕駛員經歷過車道偏離引起的傷亡事故。
這些數據表明,搭載車道偏離預警系統(LDW)后,由于減少了非正常的車道偏離,汽車行駛的安全性將大大提高,交通事故的發生率也將顯著下降。故此,LDW系統正逐漸成為汽車安全技術的重要組成部分。
四、LDW控制系統接口
下圖為PanoSim傳感器配置SensorBuilderUI界面,能夠直接將所需要的模塊直接拖至圖中即可搭載對應的傳感器,并且在Simulink中完成鏈接,LDW主要需要用到車道傳感器,完成鏈接后,即可在總線中讀取相應數據(車道線數,車道線ID,左右車道線距車距離,車道線曲率以及多次項的系數)用以擬合車道多項式的參數,并且將其所得數據做為數組通過numpy的計算進行運算和判斷,從而優化左右車道線距離車輛的距離最終用于算法的計算去做判斷。
而主要的控制信號同樣封裝于Simulink當中,需要從總線中讀出,主要包括有throttle(油門),brake(剎車),steer(方向盤),mode(擋位),gear(齒輪)等多種控制方式,用于控制車本身的狀態,并且在設計過程中考慮到部分變量需要做為全局變量用以調用,所以PanoSim在開發時候預留了八個全局變量(GlobalVariable)用于參數調用,在LDW開發過程中就是將第八個全局變量做為了報警信號交互的通道
五、LDW車道線擬合
MonoDetection傳感器 :Type、 Distance 、C0、 C1、 C2、 C3
車輛信息:Vx(縱向車速)、Ax(縱向加速度)、Vy(橫向車速)、Ay(橫向加速度)
disToLeft_0 (左側車道線距離)
disToRight_0 (右側車道線距離)
VX (轉向車速)
攝像頭識別,4條車道線,三條車道。2、3分別是靠近主車左、右兩側的車道線,該算法封裝于車道線傳感器內部,用擬合多項式去計算出最近車道離車重心點的距離用于汽車偏向的判斷,當然在行駛過程中自身的速度,姿態,也是LDW開發過程中的一個重要節點,所以在設計過程中也需要將車身的狀態讀取下來,用以下部分算法的開發當中去。
六、偏移速度計算
在LDW的開發過程中,經典的算法是通過車道線多項式擬合后所得到車重心距離最近車道線的左右距離做為判斷變量去做決策的,但是這樣的算法可能會略微簡單。規范的LDW算法需要考慮車身姿態角(航偏角yaw),自身車速Vx以及在左右轉向時候的變化率綜合其三最終做出決策。
姿態角主要用于判斷用戶是否是主動轉向還是無意識車頭的偏移,所以在設計時候需要將車道做為y軸,而垂直于車道向右延申的直線做為x軸通過計算,如果其車身航偏角在85-95°表示是由于駕駛員無意識的偏轉,而如果航偏角不在該范圍內,意為用戶主動控制方向盤而導致角度變化,該狀態下不予以觸發。
自身車速是用以判斷駕駛員駕駛過程中是否達到速度閾值,如果車速小于60km/h即為16.7m/s,在安全車速中不會觸發LDW,如果大于該車速下,完成其他判斷條件即會觸發。
轉向的變化率,在原始的LDW判斷當中,通過去計算車身重心距離最近車道線的左右距離去做判斷,如果小于固定閾值即會觸發報警,該算法應用可行性較高,觸發較為精確,但是在應用中也應該考慮到車身重心距離最近車道線的變化率,將該值用于判斷能夠更好更靈敏的表現出其變化的效果,并且考慮到轉向過程中重心的轉移會導致變化率會出現負值等各種情況,在設計該部分時候,需要考慮到往某一方向偏移時候,該方向車道線的偏移量會變小,但是另一方向的偏移量會變大,因為車身呈現出一種圓形旋轉的姿態,外向車輪的變化率必定大于內向車輪的變化率。
在該試驗當中每次仿真回調周期Ts是10ms,該時間需要針對不同模型進行改進。其基本思想也是較為簡單的通過設計disToLeft_1和disToRight_1去讀取上一回調周期的偏移量,而disToLeft_0和disToRight_0讀取該回調周期的偏移量,兩者做差除以回調周期即可得到該回調周期的變化率通過該變化率去做判斷工作。這里用到了高數中簡單的導數定義式的方法去計算,其大致數學公式如下。
# 版本1.1 用距離車道偏移的距離去計算變化率 # 通過每次回調前后回調后的距離差除以回調時間就可以得到一個變化速度,該速度即可類似于轉彎速度 disToLeft_1 = disToLeft_0 disToRight_1 = disToRight_0 disToLeft_0 = lane_DistanceTo[0][0] disToLeft_d=disToLeft_0-disToLeft_1 disToLeft_v=abs(disToLeft_d//Ts) disToRight_0 = lane_DistanceTo[0][1] disToRight_d=disToRight_0-disToRight_1 disToRight_v=abs(disToRight_d//Ts)設函數y=f(x)在點x0的某個鄰域內有定義,當自變量x在x0處有增量Δx,(x0+Δx)也在該鄰域內時,相應地函數取得增量Δy=f(x0+Δx)-f(x0);如果Δy與Δx之比當Δx→0時極限存在,則稱函數y=f(x)在點x0處可導,并稱這個極限為函數y=f(x)在點x0處的導數,即
或者也可以等價為
disToRight_v是個相對距離的變化率,如果汽車朝著左邊開,右邊的距離變化就大,所以該值就大,故只需要反向判斷就可以較好第得到汽車的運動狀態,如果汽車右轉左邊的相對變化量較大,所以同一回調周期內disToLeft_V就會較大說明在右轉。在判斷時候只需要該變化率大于某個固定值,并且上速度VX大于60km/h即(16.6m/s),同時車身航偏角(即車頭與水平線的距離)在1.5弧度到1.7弧度內,即86°至97.4°內表示車身是用戶無意識偏移,非主動偏移,是駕駛員未注意到的轉向信號,該時刻需要給總線發出警告信號。
通過文章簡介中可以看到LDW觸發的位置調整至HUD抬頭數字顯示,并且在HUD顯示中還包括有車速,車輪轉速和擋位等多種信息非常有利于交互和體驗,并且在該場景下我們加入了隨機交通流,該算法集成于PanoSim內部,可以通過在PanoEXP中UI界面中打開或者關閉交通流也可以通過在WordlBuilder中設置合適的交通信息,包括有車輛密度,行人密度,車輛類型,駕駛員駕駛情況等多個參數設置為靜態參數,當然在PanoEXP中也可以直接放置車輛和行人等各種干擾物做為動態參數,在圖中的行人和正前方車輛就是自己放置的。
七、LDP算法簡介以及開發
LDP算法功能定義車道偏離預防LDP通過攝像頭實時監測車輛與車道邊線的相對位置,在判斷車輛即將發生車道偏離時控制車輛橫向運動,輔助駕駛員將車輛保持在原車道內行駛。其算法的開發依賴于上述的LDW算法,當車輛在車道內行駛,如果有偏離出本車道的趨勢以及已經偏出本車道一部分時,LDP系統會觸發并使方向盤自動響應,使車輛駛回車道中心附近。
方向盤期望轉角計算模塊方向盤期望轉角是根據車輛與當前車道的相對位置關系得到的,具體是根據車輛阿克曼運動模型計算得到。車輛以圓弧曲線運動來確定前輪中點轉角的方法是選取車輛前方一定距離d處期望路徑上的坐標點(x_t,y_t)。
確定前輪轉角假設以固定轉角θ進行圓弧轉彎運動會剛好到達那個目標點,那么這個前輪轉角θ就是當前時刻應該發出的期望轉角,并在下一個采用時間用同樣的方法進行更新。確定圓弧半徑R的方法為:如果車身朝向正對著預瞄點,那么R為無窮大,期望前輪轉角為0;如果車身沒有正對著預瞄點,則定義車輛第二軸的中點坐標為(x_0,y_0),預瞄點坐標為(x_t,y_t),這兩對坐標值為已知,并且圓弧中心的坐標(x_c,y_c)一定是在第二軸兩輪連線的延長線上,那么圓心坐標應滿足:
上式中,k和b由第二軸兩輪的坐標來決定。
當得到圓心坐標后,圓弧半徑為:
則此時前輪中點期望轉角為:
將上式計算結果變成角度值,再考慮方向盤轉角與前輪轉角之間的傳動比,即可得到方向盤的期望轉角。
在開發過程中選擇用一個較為簡單的方法去模擬LDP的算法進行,通過在LDW的判斷過程后,加入油門和方向盤的控制,即可模擬達到LDP算法的控制功能,最終達到較好的控制效果。首先轉彎時候會有速度損失,并且在LDW的設計中速度要大于60km/h才能進入判斷加速,所以在每次LDP控制需要對速度進行判斷,如果速度小于68左右,即需要加速,在命令中使throttle置1,而在方向控制中如果出現了左偏或者右偏的情況,需要進行右轉或者左轉,就比如說disToRight_V大于80時候說明右邊偏移率很大,說明在左偏,這時候即要控制方向盤右轉,只需要對steer賦值然后將命令發給總線即可。
在上述的分析過程中主要介紹了LDW的原理,LDW簡介,LDW應用背景,軟硬件開發所需,以及對應LDW算法的驗證,能夠一定程度上優化該算法的實際應用能力,而為了能夠更好順應ADAS開發的進程,也對LDP算法進行了嘗試,希望能夠在將來能夠將更多的算法進行應用與開發,并且非常感謝PanoSim便利的自動駕駛仿真平臺,能夠將所設計的算法快速應用于實地場景以檢驗算法的可靠性以及可行性,對于自動駕駛算法開發來說是一個舉足輕重的平臺。
總結
以上是生活随笔為你收集整理的基于PanoSim仿真开发平台LDW验证以及LDP的构想的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu桌面版打开终端Termina
- 下一篇: 微信小程序swiper实现轮播图,可触发