容秀嬋,鄒湘軍, ,李承恩,林俊強,姚書杰,鄒天龍
(1. 華南農業大學工程學院,廣州市,510642; 2. 佛山市中科農業機器人與智慧農業創新研究院,廣東佛山,528200)
我國果園面積和水果產量均居世界第一,但我國果園管理總體水平與國際先進國家相差比較大,尤其是果園機械化、信息化和智能化管理技術差距更大[1]。為了適應不斷發展的林果產業種植生產規模,果園全生命周期管理的技術創新及革新是目前亟需解決的難題之一[2-3]。我國果園多是在丘陵山地、平原、農田上,山路崎嶇,地形變化大,導致果園作業難以智能化、機械化進行,如施肥、采摘、運輸產品等。其次,農業機械化水平仍比較落后,地形復雜,難以制定比較方便、通用的機械工具。因此,依托虛擬現實的建模與仿真技術[4-6],構建虛擬果園場景,發展信息化、智能化、機械化果園,是加速縮短與發達國家差距的迫切需要,對于加快推進農業農村現代化具有重要的意義[7]。同時信息化技術、虛擬現實技術、交互技術的不斷發展[8-9],與虛擬現實技術相結合的虛擬環境實驗平臺成為虛擬仿真技術發展的新方向[10],能有效加強信息化、智能化場景管理水平以及節約成本。
虛擬現實技術不僅推動工業的發展,還可以對農業的發展具有一定的推廣作用,通過該技術建立與農業相關的數據庫,農業生產可視化[11-12]。華南農業大學鄒湘軍等[13]開發了采摘機械手虛擬設計與仿真系統,實現了虛擬環境下的機械手對目標定位和采摘仿真實驗。羅陸鋒等[14]基于虛擬現實平臺EON開發出采摘機器人虛擬仿真系統,葡萄采摘的成功率在85%以上,此平臺驗證了通過虛擬機器人采摘葡萄進行算法驗證及訓練,驗證了虛擬平臺內對現實采摘算法開發過程的效率提升,有效縮短開發周期。劉旭泰[15]利用Unity3D構建了番石榴采摘的虛擬環境,用于檢測所設計的末端執行器的工作性能。Henten等[16]搭建了黃瓜采摘機器人采摘仿真平臺。Saudreau等[17]提出一種根據氣候數據對水果溫度動態進行建模的方法,該模型基于蘋果樹的三維虛擬表示,并將三維虛擬樹與基于物理的果實溫度動態模型聯系起來。
綜上所述,以果園場景平臺搭建為例,針對目前果園的需求與流程,以Unity3D為場景的開發平臺,結合典型開源關系型數據庫MySQL為三維模型特征信息參數存儲載體,并建立哈希索引列。在數據驅動下,快速構建出符合需求的三維模型,實現了大量三維模型的快速檢索調用。以果園場景為例,將天氣系統仿真場景數據、多種類果樹模型數據、實景掃描地形數據導入數據庫中,構建果園場景數據庫,快速創建虛擬果園場景仿真平臺。該平臺還留有六自由度機械臂關節運動的通用接口,以及拖拉機、收割機等運動控制腳本,方便后期用戶做試驗仿真時使用。
隨著虛擬仿真技術的廣泛應用,在虛擬仿真過程中需要對大量數據傳輸和存儲。采用系統與數據庫連接的方法,從而達到系統與數據庫的雙向交互,該方法具有簡單、高效等特點。由3ds Max建立并渲染后的三維模型,保存為虛擬引擎軟件Unity3D可支持導入的FBX、OBJ等格式文件。再添加一些場景元素,即可搭建逼真的虛擬場景平臺?;谥R的果園虛擬場景系統的搭建,以數據庫為場景模型存儲方式,其整體架構設計如圖1所示。

圖1 虛擬果園仿真平臺系統整體架構Fig. 1 Overall architecture of the virtual orchard simulation platform system
果園場景數據庫的主要設計過程如下。
1) 歸納整理果園場景中主要實體的特征值,提取后構建果園知識庫[18]。本文的果園知識獲取主要通過人工方式,從文獻收集、實例模型中整理出果園各實體的特征等設計知識,提煉后構建果園知識庫。
2) 果園知識參數化建模。模型參數化設計主要是由一個或幾個參數約束其調用后實例化的對象模型信息,此參數集合與設計對象的模型特征信息存在對應關系,通過修改參數值可以驅動原有模型生成具備變化的模型。根據果園知識庫,將其主要特征值進行參數化建模,并構建果園場景特征信息數據庫。
3) 利用三維建模軟件3ds Max對果園中的三維場景模型建模,將虛擬場景模型保存為FBX、OBJ等格式文件即可導入Unity3D中進行渲染優化,并構建果園三維模型庫。
4) 將Unity3D與數據庫雙向通信交互,并構建果園場景數據庫,用戶可根據需求快速檢索調用所需的虛擬場景模型。例如,通過參數調用成熟蘋果的模型實例化,從數據庫中隨機調用成熟的蘋果材質;從數據庫中隨機調用蘋果的三維模型;從數據庫中計算獲取成熟蘋果的生長概率分布等。
參數化建模是計算機輔助設計技術在長期發展過程中產生的課題,它是實現智能化設計的必要技術。數據量龐大、種類繁多、存儲方式、檢索、分類調用、數據管理及可移植性,是參數化建模亟需解決的難題之一。虛擬場景模型的存儲、檢索的關鍵在于充分利用模型的特征信息。虛擬場景模型的特征信息主要包括幾何特征、形狀特征和紋理特征等,現階段提取特征的方法包括人工設計特征描述提取技術和基于學習的特征描述符提取技術。本文參數化建模階段采用人工設計特征描述提取技術,根據三維模型的外表特征,構建參數化模型。
數據庫設計是將數據實體以及實體間的關系進行結構化設計,本文采用關系型數據庫進行數據存儲。關系型數據庫是由二維表及它們之間的聯系組成的數據組織,其原則包括原子性(automaticity)、一致性(consistency)、隔離性(isolation)和持久性(durability)。關系型數據庫擁有技術發展更成熟、更標準的數據模式和接口應用更廣泛等優點,更適用于建立參數化模型數據庫[19]。結合關系型數據庫管理系統MySQL,其擁有輕量級、性能高、開源[20]等特點,對于中小型系統,可降低成本,提升管理調用效率及可移植性[21]。
對果園場景進行數據庫設計,對虛擬果園場景的數據進行組織整理,對數據內部結構及模型特征進行歸納總結,實現虛擬場景模型數據和相關聯屬性數據的邏輯組織。最后根據模型數據的需求,對三維模型特征進行預處理,通過定義每個虛擬場景模型的特征,建立該數據實例化后的某種唯一確定屬性。關系數據庫將對全部模型數據和特征數據建立關系表進行管理,對模型文件的管理以表中存儲磁盤路徑的方式實現。
針對傳統的關系型數據庫對果園場景三維模型存儲和管理存在較多的瓶頸問題,綜合提高數據的插入和查詢功能,MySQL中通常選擇“B-Tree”數據結構作為存儲和索引結構,而使用B-Tree在二維表中存儲大量的虛擬場景模型URL地址信息時,由于URL地址信息數據過長,存儲內容占用過多內存空間,導致檢索效率慢、內存消耗大。本系統采用CRC32(循環冗余校驗)的方法,將虛擬場景模型URL地址信息轉為一定長度的哈希值。在果樹表的urL_crc32列建立哈希索引列,每當查詢該模型所在位置時,以int實數類型索引查詢其哈希值,提升檢索效率,并快速調用對應三維模型。
哈希算法是一種將任意長度的二進制值串映射為固定長度的二進制值串的規則,而通過原始數據映射之后得到的二進制值串就是哈希值。如表1所示,在MySQL中,只有Memory引擎默認支持哈希索引。如果存在多個hash值相同,發生哈希碰撞,那么該索引將以鏈表方式存儲。

表1 MySQL引擎支持的索引Tab. 1 Indexes supported by MySQL engine
如圖2所示,通過普通查找URL地址信息的時間與先轉化為哈希值在做查找的實驗對比。當數據量增加到30 000行時,能明顯看出哈希查找效率較高。

圖2 查找對比試驗Fig. 2 Search comparative experiment
果園場景擁有多種類型模型,而每種模型各自擁有多種形態變化,利用特征值加以區分及調用各種模型數據,如圖3所示。
1) 地形分為丘陵山地、平原、農田等,通過獲取不同地形的高度圖,利用高度圖該特征區分地形的不同;
2) 果實模型分為蘋果、菠蘿、香蕉等,通過果實的大小、果皮的顏色、質量、表面的粗糙程度等特征區分類別。通過人工設計特征描述提取技術,預處理果實的特征為參數型數據,并存儲到數據庫中,在Unity3D建模時,輸入該果實的特征數據,在相對應位置建立該特征對應的模型;
3) 果樹模型的特征分為枝葉的疏密程度,樹枝大小不同,樹葉大小及形狀等;果實在果樹上的分布按照選取的生長掛果情況,按隨機算法,使果實模型實例化分布在果樹模型上。
4) 天氣模型可分為陰天、雨天、大風、霧霾、打雷等天氣系統數據,用戶可自由選擇影響場景的任意一種天氣模型;
5) 光照按照光照強度可分為強光照、中度光照、弱光照等,按照光照種類可分為人造光,自然光等。

圖3 果園場景模型庫Fig. 3 Orchard scene model library
2.3.1 真實地形模型創建
可利用Unity3D自帶的地形組件——Terrain組件進行自定義地形塑造操作:對部分地形進行凸起操作使其變成山丘,山峰,對部分地形進行凹陷使其形成低洼或地形裂縫,但自定義地形建模不能真實反映當地果園的情況,且地形不夠自然、優化,本文通過獲取所需位置的真實地形數據,構建真實自然的虛擬場景地形。
獲取目的地的地形數據,以惠州鎮隆為例,如圖4、圖5所示。生成該地區的高度圖(Height map),經過格式轉換為.raw文件即可導入Unity3D中的Terrain組件當中。該地形數據與現實地形一一對應,其仿真度高,數據量少,導入時間短。

圖4 Terrain.party獲取地形數據Fig. 4 Terrain.party gets terrain data
由于導入進去的地形是mesh網格,要將其轉化為Unity3D地形工具才可使用。在制作地形的時候通常是直接刷出整個地形,但是在實際使用中由于地形過大,我們不能直接把整個地形完全加載,這樣對內存的消耗很高,所以需要一小塊一小塊的加載地形.這時就需要把制作好的地形分割成幾塊后,再來動態加載。該平臺將其分割成16塊地形分類。并進行篩選分類保存至相應位置,即可在一塊大地形中保存多種不同的真實地形模型,如圖6所示。

圖5 真實地形三維模型Fig. 5 3D model of real terrain

圖6 地形分割Fig. 6 Terrain segmentation
2.3.2 果樹建模
由于果實在樹上的分布多樣性,本文利用Unity3D中的射線碰撞檢測,構建多種分布的果樹。在虛擬空間的某一相對于果樹模型的正交平面上發射若干個射線,并通過改進組合碰撞檢測隨機算法獲取果實分布點,通過選取果實分布特征值,對分布點進行二次計算使之符合所選的特征分布情況。構建了20種的分布方式,在隨機實例化不同的果實,每一種果實構建出兩百多棵的果樹,并存儲相關信息到數據庫當中。圖7為其中一種果實分布的蘋果樹三維模型,圖8為菠蘿樹三維模型。為了方便后續做采摘仿真等實驗,采用的是果與樹組成果樹模型。

圖7 蘋果樹三維模型Fig. 7 3D model of apple tree

圖8 菠蘿樹三維模型Fig. 8 3D model of pineapple tree
在虛擬場景中,靜態模型之間相互接觸后,會出現穿模的現象,不符合在真實世界中物體之間互不干涉互不穿透的實體物理特性,如圖9所示。

圖9 球碰撞體Fig. 9 Sphere collider
使用基于物體空間的層次包圍盒碰撞檢測方法,使虛擬場景模型具備物理特性,該方法是對虛擬場景模型進行完全的包圍,通過計算判斷虛擬場景模型的三維包圍盒之間是否發生接觸。常見的三維干涉檢測包圍盒主要分為4種:球包圍盒、軸向包圍盒、方向包圍盒、6-Dop盒,其中球包圍盒的球體碰撞是碰撞檢測技術中較為簡單和計算消耗較少的,主要應用球狀的且具有旋轉操作的規則模型檢測,它的數學原理是通過判斷三維空間中坐標點與球包圍盒的球心的距離[22]。一般適用于球形零件或者場景中的非主要影響因子之間的干涉檢測。有助于減少系統的計算量,增加系統的流暢度。
為了實現物體的交互與仿真,需要在虛擬環境下構建事件觸發器。在良好的物理引擎的支持下,使用碰撞體可以逼真地模擬出現實物體的碰撞關系,而且碰撞體可以作為觸發器引發事件的發生。在Unity3D中內置有6種基本的碰撞體組件:盒子碰撞器(Box Collider)、球碰撞器(Sphere Collider)、膠囊碰撞器(Capsule Collider),車輪碰撞器(Wheel Collider)、網格碰撞器(Mesh Collider)、地形碰撞器(Terrain Collider),本文通過對果實添加球碰撞體(Sphere Collider),能更好地還原果實實體物理特性。
2.3.3 光照強度
Unity3D內置的光源包括Directional Light(平行光),Point Light(點光源),Spotlight(聚光燈),Area Light(區域光),Reflection Probe(反射探頭),Light Probe Group(光照探頭組)等,本平臺使用直接光照(Directional Light),其原理與太陽光近似,不受position與scale的影響,Rotation會影響到光線照射的方向。光源發出的光線只經過虛擬場景中物體對象一次反射后就進入攝像機。通過定義光照強度的特征值,調節Directional Light 中的intensity值,使實例化光源數據分為強度光照、中度光照、弱光照等多個光照等級,如表2所示。根據光照模型的特征取值不同,構建光照4×3矩陣模型

式中:a——光照強度的intensity值,數據類型為float型;
b——光距離值,數據類型為float型;
R、G、B——矩陣數值在0~255之間,數值大小表示允許通過色彩數值,也稱為灰度值,灰度越大,相應色彩越深;
α——透明度。

表2 Directional Light intensity值Tab. 2 Directional Light intensity data
以時間為依據,下列是果園場景中部分時間所使用的光照矩陣的值
早上6:10時的光照矩陣值
早上8:12時的光照矩陣值
中午12:56時的光照矩陣值
傍晚19:05時的光照矩陣值
系統采用Unity3D場景平臺開發工具(圖10),后端程序使用C#語言。后臺數據庫采用MySQL,基于Unity3D虛擬果園系統開發設計。該系統分為三部分,測試的服務端、客戶端和數據庫??蛻舳撕头斩硕际腔赨nity3D平臺開發的。服務器主要實現與數據庫的交互。Unity3D開發一般使用PlayerPrefs來存儲數據,但其數據量過于龐大,結構過于復雜、維護成本過高且過程繁瑣,因此選用使用數據庫來存儲數據。

圖10 系統架構Fig. 10 System structure
系統應用于果園場景仿真,主要分為以下幾塊:果園種植分布,果園天氣系統,果園果實果樹仿真系統,果園道路分布系統,果園澆灌系統,果園收獲仿真系統等。主要針對果園種植分布作解釋說明,建立果園果樹的株行距要根據果園的綜合情況而定,如土壤質地、肥力、水源條件、管理水平以及選用的品種等。在果園環境良好、果園管理水平較高的前提下,可用較小的株行距,如蘋果種植的株行距設置為2 m×3 m。根據氣候與土壤肥力及品種不同而異,可以采用不同的種植規格。通過查閱文獻,得到果園種植的參數[23]如表3所示。

表3 種植參數Tab. 3 Indexes supported by MySQL engine
利用虛擬漫游功能更加地了解農業自然以及農田的布局,是虛擬果園場景渲染平臺的關鍵。場景漫游主要分為兩種:人工漫游和自動漫游。本系統選用人工漫游功能。
在虛擬果園環境中通過控制攝像機完成漫游模式,利用C#編寫的腳本與UI界面按鈕交互完成。通過設定一個旋轉中心,通過鼠標滾輪控制視角的遠近、按住鼠標滾輪鍵拖動鼠標控制視角繞旋轉中心的旋轉、鍵盤點擊控制視角平移。
鼠標滾輪控制視角縮進與拉遠的定義
本體的描述語言,也稱之為表示語言、構建語言或者標記語言,種類較多,例如OKBC、OCML、XOL、OWL等。李景就其中13種重要的本體表示語言進行深入的比較分析,得出結論是:Loom、CycL和OWL是較佳的Ontology表示語言[9]。
Ds=Csmr×Smr
(1)
式中:Ds——視角移動前后位置的偏差,m;
Csmr——虛擬環境中視角縮進拉遠的縮放系數;
Smr——鼠標滾輪滾動量,有正負值,m。
鼠標移動控制視角旋轉的算法
(2)
式中:θx——視角在水平面上繞旋轉中心轉動的角度,rad;
θy——視角在垂直面上繞旋轉中心轉動的角度,rad;
Smy——鼠標縱向垂直移動量,mm;
Csmx——鼠標橫向移動量轉換為視角轉動角度的轉換系數,rad/mm;
Csmy——鼠標縱向移動量轉換為視角轉動角度的轉換系數,rad/mm。
鍵盤點擊控制視角移動的算法
(3)
式中:Kbi——檢測鍵盤按鍵是否按下;
bi——鍵盤對應按鈕編號。
(4)
式中:DK——視角位移量,m;
Db——視角平移單位量,m。
系統針對用戶的不同,可選擇兩種模式:自定義建模和自動建模方式。由于更能模擬真實果園場景,本文在自動建模方式中,給果樹排列添加了一個偏差值,使其更能反映真實果園的狀態。還添加雜草等干擾因素。自定義建模,是根據需求添加果樹模型的個數、位置。虛擬果園場景渲染平臺運行結果如圖11、圖12所示,實現了虛擬果園場景平臺自定義果樹建模以及自動排列果樹場景仿真,分別展示了丘陵山地、平原、田地不同場景不同果樹的場景平臺。交互方式主要通過鍵盤鼠標實現不同漫游模式,模擬不同角度觀察場景平臺模型,呈現出一定的環境效果。

圖11 蘋果果園場景虛擬仿真平臺Fig. 11 Virtual simulation platform of apple orchard scene

圖12 菠蘿果園場景虛擬仿真平臺Fig. 12 Virtual simulation platform of pineapple orchard scene
虛擬果園場景平臺登陸與注冊界面,登錄后可獲取當地的天氣、溫度,通過Dropdown組件選擇自定義模式/自動模式,果樹模型,以及地形,如圖13所示,可根據需求檢索導出所需要的果樹,鼠標點擊場景任意位置可添加此三維模型,也可多次添加模型,見圖14。

圖13 蘋果果園場景虛擬仿真平臺(自定義建模)Fig. 13 Virtual simulation platform of apple orchard scene(Custom modeling)

圖14 香蕉果園下雨場景虛擬仿真平臺Fig. 14 Banana orchard rain scene virtual simulation platform
為了試驗本系統的實用性,選擇20不同案例進行測試,測試結果見表4。該平臺能保證仿真系統運行的流暢度,給用戶最佳的體驗。

表4 平臺試驗情況統計Tab. 4 Statistical of platform test
為了按照不同用戶要求及場景參數,自動批量化快速生成多個虛擬場景迎合用戶生產仿真需求,對三維模型特征信息進行提取、參數化建模,進而存儲到數據庫當中,建立哈希索引列加快檢索的方法,提高大量虛擬場景模型存儲、檢索的效率,該方法能有效地加快模型查詢效率,快速建立虛擬場景模型。也能為后期虛擬場景模型新增提供了快速存儲的方式。本文以果園場景平臺搭建為例,針對試驗場景平臺虛擬仿真問題,為提高工作效率,最大限度減少人力、物力和時間的浪費,運用了哈希索引,MySQL數據庫結合虛擬現實平臺,實現了虛擬場景中果園場景中三維模型的構建、三維場景模擬及人機交互界面的搭建,對虛擬場景平臺提供了計算機輔助支持。仿真結果表明,該系統可以較好地支持場景平臺的虛擬設計與仿真,且三維模型檢索效率也有所提高,縮短了農業領域的開發周期,也可為其他場景搭建的虛擬設計提供技術借鑒。該平臺還留有六自由度機械臂關節運動的通用接口,以及拖拉機、收割機等運動控制腳本,方便后期用戶做實驗仿真時使用。