



摘 要: 為了降低研究實體機器魚在探查高原湖泊過程中所造成的損害及成本,利用Visual C++開發(fā)環(huán)境和OpenGL圖形庫設計和實現(xiàn)了仿生機器魚的三維避障仿真系統(tǒng)。該系統(tǒng)可以使用戶直觀感知機器魚的實時運動狀態(tài),用戶不僅可以控制機器魚的起始、目標位置和起始角度而且可以從不同角度監(jiān)測機器魚的當前位置和避障路徑。仿真結果表明該系統(tǒng)能夠逼真地顯示機器魚在場景中的運動情況。
關鍵詞: 仿生機器魚; 三維避障仿真系統(tǒng); Visual C++; OpenGL
中圖分類號: TN911?34; TP391.9 文獻標識碼: A 文章編號: 1004?373X(2016)20?0078?05
Abstract: In order to reduce damage and cost caused by researching on the process in which the entity robotic fish explores plateau lakes, the 3D obstacle avoidance simulation system of the simulation robotic fish was designed and implemented with the help of Visual C++ development environment and OpenGL graphics library. The system enables users to perceive the real?time motion state of the robotic fish intuitively. In this system, the users can not only control the start and target position and initial angle of the robotic fish, but also monitor the current position and obstacle avoidance path of the robotic fish from different angles. The simulation result shows that this system can display the movement of the robotic fish in the scene exactly.
Keywords: bionic robotic fish; three?dimensional obstacle avoidance simulation system; Visual C++; OpenGL
0 引 言
青藏高原是我國最大的高原,也是我國湖泊分布最密集的地區(qū)之一[1?2]。由于全球氣候變暖和人類活動的雙重影響,青藏高原的水生態(tài)環(huán)境在急劇的惡化,大多數(shù)的湖泊都出現(xiàn)了退縮甚至消亡的現(xiàn)象。青藏高原是三江的發(fā)源地,如果這種惡化趨勢不能有效地得到控制,那么下游的生態(tài)環(huán)境也將受到影響,所以要對青藏高原的水生態(tài)環(huán)境進行探查、保護和改善。由于青藏高原的環(huán)境惡劣,人工探查水環(huán)境的工作比較困難,因此水下機器人的研究將會減少很多繁瑣的程序。
仿生機器魚作為水下機器人大家族的一員,因其擁有工作時間長、運動范圍大、能在機動性能要求比較高的水下環(huán)境工作等優(yōu)點,它可以進行海底勘測、海洋生物觀察、海洋生物考察、海洋救生等許多工作[3?4],所以仿生機器魚的研究將會給以后高原水環(huán)境的探查帶來很多優(yōu)勢。仿生機器魚水下工作的前提是其要擁有自主導航與避障能力,然而用實體機器魚進行避障能力研究,其過程將會對機器魚造成很大損害,而且費用成本也很高,所以采用虛擬現(xiàn)實技術模擬具有真實感的虛擬仿真環(huán)境[5],不僅能夠降低研發(fā)費用而且能夠直觀地觀察機器魚避障。
1 仿生機器魚三維仿真系統(tǒng)的整體結構
本文設計的三維避障仿真系統(tǒng)主要是由人機交互層、數(shù)據(jù)層和對象層構成。仿真系統(tǒng)的整體結構如圖1所示。其中,人機交互層由人機交互模塊組成,對象層由仿真環(huán)境模塊、傳感器模塊、行為決策模塊和機器魚模塊組成。
人機交互層是仿真系統(tǒng)和用戶之間進行交互和信息交換的媒介[6],用戶可以通過人機交互模塊初始化機器魚的起始位置和目標位置、加載不同的障礙物地圖和實時控制機器魚的運動過程,包括啟動、暫停、復位和顯示路徑等。數(shù)據(jù)層主要是將人機交互層與對象層的數(shù)據(jù)進行存儲與交換,數(shù)據(jù)層將用戶通過人機交互層初始化環(huán)境對象的信息和控制命令傳送給對象層;對象層根據(jù)用戶的要求實時更新仿真過程;數(shù)據(jù)層將對象層中實時的仿真過程反饋給人機交互層顯示。對象層是負責實時刷新系統(tǒng)中仿真環(huán)境和機器魚的運動狀態(tài),傳感器模塊將探測到的障礙物信息傳送給行為決策模塊,由行為決策模塊決策出機器魚的下一步位置與狀態(tài),直至到達目標。
2 仿真系統(tǒng)的界面設計
系統(tǒng)的界面設計是用戶與計算機之間交換信息的媒介,良好的界面設計便于用戶能夠更加直觀地了解系統(tǒng)功能。通過用戶界面,用戶可以使用輸入設備對系統(tǒng)功能進行控制,系統(tǒng)收到命令后將效果圖通過用戶
界面反饋給用戶。
2.1 框架的構建
由于OpenGL沒有提供窗口系統(tǒng)功能,因此要使用Visual C++中的AppWizard建立一個基于MFC的單文檔工程即可創(chuàng)建框架,其基本方法與步驟如下:
(1) 創(chuàng)建項目文件:選擇 “File”菜單中的“New”選項,在新建框中打開工程選項卡,選擇MFCAppWizard[exe],建立一個基于單文檔的工程文件。
(2) 在Project?>Setting?>link的Object/library modules中添加opengl32.lib,glu32.lib,glaux.lib,應用程序即可訪問OpenGL的庫函數(shù)。
(3) 構建OpenGL圖形程序的框架,完成OpenGL窗口的創(chuàng)建和初始化工作,其過程如圖2所示。
2.2 系統(tǒng)功能的實現(xiàn)
為了能夠更加直觀地操作和觀察機器魚的避障能力,設計了操作、顯示和視圖三個主要的系統(tǒng)功能。
(1) 操作功能是實現(xiàn)用戶對機器魚避障任務的操控,主要包括開始、暫停、復位、加載地圖和改變機器魚的初始位置和目標點位置。
(2) 顯示功能是顯示機器魚避障的路徑,這是為了全面地了解機器魚從起始位置到目標位置的避障過程。
(3) 視圖功能是為了不讓用戶受到視域范圍的限制,提供了全局俯視、后視、側視和近俯視4種觀察角度。為了能讓用戶體驗到真實感,三維仿真環(huán)境得符合“遠大近小”的視覺感受,這種視覺效果由OpenGL提供的照相機模型實現(xiàn)。照相機模型定義了照相機的視點和視域,視點相當于觀察者的眼睛,視域指的是觀察者能夠觀察到的范圍。視景體是由照相機視線方向的近裁切面Pn和遠裁切面Pm裁剪后形成的四棱臺確定,在視景體內的模型會被顯示出來,不在的則會被裁剪。照相機的觀察空間如圖3所示。圖4顯示的是在不同視角所觀察到的場景,其功能是由函數(shù)gluLookAt()實現(xiàn)。
3 三維場景的模擬
場景的模擬是三維可視化仿真的核心。要建立一個具有真實感的虛擬避障環(huán)境,不僅僅要模擬機器魚和障礙物,還要模擬三維真實感地形,這樣才能夠更逼真地反映外部真實世界。
3.1 機器魚模擬
外形呈流線型的魚類具有機動性能優(yōu)異、游動速度快、游動效率高等許多優(yōu)點,所以本系統(tǒng)中的仿生機器魚將使用曲線和曲面來繪制。 一般繪制光滑的曲線和曲面都使用大量的基本圖元來近似擬合,但這種方法不夠精確而且需要大量的計算量。OpenGL的輔助庫函數(shù)還提供了NURBS接口,它是GLU的高層NURBS工具,使用NURBS建模的方法繪制復雜曲線和曲面,建模速度快而且精度也很高。
在系統(tǒng)中,采用NURBS建模的方法構建機器魚模型,圖5為虛擬機器魚的效果圖,其構建步驟如下:
(1) 調用glEnable(GL_TEXTURE_2D)函數(shù)對NURBS曲面進行紋理貼圖。
(2) 創(chuàng)建NURBS對象的指針,在創(chuàng)建NURBS曲面時要用到。
(3) 調用gluBeginSurface()函數(shù),開始繪制曲面。
(4) 調用gluNurbsSurface()函數(shù),生成和繪制NURBS曲面。
(5) 調用gluEndSurface()函數(shù),結束繪制曲面。
3.2 障礙物模擬
三維避障仿真系統(tǒng)主要是研究仿生機器魚的避障能力,所以障礙物的模擬是必不可少的。OpenGL實用庫包含了43個以glu為前綴的函數(shù)[7?8],這類函數(shù)提供了簡單的調用方法,其實質是調用核心函數(shù),目的是減輕開發(fā)者的編程工作量。OpenGL實用庫提供了簡單物體函數(shù),可以繪制球體、圓柱、圓錐等,這大大降低了模擬障礙物的難度和復雜度。用戶可以通過加載不同的地圖顯示不同類型的障礙物,本系統(tǒng)加載地圖是通過加載地圖文件的形式實現(xiàn),地圖文件的主要內容是:障礙物的總數(shù)、障礙物的類型標識、不同類型障礙物的幾何信息和坐標。采用文件形式加載地圖顯示不同的障礙物的方法簡單又方便。
3.3 地形模擬
地形是自然界最復雜的景物。地形的模擬有兩種:真實地形與模擬地形。如果地形模擬使用真實地形,必須要采用真實世界中的具體數(shù)據(jù)來構建,其過程非常復雜,而且圖形生成速度慢。在三維避障可視化過程中對地形的生成要求不是很高,只需要使用戶在感觀上滿足,所以采用模擬地形就可以。對于非真實地形的模擬一般采用隨機生成地形高程數(shù)據(jù)的方法或者采用分形法生成地形[9?10]。在本系統(tǒng)中,將采用隨機生成地形高程數(shù)據(jù)的方法來模擬地形。該方法的使用首先要隨機生成一些特征點的高程數(shù)據(jù),為了使地形更加接近于真實,對隨機生成的高程數(shù)據(jù)進行平滑處理,防止形成尖銳的凸起或凹陷地形,然后將外部紋理映射上去。使用這種方法生成的地形雖然和真實的地形一模一樣,但也很美觀,而且生成的速度很快。圖6顯示的是地形場景的模擬。
4傳感器模擬及障礙物探測
4.1 傳感器模擬
根據(jù)要求在機器魚的頭部放置了4個紅外傳感器L1,R1,L2,R2,圖7是傳感器配置示意圖。L1,R1放置在機器魚頭部正前方,偏離機器魚中軸線角度為α和-α,L2,R2放置離機器魚中心點d處兩側,偏離機器魚中軸線角度為2α和-2α。
本系統(tǒng)采用虛擬射線法[11]模擬紅外傳感器,即假設從傳感器這點發(fā)射出多條虛擬射線,傳感器的探測范圍為虛擬射線形成的扇形角θ,傳感器探測的最長距離為扇形的半徑l。根據(jù)虛擬射線與傳感器中心線的夾角和其長度可以得知虛擬射線端點的坐標,這時虛擬射線端點的坐標是由傳感器坐標系表示的。要想得知傳感器探測范圍內是否有障礙物,必須通過判斷虛擬射線探測點與障礙物在同一坐標系下的位置關系。仿真環(huán)境中所有障礙物的位置是由世界坐標系表示的,所以要將虛擬射線端點的坐標進行變換。已知虛擬射線端點在傳感器坐標系下的坐標,傳感器在機器魚坐標系下的坐標和機器魚在世界坐標系下的坐標,經(jīng)過兩次變換,可以得到虛擬射線端點在世界坐標系下的坐標。
4.2 障礙物探測
本系統(tǒng)將障礙物分為球體類和柱體類這兩類,這是為了簡化探測不同類型的障礙物。
(1)球體類障礙物的探測。對于球體類的障礙物采用包圍球的探測方法。包圍球的半徑是球體類障礙物中心到球表面最長的距離。根據(jù)傳感器探測點M到球心的距離和包圍球半徑可以判斷是否探測到障礙物,如圖8所示。
(2)柱體類障礙物的探測。對于柱體類的障礙物采用包圍盒的探測方法。包圍盒的頂點坐標是由柱體類障礙物每個頂點坐標分量的最大值和最小值確定。因為本系統(tǒng)探測的是xz平面的障礙物,所以根據(jù)傳感器探測點世界坐標x,z的分量與包圍盒頂點x,z分量的最大值和最小值進行比較來判斷是否探測到障礙物,如圖9所示。
5 模糊控制器的設計
仿生機器魚能夠成功的完成避障,前提是能夠在虛擬環(huán)境中安全避障、從起始點運動到指定位置、規(guī)劃出最佳路徑等。采用良好的路徑規(guī)劃方法能夠減短工作時間,提高工作效率。為了使仿生機器魚能夠在環(huán)境未知的情況下準確的、快速的到達目標,本系統(tǒng)采用模糊邏輯算法根據(jù)紅外傳感器的配置設計了L1,R1,L2,R2轉角模糊控制器和速度模糊控制器來對機器魚的避障行為進行決策。
系統(tǒng)中4個傳感器探測到障礙物與機器魚之間的距離分別為dL1,dR1,dL2,dR2,其中,dL1,dR1是L1,R1轉角模糊控制器的輸入,dL2,dR2是L2,R2轉角模糊控制器的輸入,將4個傳感器探測到障礙物與機器魚之間最短的距離d作為速度模糊控制器的輸入。
5.1 模糊處理
在模糊控制系統(tǒng)中,傳感器探測到的信息是精確量,需將其轉換成模糊語言變量值。系統(tǒng)中各傳感器探測到的障礙物與機器魚之間距離分別量化到[0,12]的區(qū)間內,設定輸入語言變量DL1,DR1,DL2,DR2,D的論域均為[0,1,2,3,4,5,6,7,8,9,10,11,12],定義輸入語言變量的語言值為ST(很近)、SR(較近)、S(近)、M(中)、B(遠)、BR(較遠)、BT(很遠)。將傳感器探測到的障礙物位置與機器魚的位置相比較,得到輸入角度θ,將θ量化到[-5,5]的區(qū)間內,設定輸出轉角的語言變量Ф的論域為[-5,-4,-3,-2,-1,0,1,2,3,4,5],定義輸出轉角語言變量的語言值為NB(右轉大角度),NM(右轉中角度),NS(右轉小角度),0,PS(左轉小角度),PM(左轉中角度),PB(左轉大角度),CANNOT(不能決策)。同理,設輸出速度的語言變量V的論域為[0.03,0.5],定義輸出語言變量的語言值為VSB(速度最小)、VSM(速度小)、VSS(速度較小),VM(速度適中),VBS(速度較大),VBM(速度大),VBB(速度最大)。
5.2 模糊規(guī)則
模糊規(guī)則反映了輸入和輸出變量之間的關系,模糊規(guī)則庫是模糊系統(tǒng)的核心。模糊系統(tǒng)的其他組成部分都是以一種合理而有效的方式來執(zhí)行這些規(guī)則。由于L1與R1位于機器魚頭部的正前方,探測范圍有限,無法判斷哪一側離障礙物更近,所以當L1,R1探測到障礙物與機器魚之間的距離經(jīng)模糊化后,得到相同的模糊語言值時,輸出模糊語言值為CANNOT(不能決策),由L2,R2轉角模糊控制器決定下一步策略。表1~表3分別是L1,R1轉角模糊控制器規(guī)則表、L2,R2轉角模糊控制器規(guī)則表和速度模糊控制器規(guī)則表。
5.3 清晰化
清晰化是指將模糊推理后得到的模糊語言值轉換為用作控制的精確值。清晰化的過程可采用重心法[12]實現(xiàn)。通過重心法對模糊控制量進行處理得到精確的轉角值和速度值來控制機器魚避障。
6 仿真結果
根據(jù)上述方法開發(fā)仿生機器魚的三維避障系統(tǒng),仿真結果如圖10所示,由圖10可以看出,機器魚能夠自主地、安全地避開障礙物,順利地到達目標點。
7 結 語
相比用實體機器魚研究避障能力,使用用于避障研究的仿生機器魚三維仿真系統(tǒng)更能有效地檢測避障算法而且還能減少許多費用和難度。并且通過仿真結果可得,基于VC++與OpenGL構建的三維避障仿真系統(tǒng)能夠逼真和可靠地模擬實際情況,這樣為研究機器魚避障能力提供了很方便的平臺。同時,它也為今后制造實體機器魚來探查高原湖泊環(huán)境提供了基礎,減少了很多復雜的工作。
參考文獻
[1] 馬榮華,楊桂山,段洪濤,等.中國湖泊的數(shù)量, 面積與空間分布[J].中國科學:地球科學,2011,41(3):394?401.
[2] 劉蕾,臧淑英,邵田田,等.基于遙感與GIS的中國湖泊形態(tài)分析[J].國土資源遙感,2015,27(3):92?98.
[3] 劉英想,劉軍考,陳維山,等.新型兩關節(jié)機器魚的研制及實驗研究[J].船舶工程,2008,30(4):28?31.
[4] 張葉蒙.多仿生機器魚協(xié)調控制研究[D].天津:天津大學,2010.
[5] FANG X, HE H, NI Z, et al. Learning and control in virtual reality for machine intelligence [C]// Proceedings of 2012 Third International Conference on Intelligent Control and Information Processing (ICICIP). [S.l.]: IEEE, 2012: 63?67.
[6] 張璐.基于虛擬現(xiàn)實技術的用戶界面設計與研究[D].上海:東華大學,2013.
[7] SHREINER D, SELLERS G, KESSENICH J M, et al. OpenGL programming guide: the official guide to learning OpenGL, version 4.3 [M]. [S.l.]: Addison?Wesley, 2013.
[8] WRIGHT R S, HAEMEL N, Jr, SELLERS G, et al.OpenGL超級寶典[M].付飛,李艷輝,譯.5版.北京:人民郵電出版社,2012.
[9] SMELIK R M, DE KRAKER K J, TUTENEL T, et al. A survey of procedural methods for terrain modeling [C]// Proceedings of the CASA Workshop on 3D Advanced Media in Gaming and Simulation (3AMIGAS). [S.l.]: CASA, 2009: 25?34.
[10] YAO Hongge. The realization of flight simulation system based on OpenGL[C]// Proceedings of 2010 Second International Conference on Information Technology and Computer Science (ITCS). [S.l.]: IEEE, 2010: 198?201.
[11] 葉秀芬,關紅玲,張哲會,等.用于避障研究的微型仿生機器魚三維仿真系統(tǒng)[J].中國圖象圖形學報,2011,16(3):462?468.
[12] 孟廷豪.基于模糊控制的機器人避障研究[D].太原:中北大學,2013:49?50.