李 恒,楊 亮,曾 碧,戚遠航
(1.廣東工業(yè)大學,廣東 廣州 510000;2.電子科技大學中山學院,廣東 中山 528402)
機器人是先進自動化裝備和前沿制造技術(shù)的典型代表,是衡量國家高科技創(chuàng)新和制造水平的關(guān)鍵因素[1-2]。由于機器人在智能生產(chǎn)、餐飲服務(wù)、信息采集等領(lǐng)域廣泛應(yīng)用,機器人技術(shù)[3-4]正在不斷改變制造業(yè)的運行模式,影響人們的生活方式,同時在促進經(jīng)濟飛速發(fā)展和社會高效管理方面發(fā)揮重要作用。而移動機器人因為其出色的作業(yè)場景拓展能力,相比傳統(tǒng)固定位置或者固定軌跡的機器人具有更廣闊的發(fā)展前景,是目前機器人技術(shù)的重要發(fā)展方向之一。
另一方面,隨著機器人產(chǎn)業(yè)的發(fā)展,機器人操作系統(tǒng)(ROS)[5-7]也愈發(fā)成熟,受到國內(nèi)外機器人研發(fā)人員的廣泛關(guān)注。ROS 是專門用于機器人領(lǐng)域的開源操作系統(tǒng),它的主要目的是為機器人研發(fā)人員提供代碼復用支持,節(jié)約開發(fā)人員大量的編程時間,使其能夠?qū)W⒂谀骋粋€領(lǐng)域的深入研究。機器人技術(shù)和機器人操作系統(tǒng)不斷深入的同時,仿真技術(shù)逐漸為人們所熟知,通過仿真平臺模擬機器人運行的真實環(huán)境,為機器人有關(guān)實物實驗提供安全可靠的依據(jù),并大大縮短機器人的開發(fā)以及實驗周期,具有安全可靠、高效靈活的優(yōu)點。
因此,文中提出了一種基于ROS 的移動機器人仿真實驗平臺設(shè)計方案。該實驗平臺可以分為上位機軟件、實驗功能模塊、仿真模塊3 個部分,能夠完成目標跟隨、定位建圖、路徑規(guī)劃等功能。并以目標跟隨為例搭建了跟隨仿真場景,針對此功能完成基于QT[8]的上位機軟件設(shè)計開發(fā)和建立功能模塊內(nèi)部節(jié)點,最后進行實驗測試。依托該平臺能快速開展機器人實驗并降低實驗成本。
基于ROS 的移動機器人仿真實驗平臺主要分為上位機軟件、實驗功能模塊、仿真模塊3 個部分,其總體架構(gòu)圖如圖1 所示。
圖1 系統(tǒng)總體架構(gòu)圖
上位機軟件主要負責機器人移動控制、跟蹤圖像獲取等功能,通過話題、服務(wù)、動作等通信方式調(diào)用控制器。目標跟隨、定位建圖、路徑規(guī)劃等實驗功能模塊構(gòu)建于ROS 之上,各個功能模塊通過ros_control提供的控制器對移動機器人進行操縱。硬件抽象層與Gazebo[9-10]仿真器直接進行交互,讀取與寫入機器人狀態(tài),并通過Gazebo 插件讀取URDF(Unified Robot Description Format)[11]。仿真模塊采用Gazebo作為物理仿真引擎,Gazebo 與ROS 相互協(xié)作,有良好的兼容性,通過該模塊可以導入豐富的機器人模型和現(xiàn)實場景模型,并對多種傳感器進行模擬仿真。
在軟件實現(xiàn)層面,提出一種基于ROS 的移動機器人仿真實驗平臺的軟件設(shè)計方案,軟件結(jié)構(gòu)圖如圖2 所示。
圖2 軟件架構(gòu)圖
為降低層與層之間的耦合度,結(jié)構(gòu)更為清晰,軟件架構(gòu)采用分層模式。從上至下可以分為算法層、ROS 軟件層、Linux 內(nèi)核驅(qū)動層、底層硬件層。Linux系統(tǒng)提供的OpenNI 和串口驅(qū)動用于獲取攝像頭采集的圖像信息以及電機驅(qū)動板獲取到的電機數(shù)據(jù)。ROS 部署在Linux 操作系統(tǒng)之上,主要包括機器人底盤控制模塊與機器人模型模塊。其中,Speed2Odom把機器人運動速度信息轉(zhuǎn)換為里程信息,Teleop keyboard 包可以對機器人移動進行遠程鍵盤控制,URDF 模塊提供了機器人模型統(tǒng)一的描述格式,機器人模型隨著時間的運動變化需要TF 模塊進行坐標轉(zhuǎn)換。算法層中,仿真平臺主要使用HOG 結(jié)合SVM[12]實現(xiàn)行人檢測,使用siamRPN[13]目標跟蹤算法對行人進行跟蹤,而GMapping[14]則用于地圖構(gòu)建等。
該仿真實驗平臺具有較好的拓展性、伸縮性,可根據(jù)具體需求建立不同的功能模塊。為說明模塊建立過程,下面以實現(xiàn)機器人跟隨功能為例,詳細描述設(shè)計基于ROS 的目標跟隨模塊的過程。
整個目標跟隨過程可分為目標檢測、目標跟蹤兩個部分,整體流程如圖3 所示。
圖3 目標跟隨流程圖
在行人檢測部分使用方向梯度直方圖(Histogram of Oriented Gradients,HOG)作為特征描述子,它通過計算和統(tǒng)計圖像局部區(qū)域方向梯度特征來描述目標形狀,隨后使用支持向量機(Support Vector Machines,SVM)把行人和背景分離,從而獲取行人坐標。在目標跟蹤部分使用siamRPN 算法。siamRPN 主體網(wǎng)絡(luò)結(jié)構(gòu)為孿生神經(jīng)網(wǎng)絡(luò),包括模板分支和搜索分支。其中,模版分支輸入圖片為視頻首幀圖片,搜索分支輸入圖片為后續(xù)待搜索圖片。兩個分支經(jīng)過神經(jīng)網(wǎng)絡(luò)提取特征進行卷積操作獲取跟蹤目標位置與大小。
在移動機器人移動過程中,攝像頭獲取到的目標行人的圖像大小與機器人和行人之間的距離成反比。在尺寸大小為640×480 的圖像中設(shè)定期望位置坐標為(320,240),將目標跟蹤實時的目標圖像標記為(x,y),期望位置坐標標記為(xe,ye)。為了保證跟蹤位置與期望位置的誤差在允許范圍,故對機器人的角速度ω(t)和線速度v(t)進行歸一化處理[15]:
由以上公式可知,機器人移動速度與機器人和行人之間的距離成正比,距離較遠時加快速度跟上目標,距離較近時放慢速度維持安全距離。此外,在跟隨過程中使用緊密跟隨方法,使用多線程進行控制,把直線前進與定點轉(zhuǎn)向分離,在行人進行轉(zhuǎn)向時機器人保持直行,延后機器人轉(zhuǎn)彎時間點,縮小機器人與行人相對位置誤差。
在ROS 中節(jié)點相當于每個執(zhí)行計算的進程,通常每個節(jié)點實現(xiàn)一個功能,因此本模塊設(shè)置節(jié)點關(guān)系如圖4 所示。
圖4 節(jié)點關(guān)系圖
在圖4 中,橢圓形代表節(jié)點,長方形代表話題,在Gazebo 仿真環(huán)境中,攝像頭拍攝到RGB 圖像后,由Gazebo 節(jié)點發(fā)布到/image_raw 話題,tracker 節(jié)點訂閱/image_raw 話題獲取圖像,在第一幀圖片使用HOG+SVM 檢測行人,并在隨后幀使用siamRPN 算法跟蹤目標,把目標中心點坐標以及寬和高發(fā)送到/center_of_bbox 話題。follow 節(jié)點訂閱話題獲取目標位置后,向/teleop 控制器發(fā)送速度以及轉(zhuǎn)向指令,控制機器人進行目標跟隨。
仿真模塊構(gòu)建主要包括場景的構(gòu)建、actor 動態(tài)模型構(gòu)建和移動機器人模型的導入,主要流程如圖5所示。
圖5 仿真模塊構(gòu)建流程圖
Gazebo 提供了場景墻體編輯器,通過編輯器可以構(gòu)建場景所需的主體墻體、地板結(jié)構(gòu)等,并通過仿真器集成模型導入行人、雪糕筒、桌椅等干擾物。動態(tài)行人目標使用actor 動態(tài)模型進行構(gòu)建,actor 支持模型外觀與運動軌跡的設(shè)定。移動機器人模型使用turtlebot2[16]仿真模型,turtlebot2 使用ARM Coretexm3[17-18]控制芯片,配置有kobuki 移動底座、Xtion Pro深度攝像頭、車輪跌落傳感器,具有操作簡單、可移植性強的優(yōu)點。
為了提高系統(tǒng)的易用性和改善用戶體驗,該文設(shè)計了基于QT 框架的上位機圖形控制軟件,完成移動機器人進行移動控制以及跟蹤圖像獲取等功能。其使用界面如圖6 所示。
圖6 上位機軟件界面圖
軟件的操作步驟:首先,用戶通過ip 地址與移動機器人進行連接,檢測行人功能對攝像頭拍攝圖片進行行人檢測,并在隨后幀進行目標跟蹤;然后,點擊開始跟隨按鈕機器人開始移動跟隨,并同步顯示回傳的攝像頭拍攝的跟蹤畫面。
為證明該平臺方案的有效性,以目標跟隨為例對系統(tǒng)進行測試。跟蹤目標正確識別是機器人穩(wěn)定跟隨的前提,故分別從行人目標正面和側(cè)面對目標識別進行干擾性測試。在機器人攝像頭視野范圍內(nèi)設(shè)定行人、雪糕筒等干擾物增加背景復雜度,實驗結(jié)果如圖7所示。
由圖7 可見,移動機器人在背景復雜,且存在相似行人目標條件之下依然能夠?qū)δ繕诉M行正確的識別,具有較好的魯棒性和穩(wěn)定性。
圖7 干擾性測試
然后分別針對環(huán)形和S 型跟隨路線(如圖8 所示)對跟隨緊密程度進行實驗。在Gazebo 仿真環(huán)境中搭建邊長20 m 的密閉環(huán)型圍墻,建立以1.2 m/s 勻速移動的行人作為跟蹤目標,并設(shè)立其他的行人、雪糕筒作為干擾物,移動機器人保持安全距離對行人進行跟隨。使用緊密跟隨方法與傳統(tǒng)跟隨方法的機器人跟隨軌跡如圖9 與圖10 所示。
圖8 跟隨測試地形圖
通過圖9(a)與圖10(a)、圖9(b)與圖10(b)對比,可發(fā)現(xiàn)使用緊密跟隨方法的機器人軌跡與行人軌跡重合率明顯更高,移動路線一致性更強,使得機器人更容易通過有障礙物阻擋的狹窄空間,更好地完成跟隨任務(wù)。
圖9 緊密跟隨軌跡圖
圖10 傳統(tǒng)跟隨軌跡圖
最后,對機器人穿越雪糕筒圍成的狹窄空間進行了實驗(場景圖如圖11(a)所示),并生成機器人與行人軌跡圖(如圖11(b)所示),機器人能夠在沒有觸碰雪糕筒的條件下順利完成跟隨任務(wù)。
圖11 障礙物穿越測試
從3 次不同的實驗對比結(jié)果可看出,目標跟隨功能模塊在復雜的環(huán)境下能夠?qū)崿F(xiàn)平穩(wěn)和緊密跟隨,對運行空間要求較低,在障礙物較多的狹窄空間能順利完成跟隨任務(wù),具有一定的抗干擾能力和魯棒性。平臺的功能模塊可根據(jù)需要進行部署替換,通過更換不同實驗?zāi)K來完成不同的功能,具有操作簡單、可拓展性強的優(yōu)點。
該文提出了一種基于ROS 的移動機器人仿真實驗平臺設(shè)計方案,并以機器人目標跟隨為例說明了功能模塊搭建以及實驗結(jié)果的驗證過程。該平臺可以根據(jù)不同的實驗需求部署目標跟隨、定位建圖、路徑規(guī)劃等功能模塊。依托該平臺進行機器人算法驗證等實驗?zāi)苡行Ч?jié)省實驗成本與時間,具有快速、低成本、高安全性驗證等特點。