李 恒,楊 亮,曾 碧,戚遠航
(1.廣東工業大學,廣東 廣州 510000;2.電子科技大學中山學院,廣東 中山 528402)
機器人是先進自動化裝備和前沿制造技術的典型代表,是衡量國家高科技創新和制造水平的關鍵因素[1-2]。由于機器人在智能生產、餐飲服務、信息采集等領域廣泛應用,機器人技術[3-4]正在不斷改變制造業的運行模式,影響人們的生活方式,同時在促進經濟飛速發展和社會高效管理方面發揮重要作用。而移動機器人因為其出色的作業場景拓展能力,相比傳統固定位置或者固定軌跡的機器人具有更廣闊的發展前景,是目前機器人技術的重要發展方向之一。
另一方面,隨著機器人產業的發展,機器人操作系統(ROS)[5-7]也愈發成熟,受到國內外機器人研發人員的廣泛關注。ROS 是專門用于機器人領域的開源操作系統,它的主要目的是為機器人研發人員提供代碼復用支持,節約開發人員大量的編程時間,使其能夠專注于某一個領域的深入研究。機器人技術和機器人操作系統不斷深入的同時,仿真技術逐漸為人們所熟知,通過仿真平臺模擬機器人運行的真實環境,為機器人有關實物實驗提供安全可靠的依據,并大大縮短機器人的開發以及實驗周期,具有安全可靠、高效靈活的優點。
因此,文中提出了一種基于ROS 的移動機器人仿真實驗平臺設計方案。該實驗平臺可以分為上位機軟件、實驗功能模塊、仿真模塊3 個部分,能夠完成目標跟隨、定位建圖、路徑規劃等功能。并以目標跟隨為例搭建了跟隨仿真場景,針對此功能完成基于QT[8]的上位機軟件設計開發和建立功能模塊內部節點,最后進行實驗測試。依托該平臺能快速開展機器人實驗并降低實驗成本。
基于ROS 的移動機器人仿真實驗平臺主要分為上位機軟件、實驗功能模塊、仿真模塊3 個部分,其總體架構圖如圖1 所示。

圖1 系統總體架構圖
上位機軟件主要負責機器人移動控制、跟蹤圖像獲取等功能,通過話題、服務、動作等通信方式調用控制器。目標跟隨、定位建圖、路徑規劃等實驗功能模塊構建于ROS 之上,各個功能模塊通過ros_control提供的控制器對移動機器人進行操縱。硬件抽象層與Gazebo[9-10]仿真器直接進行交互,讀取與寫入機器人狀態,并通過Gazebo 插件讀取URDF(Unified Robot Description Format)[11]。仿真模塊采用Gazebo作為物理仿真引擎,Gazebo 與ROS 相互協作,有良好的兼容性,通過該模塊可以導入豐富的機器人模型和現實場景模型,并對多種傳感器進行模擬仿真。
在軟件實現層面,提出一種基于ROS 的移動機器人仿真實驗平臺的軟件設計方案,軟件結構圖如圖2 所示。

圖2 軟件架構圖
為降低層與層之間的耦合度,結構更為清晰,軟件架構采用分層模式。從上至下可以分為算法層、ROS 軟件層、Linux 內核驅動層、底層硬件層。Linux系統提供的OpenNI 和串口驅動用于獲取攝像頭采集的圖像信息以及電機驅動板獲取到的電機數據。ROS 部署在Linux 操作系統之上,主要包括機器人底盤控制模塊與機器人模型模塊。其中,Speed2Odom把機器人運動速度信息轉換為里程信息,Teleop keyboard 包可以對機器人移動進行遠程鍵盤控制,URDF 模塊提供了機器人模型統一的描述格式,機器人模型隨著時間的運動變化需要TF 模塊進行坐標轉換。算法層中,仿真平臺主要使用HOG 結合SVM[12]實現行人檢測,使用siamRPN[13]目標跟蹤算法對行人進行跟蹤,而GMapping[14]則用于地圖構建等。
該仿真實驗平臺具有較好的拓展性、伸縮性,可根據具體需求建立不同的功能模塊。為說明模塊建立過程,下面以實現機器人跟隨功能為例,詳細描述設計基于ROS 的目標跟隨模塊的過程。
整個目標跟隨過程可分為目標檢測、目標跟蹤兩個部分,整體流程如圖3 所示。

圖3 目標跟隨流程圖
在行人檢測部分使用方向梯度直方圖(Histogram of Oriented Gradients,HOG)作為特征描述子,它通過計算和統計圖像局部區域方向梯度特征來描述目標形狀,隨后使用支持向量機(Support Vector Machines,SVM)把行人和背景分離,從而獲取行人坐標。在目標跟蹤部分使用siamRPN 算法。siamRPN 主體網絡結構為孿生神經網絡,包括模板分支和搜索分支。其中,模版分支輸入圖片為視頻首幀圖片,搜索分支輸入圖片為后續待搜索圖片。兩個分支經過神經網絡提取特征進行卷積操作獲取跟蹤目標位置與大小。
在移動機器人移動過程中,攝像頭獲取到的目標行人的圖像大小與機器人和行人之間的距離成反比。在尺寸大小為640×480 的圖像中設定期望位置坐標為(320,240),將目標跟蹤實時的目標圖像標記為(x,y),期望位置坐標標記為(xe,ye)。為了保證跟蹤位置與期望位置的誤差在允許范圍,故對機器人的角速度ω(t)和線速度v(t)進行歸一化處理[15]:


由以上公式可知,機器人移動速度與機器人和行人之間的距離成正比,距離較遠時加快速度跟上目標,距離較近時放慢速度維持安全距離。此外,在跟隨過程中使用緊密跟隨方法,使用多線程進行控制,把直線前進與定點轉向分離,在行人進行轉向時機器人保持直行,延后機器人轉彎時間點,縮小機器人與行人相對位置誤差。
在ROS 中節點相當于每個執行計算的進程,通常每個節點實現一個功能,因此本模塊設置節點關系如圖4 所示。

圖4 節點關系圖
在圖4 中,橢圓形代表節點,長方形代表話題,在Gazebo 仿真環境中,攝像頭拍攝到RGB 圖像后,由Gazebo 節點發布到/image_raw 話題,tracker 節點訂閱/image_raw 話題獲取圖像,在第一幀圖片使用HOG+SVM 檢測行人,并在隨后幀使用siamRPN 算法跟蹤目標,把目標中心點坐標以及寬和高發送到/center_of_bbox 話題。follow 節點訂閱話題獲取目標位置后,向/teleop 控制器發送速度以及轉向指令,控制機器人進行目標跟隨。
仿真模塊構建主要包括場景的構建、actor 動態模型構建和移動機器人模型的導入,主要流程如圖5所示。

圖5 仿真模塊構建流程圖
Gazebo 提供了場景墻體編輯器,通過編輯器可以構建場景所需的主體墻體、地板結構等,并通過仿真器集成模型導入行人、雪糕筒、桌椅等干擾物。動態行人目標使用actor 動態模型進行構建,actor 支持模型外觀與運動軌跡的設定。移動機器人模型使用turtlebot2[16]仿真模型,turtlebot2 使用ARM Coretexm3[17-18]控制芯片,配置有kobuki 移動底座、Xtion Pro深度攝像頭、車輪跌落傳感器,具有操作簡單、可移植性強的優點。
為了提高系統的易用性和改善用戶體驗,該文設計了基于QT 框架的上位機圖形控制軟件,完成移動機器人進行移動控制以及跟蹤圖像獲取等功能。其使用界面如圖6 所示。

圖6 上位機軟件界面圖
軟件的操作步驟:首先,用戶通過ip 地址與移動機器人進行連接,檢測行人功能對攝像頭拍攝圖片進行行人檢測,并在隨后幀進行目標跟蹤;然后,點擊開始跟隨按鈕機器人開始移動跟隨,并同步顯示回傳的攝像頭拍攝的跟蹤畫面。
為證明該平臺方案的有效性,以目標跟隨為例對系統進行測試。跟蹤目標正確識別是機器人穩定跟隨的前提,故分別從行人目標正面和側面對目標識別進行干擾性測試。在機器人攝像頭視野范圍內設定行人、雪糕筒等干擾物增加背景復雜度,實驗結果如圖7所示。
由圖7 可見,移動機器人在背景復雜,且存在相似行人目標條件之下依然能夠對目標進行正確的識別,具有較好的魯棒性和穩定性。

圖7 干擾性測試
然后分別針對環形和S 型跟隨路線(如圖8 所示)對跟隨緊密程度進行實驗。在Gazebo 仿真環境中搭建邊長20 m 的密閉環型圍墻,建立以1.2 m/s 勻速移動的行人作為跟蹤目標,并設立其他的行人、雪糕筒作為干擾物,移動機器人保持安全距離對行人進行跟隨。使用緊密跟隨方法與傳統跟隨方法的機器人跟隨軌跡如圖9 與圖10 所示。

圖8 跟隨測試地形圖
通過圖9(a)與圖10(a)、圖9(b)與圖10(b)對比,可發現使用緊密跟隨方法的機器人軌跡與行人軌跡重合率明顯更高,移動路線一致性更強,使得機器人更容易通過有障礙物阻擋的狹窄空間,更好地完成跟隨任務。

圖9 緊密跟隨軌跡圖

圖10 傳統跟隨軌跡圖
最后,對機器人穿越雪糕筒圍成的狹窄空間進行了實驗(場景圖如圖11(a)所示),并生成機器人與行人軌跡圖(如圖11(b)所示),機器人能夠在沒有觸碰雪糕筒的條件下順利完成跟隨任務。

圖11 障礙物穿越測試
從3 次不同的實驗對比結果可看出,目標跟隨功能模塊在復雜的環境下能夠實現平穩和緊密跟隨,對運行空間要求較低,在障礙物較多的狹窄空間能順利完成跟隨任務,具有一定的抗干擾能力和魯棒性。平臺的功能模塊可根據需要進行部署替換,通過更換不同實驗模塊來完成不同的功能,具有操作簡單、可拓展性強的優點。
該文提出了一種基于ROS 的移動機器人仿真實驗平臺設計方案,并以機器人目標跟隨為例說明了功能模塊搭建以及實驗結果的驗證過程。該平臺可以根據不同的實驗需求部署目標跟隨、定位建圖、路徑規劃等功能模塊。依托該平臺進行機器人算法驗證等實驗能有效節省實驗成本與時間,具有快速、低成本、高安全性驗證等特點。