李水良 ,楊新紅,2 ,謝金發(fā)
(1.河南科技大學(xué)車(chē)輛與動(dòng)力工程學(xué)院,河南洛陽(yáng) 471003;2.北京航空航天大學(xué)交通科學(xué)與工程學(xué)院,北京 100191)
車(chē)輛行駛智能化是目前交通領(lǐng)域的一個(gè)重要內(nèi)容,在虛擬環(huán)境里再現(xiàn)車(chē)輛的實(shí)際行駛狀況、借助虛擬現(xiàn)實(shí)對(duì)道路交通中的車(chē)輛安全行駛進(jìn)行模擬是一種很好的研究方法。文獻(xiàn)[1]基于OpenGL對(duì)虛擬環(huán)境建模進(jìn)行了研究,文獻(xiàn)[2]描述了利用 UG進(jìn)行的液壓機(jī)械無(wú)級(jí)變速器的虛擬裝配,文獻(xiàn)[3]以LabView為開(kāi)發(fā)平臺(tái)將虛擬儀器技術(shù)引入車(chē)輛性能測(cè)試領(lǐng)域。可視化三維視景仿真系統(tǒng)Vega[4]可用于構(gòu)建車(chē)輛動(dòng)態(tài)行駛的仿真平臺(tái),其完整的 C語(yǔ)言應(yīng)用程序接口,為采用 C/C++開(kāi)發(fā)仿真程序、驅(qū)動(dòng)虛擬實(shí)體運(yùn)動(dòng)提供了有利條件,借助其圖形環(huán)境用戶界面 Lynx[5]可簡(jiǎn)化應(yīng)用程序開(kāi)發(fā)過(guò)程,能很好地實(shí)現(xiàn)驅(qū)動(dòng)、控制、管理虛擬場(chǎng)景。文獻(xiàn)[6-8]都是借助于Vega在虛擬道路上對(duì)車(chē)輛的行駛進(jìn)行的一般性虛擬仿真,文獻(xiàn)[9]介紹了通過(guò)Matlab虛擬現(xiàn)實(shí)工具箱實(shí)現(xiàn)了汽車(chē)在山地中的運(yùn)行,但其不能反映速度、加速度。本文在Vega下對(duì)虛擬路徑及車(chē)輛的驅(qū)動(dòng)方式進(jìn)行了研究,獲取了車(chē)輛的位姿和運(yùn)動(dòng)參數(shù),為真正地在虛擬環(huán)境中控制車(chē)輛,以體現(xiàn)車(chē)輛行駛的智能化鋪平了道路。
基于軟件Creator3.0.1[10]建立環(huán)境場(chǎng)景模型try.flt,通過(guò)Lynx界面加載模型,建立運(yùn)動(dòng)對(duì)象(此處指向虛擬車(chē)輛)、把模型對(duì)象加入場(chǎng)景、設(shè)置“Method”為T(mén)RIPOD的分扇區(qū)模塊并與模型對(duì)象綁定,添加適當(dāng)?shù)沫h(huán)境或根據(jù)其他一些需要進(jìn)行更改,最終形成應(yīng)用程序定義文件try.adf。表1為adf文件所加模型。車(chē)輛與場(chǎng)景共同構(gòu)成了虛擬環(huán)境,本文場(chǎng)景中的道路是標(biāo)準(zhǔn)的 4車(chē)道雙向連續(xù)路面。
在Vega構(gòu)建的虛擬場(chǎng)景中,車(chē)輛的驅(qū)動(dòng)有 3種方式。外圍輸入設(shè)備駕駛車(chē)輛、用路徑與導(dǎo)航器模塊創(chuàng)建車(chē)輛行駛路徑或利用Vega API函數(shù)[11]在 VC++下編程建立車(chē)輛行駛動(dòng)態(tài)路徑并交互地控制車(chē)輛行駛。
表1 文件try.ad f所用模型
外圍輸入設(shè)備驅(qū)動(dòng)即采用鼠標(biāo)或鍵盤(pán)進(jìn)行驅(qū)動(dòng)。在用戶界面Lynx下,建立Drive型運(yùn)動(dòng)模型,設(shè)置好此模型的初始坐標(biāo)并與場(chǎng)景中的運(yùn)動(dòng)對(duì)象—車(chē)輛綁定,使用鼠標(biāo)即可驅(qū)動(dòng)其在場(chǎng)景中運(yùn)動(dòng),Drive型模型可同時(shí)綁定觀察者,使觀察者和車(chē)輛一起運(yùn)動(dòng)以增加觀察的真實(shí)感;也可以設(shè)定好步長(zhǎng),利用鍵盤(pán)中的方向鍵和空格鍵來(lái)驅(qū)動(dòng)虛擬車(chē)輛。本例的Play_car采用的是Drive型運(yùn)動(dòng)模型。
車(chē)輛在場(chǎng)景中行駛,必須在路面上有個(gè)曲線的運(yùn)動(dòng)軌跡,這就是路徑。創(chuàng)建路徑并沿此路徑引導(dǎo)車(chē)輛按照設(shè)定的路徑運(yùn)動(dòng)即是導(dǎo)航。Lynx界面中的Pathing和Navigators模塊提供了在虛擬場(chǎng)景中控制車(chē)輛運(yùn)動(dòng)軌跡的功能。利用它們分別創(chuàng)建路徑和導(dǎo)航器實(shí)例,建立路徑文件和導(dǎo)航器文件的關(guān)聯(lián),對(duì)菜單Tools下的Path Tool進(jìn)行編輯,形成路徑文件和導(dǎo)航器文件,導(dǎo)航器可解釋出對(duì)應(yīng)路徑的數(shù)據(jù)結(jié)構(gòu),能沿著各個(gè)控制點(diǎn)形成的路線產(chǎn)生導(dǎo)航,從而車(chē)輛自動(dòng)地按照指定的運(yùn)動(dòng)路徑在場(chǎng)景中運(yùn)動(dòng)。本例通過(guò)此種方式為Play_van創(chuàng)建了路徑van.pth和導(dǎo)航器van.nav。
Vega提供了vgPath類(lèi)和vgSplineNavigator類(lèi)的API函數(shù)庫(kù),還提供了路徑文件的讀/寫(xiě)、路徑屬性的設(shè)置等函數(shù),編程能實(shí)現(xiàn)路徑和導(dǎo)航。特別當(dāng)運(yùn)動(dòng)對(duì)象的運(yùn)動(dòng)不確定時(shí),必須在仿真程序中實(shí)時(shí)的生成導(dǎo)航路徑并編制穿越路徑的導(dǎo)航器。本例中編程為Play_delivery成功建立了路徑delivery.pth和導(dǎo)航器delivery.nav。
圖1分別為單獨(dú)導(dǎo)航Play_van、驅(qū)動(dòng)Play_car且同時(shí)導(dǎo)航Play_van、編程導(dǎo)航Play_delivery的情景。
圖1 3種驅(qū)動(dòng)方式的情景
當(dāng)有輸入設(shè)備直接驅(qū)動(dòng)車(chē)輛時(shí)最好建立Drive型驅(qū)動(dòng);當(dāng)提前已知控制點(diǎn)坐標(biāo)且車(chē)輛的行駛路線固定時(shí)用路徑工具創(chuàng)建路徑比較方便;當(dāng)程序執(zhí)行后才能確定的動(dòng)態(tài)控制點(diǎn)用編程創(chuàng)建具有優(yōu)越性,編程也可完成路徑工具創(chuàng)建的路徑,但若控制點(diǎn)數(shù)太多時(shí)程序繁瑣。所以這 3種驅(qū)動(dòng)方式應(yīng)根據(jù)具體情況進(jìn)行選擇。
車(chē)輛行駛時(shí)有位姿參數(shù)(X、Y、Z、H、P、R)和運(yùn)動(dòng)參數(shù)(a、V),其中(X、Y、Z)是車(chē)輛的位置參數(shù),代表其相對(duì)于所選三維坐標(biāo)系的坐標(biāo)值,(H、P、R)是姿態(tài)參數(shù),代表車(chē)輛分別繞Z、X、Y軸的旋轉(zhuǎn)角度,H值的變化意味著車(chē)輛行駛方向的改變,而(P、R)值代表了車(chē)輛的橫向和縱向穩(wěn)定性;運(yùn)動(dòng)參數(shù)包括加速度 a和速度 V。車(chē)輛在場(chǎng)景中不管采取何種驅(qū)動(dòng)方式行駛,都可通過(guò)控制程序獲得其位姿及運(yùn)動(dòng)參數(shù)。
獲取Play_car位姿參數(shù)的關(guān)鍵語(yǔ)句如下:
vgDelPos(car_pos);//刪除實(shí)例釋放內(nèi)存空間。
程序執(zhí)行后能實(shí)時(shí)獲得Play_car的位姿參數(shù)?,F(xiàn)把Play_car按Drive型運(yùn)動(dòng)方式行駛時(shí)的部分位姿參數(shù)列于表2中,其它車(chē)輛按路徑導(dǎo)航時(shí)的位姿參數(shù)同樣可獲得。在這個(gè)例子中,汽車(chē)在水平面上運(yùn)動(dòng),所以z方向坐標(biāo)為0。
表2 車(chē)輛Play_car被驅(qū)動(dòng)時(shí)的部分姿態(tài)參數(shù)
獲取Play_van行駛參數(shù)的關(guān)鍵語(yǔ)句如下:
表3 Play_van按Path Too l編輯的路徑導(dǎo)航時(shí)的部分絕對(duì)速度及加速度、矢量速度及加速度
Play_van按路徑工具編輯的路徑文件van.pth共有3個(gè)控制點(diǎn),形成2段樣條線。設(shè)置見(jiàn)表4,點(diǎn)的位姿為(x、y、z、0、0、0),導(dǎo)航時(shí)獲取的位置及運(yùn)動(dòng)參數(shù)與設(shè)置值的對(duì)比情況見(jiàn)圖2和圖3。從坐標(biāo)軸上標(biāo)注的數(shù)據(jù)可以看出:獲取的值與設(shè)定值的偏差在百分位才有體現(xiàn),因仿真的是一種宏觀的運(yùn)動(dòng),所以程序執(zhí)行中獲取的車(chē)輛動(dòng)態(tài)參數(shù)可以被利用。
表4 Play_van路徑設(shè)置
Play_delivery為編程實(shí)現(xiàn)的路徑與導(dǎo)航,同樣可獲取其導(dǎo)航時(shí)的參數(shù),與設(shè)置的對(duì)比情況和Play_ van的結(jié)果類(lèi)似,在此不再贅述。
對(duì)Path Tool界面編輯的Spline型導(dǎo)航路徑,控制點(diǎn)的多少和朝向、姿態(tài)平滑閾值、樣條張力參數(shù)的大小事關(guān)車(chē)輛的行駛姿態(tài)是否符合常理。對(duì)于用Vega API編程創(chuàng)建路徑和導(dǎo)航器的情況,程序編譯、連接后進(jìn)行觀察,若渲染后的路徑出現(xiàn)曲線扣結(jié)、兩段線不平滑過(guò)渡、曲線在路面之外或相對(duì)于車(chē)道位置不合適等現(xiàn)象,在程序中可進(jìn)行調(diào)整、改動(dòng)。所形成的路徑控制點(diǎn)的姿態(tài)及導(dǎo)航器的類(lèi)型決定著導(dǎo)航時(shí)車(chē)輛的姿態(tài)參數(shù),影響著速度、加速度矢量。
虛擬環(huán)境中車(chē)輛的位姿參數(shù)可動(dòng)態(tài)地反映每一幀中車(chē)輛所在位置的坐標(biāo)及車(chē)輛本身的方位,車(chē)輛的運(yùn)動(dòng)參數(shù)可告知每一幀車(chē)輛速度、加速度的大小和方向。由車(chē)輛的位置坐標(biāo)可計(jì)算出虛擬場(chǎng)景中車(chē)車(chē)之間距,結(jié)合車(chē)輛的速度、加速度決策車(chē)輛的跟馳行為是否安全、能否成功換道、超車(chē),以避障防撞。通過(guò)采用Vega與VC++結(jié)合,實(shí)現(xiàn)了車(chē)輛在虛擬環(huán)境中的驅(qū)動(dòng)及沿路徑的導(dǎo)航,獲取了車(chē)輛虛擬行駛的位姿及運(yùn)動(dòng)參數(shù)。虛擬場(chǎng)景中的道路是幾何曲面,每個(gè)位置都是三維的坐標(biāo)點(diǎn),對(duì)比、判斷虛擬車(chē)輛的路徑軌跡后,根據(jù)不同情況給車(chē)輛賦予安全的位姿,由此可對(duì)車(chē)輛的行駛位置進(jìn)行監(jiān)控,為車(chē)輛智能化行駛的虛擬仿真創(chuàng)造了條件。實(shí)際道路上智能車(chē)輛的運(yùn)動(dòng)牽涉到主動(dòng)控制、交通安全等諸多因素,所以在虛擬環(huán)境中展現(xiàn)車(chē)輛的動(dòng)態(tài)狀況還需進(jìn)一步的努力與嘗試。
[1] 譚同德,喬 木,丁安國(guó).基于OpenGL的虛擬環(huán)境建模技術(shù)[J].河南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2006,27(2),37-40.
[2] 劉現(xiàn)青,周志立,徐立友,等.虛擬裝配技術(shù)在液壓機(jī)械無(wú)級(jí)變速器設(shè)計(jì)中的應(yīng)用[J].河南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2007,28(1),19-24.
[3] 翟乃斌,蘇 建,劉玉梅,等.車(chē)輛綜合性能網(wǎng)絡(luò)化虛擬儀器測(cè)試系統(tǒng)[J].江蘇大學(xué)學(xué)報(bào):自然科學(xué)版,2006,27 (5):417-521.
[4] 王 乘,李利軍,周均清.Vega實(shí)時(shí)三維視景仿真技術(shù)[M].武漢:華中科技大學(xué)出版社,2005.
[5] Mu ltiGen-Paradigm Inc.Lynx User,s Guide[M/CD].U S A,MultiGen-Paradigm Inc,2001.
[6] 谷正氣,容 哲,楊 易,等.三維虛擬場(chǎng)景在車(chē)輛導(dǎo)航系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)仿真,2007,24(5),245-248.
[7] 姜 鵬,翟正軍,李 雪,等.Vega環(huán)境中機(jī)動(dòng)車(chē)輛運(yùn)動(dòng)仿真的研究和實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2007,24(7),268-272.
[8] Xu H K,Chuai JH,Chen D SH,et al.Simulation of Highway Tunnel Traffic Control and Guidance[C]//The Eighth International Conference on Electronic Measurementand Instruments.ICEMI,2007.Xi,an:IEEE,2007:2-644-2-647.
[9] 范太華,畢國(guó)堂,劉敏賢.基于Matlab及Simulink的虛擬現(xiàn)實(shí)技術(shù)的實(shí)現(xiàn)[J].河南科技大學(xué)學(xué)報(bào):自然科學(xué)版, 2004,25(6),47-51.
[10] MultiGen-Paradigm Inc.Multigen Creator User,s Guide[M/CD].3ed.U SA,MultiGen-Paradigm Inc,2001.
[11] MultiGen-Paradigm Inc.Vega Programmer,s Guide[M/CD].U SA,MultiGen-Paradigm Inc,2001.