王春平, 汪家琪, 高金鳳
(1 浙江理工大學科技與藝術學院, 浙江 上虞 312369; 2 浙江理工大學信息科學與工程學院, 杭州 310018)
隨著計算機信息與機器人技術的快速發展,機器人應用范圍從最初的軍事行業延伸到現在的醫療、工業、服務業等多個領域[1],逐步實現機器人的普及化,如軍用偵察機器人、醫療消毒機器人、工業巡檢機器人和餐飲服務機器人。 其中,機器人在服務業領域的作用尤為突出。 在許多大型的超市,傳統的手推車購物和排隊等待人工收銀的方式不僅無法滿足人們愉悅購物的需求,還會給超市造成一定秩序維護和服務成本上的負擔。 另一方面,機器人操作系統(ROS)是構建機器人應用程序的一套軟件庫和工具庫,是編寫機器人軟件的靈活框架。 ROS包含驅動程序、先進的算法、強大的機器人開發工具,而且都是開源的,這就進一步地促進了機器人技術的發展[2-3]。
本文設計了一種基于ROS 的超市自助購物機器人,在傳統的超市購物機器人[4]基礎上進行了結構和功能的改進。 該機器人分為購物層和運動層,兩層之間用4 根不銹鋼鋼管支撐。 購物層以樹莓派3B+開發板為核心,與掃碼槍和安裝了自主結賬軟件的移動終端配合使用,從而實現智能掃碼結賬的功能。 運動層以i7 處理器的mini 工控機為核心,結合ROS 和遠程控制設備實現該超市購物機器人的地圖構建、語音導航、人體跟隨。 遠程控制設備和安裝了自主結賬軟件的移動終端均是通過無線局域網絡與i7 處理器的mini 工控機和樹莓派3B+開發板建立連接,具有高度的靈活性和移動性。
自助購物機器人系統是由購物層和運動層組成的,購物層以樹莓派3B+開發板為核心,掃碼槍通過無線局域網與安裝了自主結賬軟件的移動終端連接完成結賬;運動層以i7 處理器的mini 工控機為核心,通過無線局域網絡與遠程控制設備連接,并利用思嵐A1 激光雷達和kinect 一代深度攝像頭實現地圖構建和人體跟隨。 此外,該超市購物機器人上裝配語音交互模塊和底層控制模塊,可執行語音導航控制和底層的硬件驅動等功能,具體框架結構側視圖如圖1 所示。

圖1 基于ROS 的超市自助購物機器人框架Fig. 1 Self shopping robot diagram of supermarket based on ROS
系統測試的時候,樹莓派3B+開發板上除了接入掃碼槍,還外接了多種輸入設備包括鍵盤、鼠標、U 盤。 除此之外,由于要在樹莓派3B+開發板上執行掃碼槍讀取條形碼信息功能,需要將該信息傳輸給移動終端,這2 個功能會出現沖突,無法同時運行。 這一難點可以借助于掃碼槍配對程序中雙線程方法來解決。 一個線程獲取掃碼槍傳來的條形碼數據,另外一個線程將該數據傳輸給移動終端。
對于移動終端App 的設計,采用Appinventor 在線編輯軟件。 在進行自助結賬時,Appinventor 中字符串類型的“價格”不需要轉換成數值類型就可以直接進行相加減。 移動終端App 一共設有3 個界面,通過App 上的按鈕進行切換。Screen0 是主頁界面設計,Screen1 是功能界面,Screen2 是付款成功界面。自主結賬軟件設計流程如圖2 所示。

圖2 自主結賬軟件設計流程圖Fig. 2 Software design flow chart of self-checkout
硬件電路主要包括4 大模塊,即底層控制模塊、電源模塊、電機驅動模塊、慣性測量單元(IMU),如系統的硬件電路框架如圖3 所示。 在購物層端,掃碼槍和安裝了自主結賬軟件的移動終端分別通過USB 和無線局域網絡與樹莓派3B+開發板相連,更側重于軟件設計,僅需設計電源模塊的電路圖。 在運動層端,思嵐A1 激光雷達、Kinect 一代深度攝像頭、語音交互模塊均是通過USB 直接與以i7 處理器的mini 工控機相連,且遠程控制設備通過ssh 協議與工控機相連,硬件設計則著重體現在電源、底層控制以及集成在其中的電機驅動模塊與慣性測量單元。

圖3 購物機器人系統的總體結構框圖Fig. 3 The structural block diagram of the shopping robot system
1.3.1 底層控制模塊
STM32F103RCT6 是該超市購物機器人運動層底層控制模塊的核心。 底層控制模塊包含了傳感器數據的獲取、運動學解算、電機控制等底層驅動功能和機器人的運動功能[5-10]。 底層控制模塊向上層的i7 處理器mini 工控機發送機器人的里程計信息、電機轉速信息、IMU 傳感器數據、電池電壓數據等傳感器信息。 工控機向底層控制模塊發送速度指令和里程計校準參數等高級控制數據。 STM32F103RCT6的電路如圖4 所示。

圖4 STM32F103RCT6 電路圖Fig. 4 The STM32F103RCT6 circuit diagram
1.3.2 電機驅動模塊
電機驅動模塊采用的是TB6612 驅動模塊,是基于MOSFET 的H 橋集成電路。 TB6612 設計原理如圖5 所示,效率遠高于晶體管H 橋驅動器。 相比L298N 的熱耗性和外圍二極管續流電路,無需外加散熱片,效率高,外圍電路簡單,只需外接電源濾波電容就可以直接驅動電機,利于減小系統尺寸。 具體的電路如圖6 所示。

圖5 TB6612 原理圖Fig. 5 The schematic diagram of TB6612

圖6 電機驅動電路圖Fig. 6 The motor drive circuit diagram
1.3.3 慣性測量單元
MPU6050 是慣性測量單元的一種,在內部整合了三軸陀螺儀和三軸加速度的傳感器,并且具有一個數字運動處理引擎,方便姿態的解算,并且可以降低主處理器的運行負荷,三軸加速度可以測量3 個方向的直線加速度,三軸陀螺儀可以測量3 個軸的旋轉角速度,通過姿態解算算法實現姿態的解算[11]。 具體的設計電路如圖7 所示。

圖7 MPU6050 電路圖Fig. 7 The circuit diagram of MPU6050
有關電機、底層控制模塊、TB6612 驅動模塊、MPU6050 的正確連接方式見表1。 此處TB6612 的VM1 端口接12 V,STBY 端口接5 V,VCC 端口接5 V,PWM 連接2 組電機,PWMA 接A 組,PWMB 接B 組。

表1 各模塊的引腳分配Tab. 1 Pin assignment of each module
1.3.4 電源模塊
本系統設計了2 個電源模塊,分別為購物層和運動層提供可靠的工作電壓。 不僅需考慮電壓范圍和電流容量等基本參數,還要在電源轉換效率、降低噪聲、防止干擾等方面進行優化。 購物層采用12 V、8.4 A 鋰電池,通過降壓模塊,將其轉換成5 V 固定電壓驅動樹莓派3B+開發板;運動層采用12 ~48 V、22 A 的鋰電池,通過12V 電源穩壓模塊給i7 處理器的mini 工控機供電。 然而在底層控制模塊里,不是所有的子模塊都是12 V 供電的。 比如MPU6050 的標準供電電壓是5 V,因此需要一個電壓轉換模塊將12 V 電壓轉換成5 V 穩定電壓。 具體的電壓轉換電路如圖8 所示。

圖8 電壓轉換電路圖Fig. 8 Voltage conversion circuit diagram
機器人運動層端的算法設計主要包括Gmapping 建圖算法、語音導航算法、kinect 一代深度攝像頭人體跟隨算法。 整個系統的程序運行流程如圖9 所示。

圖9 系統程序流程圖Fig. 9 Flow chart of system program
Gmapping 是一種常用的同時定位與地圖構建(Simultaneous Localization and Mapping,SLAM) 算法,通過激光雷達等傳感器收集環境信息,實現對機器人所在環境的建圖和定位。 Gmapping 算法的核心思想是將地圖構建問題轉化為一個最優化問題,通過優化機器人在環境中的運動軌跡和地圖中的障礙物分布,得到一個最優的地圖模型。 Gmapping 算法的實現分為2 個步驟:機器人定位和地圖構建。
Gmapping 算法通過對機器人位置的精確估計,來糾正激光雷達傳感器測量中存在的誤差。 具體采用基于粒子濾波器的定位算法,在概率分布上進行多次采樣和更新,得到機器人位置的最優估計。
Gmapping 算法地圖構建通過對激光雷達測量數據進行處理,提取環境中的障礙物信息。 具體將激光雷達測量數據轉換為柵格地圖,并利用貝葉斯濾波算法來更新柵格地圖中的障礙物分布。 同時,Gmapping 算法還會對地圖進行優化,使得機器人的軌跡更加順暢,并提高地圖的準確性和穩定性。
語音導航算法用來完成地圖構建之后的就位和智能掃碼結賬之后的回倉,語音交互模塊帶聲源定位功能,每次對著語音交互模塊說話時,會出現一個最亮的燈,代表此時最亮燈方位聲源最強。 語音導航算法將A*全局路徑規劃和DWA 局部路徑規劃導航算法與語音控制算法相結合。
機器人語音導航包含以下步驟:語音識別、自然語言理解和語音合成。 機器人利用麥克風等傳感器感知用戶的語音指令,通過語音識別技術將語音信號轉換為文本形式,以方便后續的處理和分析。 在自然語言理解步驟中,機器人會對用戶輸入的文本進行分析和理解,實現對用戶需求的識別和分類。將文本轉換成信號發送給運動控制器。 機器人需要考慮到用戶可能存在的多義性或歧義性,確保識別的準確性和穩定性。 最后,機器人將處理好的文本信息轉換為語音信號,并通過揚聲器等設備輸出給用戶,實現與用戶的自然語音交互。
人體運動跟隨算法通過機器人對人體姿態、移動速度和距離等信息的感知和分析,實現對人體運動的預測和響應,達成機器人的跟隨功能。 本文的設計運用了開源的turtlebot_follower 功能包。 該功能包利用深度攝像頭反饋的點云圖,計算一定區域內的點云中心坐標作為目標跟隨點,并通過深度學習技術識別出人體的位置和大小,還考慮了存在的干擾物或障礙,根據坐標和設置的安全距離控制底盤實現移動跟隨。
機器人對人體的姿態、運動速度等信息進行分析,預測人體的下一步運動方向,從而決定機器人的跟隨策略。 在此過程中,機器人需要利用計算機視覺等技術進行數據處理和分析,實現對人體運動的實時跟蹤。 實驗證明Gmapping 建圖效果與人體跟隨測試都很成功,實際測試結果如圖10 所示,圖11為基于ROS 的超市購物機器人實際系統側視圖。

圖11 基于ROS 的超市購物機器人系統側視圖Fig. 11 The side view diagram of supermarket self-shopping robot system based on ROS
本文設計了一款基于ROS 的超市自助購物機器人,雙層結構設計既可以讓購物層和運動層各負其責、互不干擾,又能大大節約布局空間。 經過實際測試,該機器人能夠較好、較快地完成地圖構建、語音導航、人體跟隨、智能掃碼結賬等功能。 最大的不足就在于缺乏構建基于ROS 的多機器人系統標準方法,今后的研究可著重聚焦在基于ROS 的多機器人協同控制算法與實際測試。