梁 航,陳湘驥,陳煜塬,黃俊曦
(華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,廣州 510642)
隨著人工智能興起,在科研、工業(yè)領(lǐng)域,虛擬仿真技術(shù)為調(diào)試提供了便捷高效的途徑,對(duì)虛擬仿真技術(shù)的需求量越來越大。近年來,對(duì)機(jī)器人技術(shù)的研究趨勢(shì)也逐漸成為熱點(diǎn),并且更加緊密地與虛擬技術(shù)相結(jié)合。例如,Liu等[1]通過Unity3D-ROS 來設(shè)計(jì)虛實(shí)交互的自動(dòng)送貨機(jī)器人,實(shí)現(xiàn)了智能交通系統(tǒng)。Yang 等[2]結(jié)合Unity、ROS、Matlab 和SimulIDE 來仿真和跟蹤多旋翼無人機(jī)的生命周期,搭建了多旋翼無人機(jī)數(shù)字孿生仿真平臺(tái)。Sita 等[3]通過ROSUnity3D 來模擬和執(zhí)行工業(yè)工程監(jiān)控任務(wù),實(shí)現(xiàn)了工業(yè)機(jī)器人過程監(jiān)控系統(tǒng)。Ma 等[4]通過結(jié)合ROS 與Qt 來實(shí)現(xiàn)協(xié)調(diào)行為仿真、半物理仿真和全硬件實(shí)驗(yàn)之間的無縫過度,研發(fā)了多機(jī)器人系統(tǒng)模擬器。高帆等[5]通過Unity3D 實(shí)現(xiàn)對(duì)虛擬工業(yè)機(jī)器人的姿態(tài)控制。張朝興等[6]通過ROSUnity 來實(shí)現(xiàn)虛擬機(jī)器人和真實(shí)機(jī)器人交互移動(dòng)控制。陳修龍等[7]結(jié)合仿真技術(shù)驗(yàn)證機(jī)器人機(jī)構(gòu)動(dòng)力學(xué)建模的正確性。這類系統(tǒng)將虛擬仿真技術(shù)與機(jī)器人技術(shù)結(jié)合應(yīng)用于科研、工業(yè)領(lǐng)域,并且取得了不錯(cuò)的成效。
近年來,將虛擬仿真技術(shù)結(jié)合學(xué)科用于教育領(lǐng)域也逐漸成為熱點(diǎn)。楊鑫科等[8]基于Unity3D 開發(fā)應(yīng)用于反恐排爆機(jī)器人的虛擬實(shí)驗(yàn)教學(xué)系統(tǒng)。費(fèi)杰等[9]基于Unity 設(shè)計(jì)一套DR 可交互仿真教學(xué)工作站,對(duì)醫(yī)學(xué)實(shí)驗(yàn)教學(xué)具有重要意義。鄧成俊等[10]結(jié)合Unity3D 與.Net 技術(shù),通過計(jì)算機(jī)模擬操作整個(gè)檢修過程,提升電力施工從業(yè)人員的操作技能。王鈺明等[11]結(jié)合應(yīng)用虛擬仿真技術(shù)使用虛擬車取代實(shí)車測(cè)試,提高了實(shí)驗(yàn)教學(xué)效果。丁毓峰等[12]基于Unity3D 設(shè)計(jì)機(jī)電產(chǎn)品虛擬拆裝實(shí)驗(yàn)系統(tǒng),在工程類實(shí)驗(yàn)教學(xué)中取得良好效果。吳可玉等[13]采用Unity3D與3dmax 實(shí)現(xiàn)虛擬現(xiàn)實(shí)消防沉浸式體驗(yàn),可輔助大眾進(jìn)行消防訓(xùn)練與安全教育。黃福鈺[14]基于Unity3D 開發(fā)了以戚繼光抗倭為主要內(nèi)容的歷史類RPG 教育游戲“抗倭風(fēng)云”,實(shí)現(xiàn)教育游戲教育性與游戲性有效融合。靳雁霞等[15]基于Unity3D 開發(fā)算法類演示系統(tǒng),生動(dòng)形象地將算法理論演變成實(shí)際實(shí)例,收獲了更好的教學(xué)效果和更大的教學(xué)意義。尹立航[16]采用Unity3D 和3Dmax開發(fā)了通信基站模擬仿真系統(tǒng),提升了實(shí)訓(xùn)教學(xué)效果。這類系統(tǒng)將虛擬仿真技術(shù)結(jié)合各類學(xué)科進(jìn)行研發(fā),有效提高了教學(xué)質(zhì)量,但仍然缺少應(yīng)用于機(jī)器人方向教育的虛擬實(shí)驗(yàn)平臺(tái)。
本文基于現(xiàn)有前沿虛擬仿真技術(shù),針對(duì)線上線下混合式實(shí)驗(yàn)教學(xué)中存在的難點(diǎn),通過Unity3D 引擎與ROS 機(jī)器人操作系統(tǒng)相結(jié)合,設(shè)計(jì)了一套虛實(shí)結(jié)合的實(shí)驗(yàn)教學(xué)平臺(tái),能夠?qū)崿F(xiàn)實(shí)體機(jī)器人與虛擬場(chǎng)景的交互,在仿真場(chǎng)景里完成機(jī)器人的實(shí)驗(yàn)教學(xué)工作。
基于Unity3D-ROS 的機(jī)器人技術(shù)實(shí)驗(yàn)教學(xué)平臺(tái)的主要目標(biāo)是讓學(xué)生在使用實(shí)體機(jī)器人操作之前,先在虛擬軟件上完成大部分的設(shè)計(jì),從而將機(jī)器人教學(xué)中機(jī)器人設(shè)計(jì)的難點(diǎn)盡可能地在軟件中得以處理和解決。同時(shí),平臺(tái)對(duì)學(xué)生的操作過程進(jìn)行實(shí)時(shí)的記錄和評(píng)估,以便教師及時(shí)發(fā)現(xiàn)問題并給予學(xué)生指導(dǎo)。
完整的實(shí)驗(yàn)涉及三個(gè)階段,根據(jù)學(xué)生在校情況可以選擇開展哪些階段的實(shí)驗(yàn)。
第一階段,在仿真場(chǎng)景和仿真機(jī)器人的系統(tǒng)中,設(shè)計(jì)和調(diào)試機(jī)器人控制系統(tǒng)(ROS),目標(biāo)是讓機(jī)器人控制系統(tǒng)達(dá)到設(shè)計(jì)要求,為第二階段在仿真環(huán)境下機(jī)器人虛實(shí)聯(lián)調(diào)做準(zhǔn)備。
第二階段,在仿真場(chǎng)景和實(shí)體機(jī)器人的情況下,調(diào)試機(jī)器人控制系統(tǒng)與機(jī)器人實(shí)體部件之間協(xié)同工作的效果,目標(biāo)是在第一階段的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)和調(diào)試機(jī)器人控制系統(tǒng)(ROS)和驗(yàn)證機(jī)器人實(shí)體部件協(xié)同工作是否達(dá)到設(shè)計(jì)要求,為第三階段在真實(shí)場(chǎng)景下調(diào)試實(shí)體機(jī)器人整體系統(tǒng)做準(zhǔn)備。
第三階段,在真實(shí)場(chǎng)景和采用實(shí)體機(jī)器人的情況下進(jìn)行整體系統(tǒng)調(diào)試,目標(biāo)是驗(yàn)證上述兩個(gè)階段的設(shè)計(jì)是否達(dá)到最終目標(biāo)。
機(jī)器人技術(shù)實(shí)驗(yàn)教學(xué)平臺(tái)的實(shí)施流程圖如圖1所示。
圖1 機(jī)器人技術(shù)實(shí)驗(yàn)教學(xué)平臺(tái)實(shí)施流程圖
通過上述三個(gè)階段,能夠讓學(xué)生先在虛擬環(huán)境里設(shè)計(jì)與調(diào)試機(jī)器人控制系統(tǒng),逐步脫離仿真環(huán)境,迭代驗(yàn)證機(jī)器人軟件和硬件的設(shè)計(jì)是否達(dá)到標(biāo)準(zhǔn),最后完成設(shè)計(jì)一臺(tái)實(shí)體機(jī)器人。通過這種方式,達(dá)到了機(jī)器人線上線下混合式教學(xué)的目的,相比傳統(tǒng)方法,能極大地提高機(jī)器人教學(xué)效率、節(jié)約成本、減少損耗。
在Unity3D 里同等比例仿真了機(jī)器人與場(chǎng)地,并仿真了激光雷達(dá)、里程計(jì)與攝像頭。給仿真里程計(jì)加入噪聲模擬真實(shí)里程計(jì)的累積誤差,能夠提供虛擬機(jī)器人的位姿信息。使用仿真激光雷達(dá)在虛擬場(chǎng)景進(jìn)行掃描,以提供機(jī)器人操作系統(tǒng)所需要的激光雷達(dá)數(shù)據(jù)。使用仿真攝像頭能夠提供虛擬場(chǎng)景的圖像信息。
在仿真場(chǎng)景與仿真機(jī)器人部件的基礎(chǔ)上,第一階段使用Unity3D-ROS調(diào)試機(jī)器人控制系統(tǒng)的具體流程圖如圖2所示。
圖2 機(jī)器人技術(shù)實(shí)驗(yàn)教學(xué)平臺(tái)第一階段模擬流程圖
第二階段使用Unity3D-ROS調(diào)試實(shí)體機(jī)器人的具體流程圖如圖3所示。
圖3 機(jī)器人技術(shù)實(shí)驗(yàn)教學(xué)平臺(tái)第二階段模擬流程圖
第一階段,在仿真場(chǎng)景和仿真機(jī)器人部件的情況下,使用Unity3D調(diào)試機(jī)器人控制系統(tǒng)。
Unity 端使用仿真激光雷達(dá)和仿真攝像頭為機(jī)器人提供仿真場(chǎng)景信息,使用仿真里程計(jì)提供Unity 虛擬機(jī)器人的位姿信息。ROS 端利用這些信息構(gòu)建地圖和目標(biāo)識(shí)別,給出指令控制Unity 虛擬機(jī)器人在虛擬場(chǎng)景里運(yùn)動(dòng),與虛擬場(chǎng)景發(fā)生交互。另外,在第一階段需要給仿真場(chǎng)景加入運(yùn)動(dòng)慣性,使物理模型盡可能地貼近真實(shí)場(chǎng)景,為第二階段仿真環(huán)境下機(jī)器人虛實(shí)聯(lián)調(diào)做準(zhǔn)備,數(shù)據(jù)通訊圖如圖4所示。
圖4 仿真環(huán)境下調(diào)試機(jī)器人控制系統(tǒng)數(shù)據(jù)通訊圖
第二階段在第一階段基礎(chǔ)上保留仿真場(chǎng)景,使用實(shí)體機(jī)器人部件替換仿真部件,使用Unity3D 調(diào)試實(shí)體機(jī)器人。其中,部分器件可以使用真實(shí)部件,也可以使用虛擬部件,能夠充分地對(duì)每一個(gè)部件的性能進(jìn)行調(diào)試。
在Unity 端使用仿真激光雷達(dá)和仿真攝像頭為機(jī)器人提供仿真場(chǎng)景信息。ROS 利用這些信息在一片空地上構(gòu)建地圖和目標(biāo)識(shí)別,控制實(shí)體機(jī)器人在真實(shí)場(chǎng)地上運(yùn)動(dòng),同時(shí)控制Unity 虛擬機(jī)器人在虛擬場(chǎng)景里運(yùn)動(dòng),實(shí)現(xiàn)虛擬場(chǎng)景和真實(shí)運(yùn)動(dòng)的融合。由于實(shí)體機(jī)器人與虛擬場(chǎng)景無法發(fā)生物理碰撞,因而,虛擬場(chǎng)景中與實(shí)體機(jī)器人接觸部分需要與真實(shí)場(chǎng)景一致,非接觸部分例如墻壁、障礙物、遠(yuǎn)程攻擊目標(biāo)等則為虛擬構(gòu)件。通過第二階段的迭代測(cè)試,進(jìn)一步設(shè)計(jì)和調(diào)試機(jī)器人控制系統(tǒng)(ROS)和驗(yàn)證機(jī)器人實(shí)體部件協(xié)同工作是否達(dá)到設(shè)計(jì)要求,為第三階段在真實(shí)場(chǎng)景下調(diào)試實(shí)體機(jī)器人整體系統(tǒng)做準(zhǔn)備。數(shù)據(jù)通訊圖見圖5。圖6 所示場(chǎng)景中實(shí)體機(jī)器人與Unity虛擬機(jī)器人正在同步運(yùn)作。
圖5 仿真環(huán)境下機(jī)器人虛實(shí)聯(lián)調(diào)數(shù)據(jù)通訊圖
圖6 實(shí)體機(jī)器人與Unity虛擬機(jī)器人同步運(yùn)作
第三階段,完全脫離虛擬仿真技術(shù),按照仿真場(chǎng)景比例布置出真實(shí)場(chǎng)景,使用實(shí)體機(jī)器人并開啟真實(shí)激光雷達(dá)與攝像頭,在真實(shí)場(chǎng)景下調(diào)試機(jī)器人整體系統(tǒng)。驗(yàn)證前面兩個(gè)階段的設(shè)計(jì)是否達(dá)到最終目標(biāo),若達(dá)到最終目標(biāo)則調(diào)試實(shí)體機(jī)器人的參數(shù)達(dá)到性能最優(yōu)的狀態(tài),否則返回之前的階段進(jìn)行完善。
實(shí)驗(yàn)系統(tǒng)由服務(wù)器和學(xué)生客戶端構(gòu)成,如圖7所示。教研室給學(xué)生們講授理論知識(shí),實(shí)驗(yàn)室給學(xué)生們提供實(shí)物實(shí)驗(yàn)的機(jī)會(huì),配備Robo-Master AI 機(jī)器人多臺(tái),供學(xué)生線下進(jìn)行實(shí)物操作。
圖7 實(shí)驗(yàn)系統(tǒng)總圖
服務(wù)器用于管理學(xué)生信息、課程任務(wù)和實(shí)驗(yàn)結(jié)果。仿真軟件運(yùn)行在學(xué)生機(jī)上,基本配置建議為CPU Intel i5,顯卡GTX 1660Ti,內(nèi)存16 G 以上,系統(tǒng)使用Window 10。
ROS 編程采用C++和Python 語言,系統(tǒng)是Ubuntu 18.04,虛擬階段可以在Window 10 下安裝虛擬機(jī)運(yùn)行,實(shí)物階段則將虛擬階段在ROS設(shè)計(jì)的程序上傳到實(shí)體機(jī)器人車載電腦上運(yùn)行。
這是第一階段實(shí)驗(yàn),在純虛擬環(huán)境下進(jìn)行。學(xué)生需要設(shè)計(jì)ROS 程序根據(jù)周圍虛擬障礙物進(jìn)行路徑規(guī)劃,并給出速度指令控制Unity 虛擬機(jī)器人在虛擬場(chǎng)景里運(yùn)動(dòng)。
服務(wù)器設(shè)置了多個(gè)任務(wù)供學(xué)生選擇,包括:①設(shè)計(jì)ROS 程序控制虛擬機(jī)器人在有障礙物的虛擬場(chǎng)景里按照規(guī)定路徑點(diǎn)完成巡航;②設(shè)計(jì)ROS 程序控制虛擬機(jī)器人在虛擬場(chǎng)景里找到所有指定的目標(biāo);③設(shè)計(jì)ROS 程序控制虛擬機(jī)器人與AI機(jī)器人對(duì)戰(zhàn),等等。
這是第二階段實(shí)驗(yàn),在虛擬環(huán)境和真實(shí)環(huán)境融合的情況下進(jìn)行。在第一階段設(shè)計(jì)的ROS程序需要上傳到實(shí)體機(jī)器人的機(jī)載電腦上,由它給出速度指令控制實(shí)體機(jī)器人在實(shí)驗(yàn)場(chǎng)內(nèi)運(yùn)動(dòng),真實(shí)機(jī)器人運(yùn)動(dòng)的信息被同步到Unity3D,Unity3D 中的虛擬機(jī)器人與實(shí)體機(jī)器人同步運(yùn)動(dòng),在虛擬機(jī)器人運(yùn)行過程中,會(huì)將在虛擬場(chǎng)景中感知到的障礙物和目標(biāo)信息傳遞給實(shí)體機(jī)器人,讓實(shí)體機(jī)器人感知到虛擬場(chǎng)景的避障物和目標(biāo),從而做出相應(yīng)的避障動(dòng)作。
在這個(gè)階段,學(xué)生可以初步驗(yàn)證在第一階段設(shè)計(jì)的ROS 程序是否能有效地控制真實(shí)機(jī)器人。由于是虛擬避障物,可以方便地添加和擺設(shè)虛擬場(chǎng)景,并且撞擊也不會(huì)損壞實(shí)體機(jī)器人。
這是第三階段實(shí)驗(yàn),將實(shí)體機(jī)器人放置在真實(shí)場(chǎng)景中,由機(jī)器人自帶的激光雷達(dá)等傳感器去識(shí)別真實(shí)的障礙物和目標(biāo)。在這個(gè)階段,學(xué)生可以最終驗(yàn)證前兩個(gè)階段設(shè)計(jì)的ROS 程序是否能有效地控制真實(shí)機(jī)器人。
實(shí)驗(yàn)表明,實(shí)體機(jī)器人與Unity 虛擬機(jī)器人定位誤差在可接受的誤差范圍內(nèi)(實(shí)體機(jī)器人與Unity 虛擬機(jī)器人在8 m×4 m 的場(chǎng)地內(nèi)同步運(yùn)動(dòng),平均定位誤差為±20 cm),基本做到虛實(shí)融合,學(xué)生的實(shí)驗(yàn)體驗(yàn)較好。
本文采用Unity3D-ROS相結(jié)合,設(shè)計(jì)了一個(gè)虛實(shí)融合的機(jī)器人實(shí)驗(yàn)教學(xué)平臺(tái),既滿足了線上實(shí)驗(yàn)的需要,又提高了線下實(shí)驗(yàn)的效率,降低了對(duì)實(shí)物設(shè)備的依賴。該實(shí)驗(yàn)平臺(tái)在我校2021年秋季機(jī)器人技術(shù)課程中初步應(yīng)用,達(dá)到了預(yù)期效果。但在應(yīng)用過程中也發(fā)現(xiàn)了一些不足,例如虛擬運(yùn)行與實(shí)際運(yùn)行效果仍存在一定的偏差,后續(xù)在物理建模方面需要進(jìn)一步研究,在實(shí)驗(yàn)平臺(tái)參數(shù)化方面也需要進(jìn)一步設(shè)計(jì)與完善。