呂夢雅,蔣 禹,唐 勇,陳英建
(燕山大學 信息科學與工程學院,河北 秦皇島 066004)
虛擬駕駛系統是基于虛擬現實(VR)技術的一個新的研究熱點與難點。將虛擬現實技術應用于汽車的駕駛仿真系統中,借助計算機這個工具來產生汽車行駛過程中的虛擬周邊環(huán)境、音響效果以及運動仿真,使駕駛員能沉浸到虛擬駕駛的環(huán)境當中,并獲得實際駕駛操作車輛的感覺。駕駛員根據虛擬環(huán)境中提供的視覺、聽覺、觸覺等感受,構想駕駛操作并模擬操作駕駛艙中的操縱部件,實時地改變汽車在虛擬世界中的運動狀態(tài),這一過程不斷循環(huán),構成了駕駛員-虛擬世界環(huán)境直接地交互,實現了操作員的虛擬駕駛,完成了在現實世界中汽車駕駛從體驗到認識、學習并掌握的全部過程[1]。
傳統的虛擬駕駛大多是模擬一般汽車行駛行為即方向盤相關行為[2-3],或者以虛擬駕駛為輔助進行一些其他工作的研究,如道路的路標設計[4]。而大型工程車輛由于其具有極其復雜的約束關系,要模擬出高度真實的物理效果是極具挑戰(zhàn)性的工作。因此,物理引擎的引入勢在必行。
物理引擎一般通過使用對象屬性如重心、動量、扭矩、彈性等來模擬物體的行為,一些簡單的物理行為可以通過編寫腳本或者動畫的方式來實現,但當需要處理比較復雜的物體之間的相互作用、相互約束關系時,通過動畫的方法來實現比較困難。隨著計算機硬件的飛速發(fā)展,物理引擎被越來越多地應用于VR仿真的各個領域。2008年,同濟大學的歐陽慧琴等人實現了Newton物理引擎與OGRE圖形渲染引擎的綁定[5],作為測試,他們模擬了傳送帶以及簡易小車的運動場景。2008年,NVIDIA公司的Harris在Siggraph Asia上展示了用 PhsyX物理引擎中的粒子系統快速實時地模擬水的物理效果[6],但在逼真程度上略有欠缺。2009年巴西的南大河州聯邦大學的 Maciel等人基于NVIDIA PhsyX物理引擎開發(fā)了多模態(tài)的虛擬手術環(huán)境[7],他們將 PhsyX物理引擎的碰撞處理層接口和觸覺渲染設備綁定以同時提供實時的組織反應以及力反饋。
本文研究了基于 Bullet物理引擎的虛擬泵車駕駛系統,其實現分為兩部分:1)結合物理引擎與真實泵車的資料對泵車各部件參數進行設定;2)在各個泵車之間建立合適的約束關系并進行驗證。
Bullet與 NVIDIA 的PhysX、Intel的 Havok并稱世界三大物理引擎。它支持Windows、Linux、MAC、PlayStation3、XBOX360、NintendoWii等平臺,同時Bullet也被整合到Maya和Blender3D中,并且是開源、免費的。其主要構成組件包括線性數學的存儲器與容器模塊、碰撞檢測模塊、剛體動力學模塊、軟體動力學模塊、多線程模塊以及一些額外的工具支持模塊,如圖1所示。本文的主要工作建立在剛體動力學模塊基礎之上。
圖1 Bullet的主要構成組件Fig.1 Primary clustering of Bullet
根據實際需求,將整個泵車模型分解成為52個部件模型。依據物理引擎的參數設定原則,每個部件模型都需要為其設定質心、碰撞形狀以及其它基本物理屬性如密度、質量等。
對于物體的質心,考慮到分離出的部件形狀較為規(guī)則,因此將重心坐標設定與包圍盒的中心點統一;對于碰撞形狀的選擇,Bullet提供了參考的選擇方案,如圖2所示,由于各個部件并不能視為簡單的幾何體如立方體、橢球或球體,因此統一地將模型的碰撞形狀設定為凸包;而密度與質量則參考泵車的實際數據進行設定。
圖2 Bullet碰撞形狀選擇Fig.2 Selection of collision for Bullet
因為虛擬泵車駕駛涉及到數據量并不十分龐大,且為了使虛擬駕駛系統具有更強的可移植性,故選擇XML文件存儲基本的數據。以車體的底盤為例,存放的數據格式如下:
在經典力學中,物體的運動必須遵守牛頓運動定律。此外,每一個物理系統中物體的運動必須遵守一些約束條件。例如,簡單擺系統的約束中擺繩的長度是常數,擺錘與支撐點的距離必須等于該長度;在一個封閉的水瓶里,除非水瓶破了,水分子絕對不能運動到水瓶外面。這些約束使得物理系統的特性得以呈現。
Bullet也提供了許多約束模型。常見的約束模型如圖3所示,點對點 (Point to Point)約束是在兩個剛體的某個軸點處限制它們的移動,并在世界坐標下將這兩個剛體在該軸點處匹配,使其不能分離,例如常見的剛體鏈中剛體的約束關系就是點對點約束;鉸鏈 (Hinge)約束是在某個節(jié)點處建立限制兩個剛體的轉動軸,使其只能繞該軸旋轉,這個軸即為鉸鏈軸,例如門和門軸;滑動(Slider)約束則是指兩個剛體只能沿著某一條軸移動。
圖3 Bullet中的約束關系Fig.3 Constraint relation in Bullet
在為泵車的各個部件建立約束前,首先需要確定各個部件的約束種類。通過泵車實際操作演示視頻的分析,最終確認需要建立的泵車約束為40個鉸鏈約束、16個滑動約束,共計56個約束。
在Bullet中,大部分的約束針對的是剛體或者約束的局部坐標系,若要成功地使用Bullet物理引擎中的函數,創(chuàng)建一個滿足實際需求的應用程序,則需要對剛體的空間姿態(tài)或者約束軸進行調整。應用Rodrigues旋轉公式,繞單位向量 ,, 旋轉且旋轉角為的旋轉矩陣為
在獲取了物體的空間姿態(tài)以后,則可以通過式 (1)對物體進行調整。否則,建立的約束運動將和預期結果相差很大。圖4展示了使用和不使用旋轉公式調整空間姿態(tài)兩種情況下泵車左前支腿向外伸出的結果對比,使用的約束類型為滑動約束,其中圖4(a)為不調整空間姿態(tài)的運動結果,圖4(b)為調整姿態(tài)后的運動結果。
圖4 泵車的約束實現Fig.4 Constraint realization for pump truck
除此之外,泵車中還存在大量的約束嵌套關系,即便是簡單的支腿展開動作,也至少需要在支腿和車身的連接處建立一個包含4個約束的嵌套關系。如圖5所示。其中,右圖為左圖的局部放大圖。右圖中藍色線條表示存在鉸鏈約束,紅色虛線方框表示存在滑動約束。由此,確定此嵌套中哪個約束為驅動,哪些為從動至關重要。雖然現實中驅動約束應為紅色虛線框代表的約束4,但受限于計算機模擬的精度問題,經過反復的實驗,選定約束1為驅動約束能取得最好的表現效果。
同時,由于約束本質上反映的是兩個剛體之間的作用關系,因此剛體自身的屬性如質量、重心等都會對約束的表現效果起到非常大的影響。圖6展示了臂架抬起到一半以及臂架抬高到與車體成直角的效果圖。其中左圖為第一節(jié)臂架完全打開,右圖為打開一半。
圖5 泵車中的約束嵌套關系Fig.5 Constraint nesting relation in pump truck
圖6 泵車的臂架Fig.6 Arm frame of pump truck
在Windows 7操作系統下,使用VS 2010開發(fā)平臺和OSG圖形渲染引擎以及Bullet物理引擎實現虛擬駕駛系統。硬件環(huán)境為:Intel Xeon CPU X3440 2.53 GHz,4G RAM,顯卡為NVIDIA Ge-Force GTX460。
圖7為模擬的車模型與真車的對比,其中右圖為將所獲取的車模型各部件分解以后通過約束組裝后的靜止狀態(tài)圖,左圖為真實泵車樣圖。
圖7 模擬車與真車對比Fig.7 Comparison of simulation pump and real pump truck
圖8為下支腿全部展開的泵車正面視圖,可以很明顯地看到泵車整個車體被4條支腿支撐離開地面。
圖8 支腿展示Fig.8 Showing leg plank
圖9為在臂架側向伸展后,支腿打開與不打開的模擬結果對比圖,圖9(a)為支腿打開的情況,圖9(b)為支腿不打開的情況。顯然,臂架向側面展開后,在沒有打開支腿地情況,車會發(fā)生傾翻,這與實際情況相符。
圖9 支腿作用展示Fig.9 Showing the function of leg plank
最終,在加入了整個工況場景后,模擬的最終效果如圖10所示,其中圖10(a)為真實的泵車操作圖,圖10(b)為模擬結果圖。可以看到模擬的整個結果圖與實際情況相似度很高。需要指出的是,整個模擬過程幀率都穩(wěn)定在40幀左右。
圖10 最終模擬結果Fig.10 Final simulation result
針對大型工程車輛駕駛操作仿真中的復雜力學約束關系,引入了物理引擎中的簡單約束來擬真地表現車輛各組件的運動過程。實驗結果表明物理引擎的引入解決了此種車輛模擬的實時性與仿真效果的兼顧問題。
作為一個虛擬駕駛系統,光有物理視覺效果不足以讓用戶沉浸到虛擬環(huán)境中,還需要添加光照與陰影、聲音以及將鼠標與鍵盤的操作模式變?yōu)轳{駛室的操作模式,這將是后續(xù)研究的重點內容。
[1]王力軍,荊旭.汽車駕駛模擬系統的研究與進展 [J].農業(yè)裝備與車輛工程,2009(5):34-37.
[2]廖晉民,李峰,鐘國虎.地形影響下駕駛模擬器機動行為仿真技術研究 [J].系統仿真學報,2013,25(S1):390-393,400.
[3]Nikolaj Mole, Ga per Cafuta, Boris tok. A method for optimalblank shape determination in sheet metal forming based on numericalsimulations [J]. Journal of Mechanical Engineering, 2013,59(4): 237-250.
[4]Abdellatif Tesnim, Combaz Jacques, Sifakis Joseph. Rigorousimplementation of real-time systems-fromtheory to application[J].Mathematical Structures in Computer Science, 2013,23 (4):882-914.
[5]歐陽惠琴,陳福民.物理引擎與圖形渲染引擎綁定的研究與實現 [J].計算機工程與設計,2008,29(21):5580-5582.
[6]HarrisM. CUDAfluid simulation inNVIDIAPhysX [C] //ACMSIGGRAPH Asia 2008 Course Notes, Singapore, 2008: 28-42.
[7]Maciel A, Halic T. Using the PhysX engine for physics-basedvirtual surgery with force feedback [J]. International Journal ofMedical Robotics and Computer Assisted Surgery, 2009,5 (3):341-353.