韓竺秦
(韶關學院智能工程學院,廣東 韶關 512005)
目前,高校圖書館是大學生最喜歡去的學習場所,人流量大且比較集中。圖書館工作人員每天的任務主要是圖書的借閱、分類、整理、上架等重復性工作。圖書館機器人在國外出現較早。1991年,美國加利福尼亞州立大學奧維亞特圖書館的自動存儲與檢索系統ASRS問世,這是ASRS系統第一次在圖書館領域使用[1]。從1991年到2018年,美國有28家圖書館加入了ASRS系統,除了美國之外,挪威國家圖書館、哥倫比亞大學圖書館等圖書館也加入了ASRS系統[2]。
隨著機器人技術的不斷發展,AGV機器人也應用到了圖書館領域,例如德國洪堡大學圖書館的AGV搬運機器人和日本大阪市立大學圖書館的AGV機器人運輸車[3],AGV機器人本身工作效率高、結構簡單,它能在圖書館內不斷運送圖書,將書籍運輸到固定位置。
管理機器人采用四輪底盤,兩輪差分式轉向驅動結構,相比于其它轉向結構,兩輪差分式結構更加適用于機器人導航的功能實現,能減輕控制器的運算量。機器人采用雙層式的空間結構,以最大限度地利用激光雷達、單目攝像頭、超聲波等相關傳感器,提高其性能。
機器人硬件總體框架如圖1所示,上位機工控機與下位機STM32驅動使用串口通信的方式,上位機主控與激光雷達使用USB串口連接,觸摸屏、機械臂等通過USB等與下位機實現網絡通信。

圖1 機器人硬件總體框架
RBpf粒子濾波算法是解決在大型復雜環境下的概率估計問題,其公式可以簡要概括為

在式(1)中,p(x1∶t,m|z1∶t,u1∶t-1)為運動軌跡x1∶t和地圖m的聯合后驗概率,p(m|z1∶t,u1∶t-1)為地圖估計后驗概率,p(x1∶t|z1∶t,u1∶t-1)為軌跡估計后驗概率。根據機器人的軌跡進行估計,可以得到位姿信息,結合觀測模型p(zt|xt,m)在每個觀測點觀測得到的數據即可構建地圖[4]。由于RBpf需要大量粒子來構建地圖,而每個粒子攜帶一份地圖,因此會多次執行重采樣,導致計算量和內存占用比較大。
Gmapping算法將定位過程和建圖過程分離,且先進行定位再進行建圖。該算法在RBpf粒子濾波算法上做了兩個主要的改進,一是改進提議分布,二是選擇性重采樣[5]。
經過多次計算,剩下粒子的權重都比較高。在濾波過程中,粒子逐漸發生退化現象,需要定義有效粒子的目標函數如下:

式(2)采用選擇性重采樣減少重復采樣次數,即設定一個閾值,將全部粒子數的一半作為閾值,當Neff低于閾值時,執行粒子重采樣。從而降低采樣頻率,緩解粒子退化問題。
基于粒子濾波的Gmapping算法流程圖如圖2所示。

圖2 基于粒子濾波的Gmapping流程圖
A*算法規劃的全局路徑,缺乏對機器人環境和機器人本身狀態的實時判斷,而DWA算法規劃的局部路徑只是局部的最優解,對全局缺乏考量,將A*算法和DWA算法相結合得出的混合路徑規劃可以對導航效果進行優化。混合路徑規劃的處理步驟可以歸納為下面五步:
(1)讀取地圖,機器人讀取基于RBPF的Gmapping算法創建的二維柵格地圖。
(2)AMCl算法定位,機器人通過激光雷達數據,獲取機器人在地圖的定位。
(3)讀取起始點A和目標點B,使用A*算法進行全局路徑規劃。
(4)以集合的形式記錄全局路徑的拐點。
(5)以一個個拐點為DWA算法的目標點,用DWA算法進行局部路徑規劃,如果存在拐點周圍有障礙物,則以下一個拐點為目標點。
(6)機器人到達局部目標點后,判斷該點是否為全局目標點,如果是,則機器人到達全局目標點,完成了路徑規劃,如果不是,則返回步驟⑤繼續確定新的局部目標點。
混合路徑規劃流程圖如圖3所示。

圖3 混合路徑規劃流程圖
語音喚醒通過辨別輸入的音頻中預先設定的關鍵語句,成功識別到詞語后,應用通過回調函數發布話題消息,機器人在聽到特定的喚醒詞后與用戶進行語音交互,是機器人語音交互過程的第一步。在訊飛開發平臺創建屬于自己的語音喚醒應用[6],生成應用于Linux平臺的專屬SDK后將其移植到機器人控制程序中,添加語音喚醒結果的發布節點,語音喚醒程序流程圖如圖4所示。

圖4 語音喚醒程序流程圖
語音喚醒程序開始首先初始化ROS節點和話題消息,接著判斷是否成功登錄訊飛語音,登錄成功后開啟語音喚醒功能,發布控制命令打開麥克風進行錄音。當麥克風錄到完整的喚醒詞,語音喚醒程序就會發布喚醒成功的話題信息給語音識別程序,進行下一步操作。喚醒詞在生成SDK前可自由定制,喚醒成功后機器人會做出回應并進入傾聽轉態。
語音喚醒、語音識別和語音合成所發布的話題消息由語音交互系統整合并處理,該系統包含語音交流部分和語音控制部分。語音交流部分用于處理人機對話中的日常交流互動以及書籍的相關內容問答,而語音控制部分則用于處理人機對話當中的命令詞,完成動作上的回應。
語音交互系統首先訂閱語音喚醒成功的消息,只有語音喚醒成功才會給語音識別模塊發送指令觸發語音識別,同時訂閱語音識別的結果,并將語音識別的結果分為三類,一類是書籍相關知識,一類是命令詞,還有一類是日常交流語句。相應把語音系統設計為三級順序,第一順序尋找問題關鍵詞是否為設定的書籍相關內容,若是則在本地文本庫中檢索答案;若否則進入第二順序尋找問題關鍵詞是否為控制命令詞,若是則驅動機器人進行相應動作;若否則進去第三順序,此時意味著問題既不是關于圖書館也不是控制命令,而是普通的日常交流,因此調用騰訊云閑聊機器人接口,獲取回答的文本消息發布后進行語音合成,播放合成后的音頻文件。整個語音系統流程圖如圖5所示。

圖5 語音系統流程圖
Qt對ROS的兼容性和Qt框架能迅速上手和操作的簡易性,都非常方便用戶對上位機進行UI設計。并且對于ROS與Qt的交互環境搭建問題。
UI界面上,系統主要實現了三方面的功能。如圖6所示,①登錄界面登錄之后,可使用上位機的控件進行機器人的控制和信息反饋。②協助讀者找書。用戶在找書欄輸入所要找的書籍名字后,點擊找書,界面將以彈框的形式匯報用戶所找書籍的編碼,若圖書館沒有收錄用戶所找圖書,彈框將顯示為“未找到該圖書”。③還書。當用戶點擊我要還書時,機器人將導航到還書區,機器人到位后導航系統會發布指令給機械臂運動系統,機械臂按照事先編寫好的動作組運動,自動夾取圖書;然后用戶輸入所還書籍編碼并點擊還書后,機器人將自動導航到所還書籍存放位置,到達相應位置后,機械臂自動釋放圖書,最后機器人自動復位到還書區。

圖6 機器人UI設計界面
二維碼是很流行的一種編碼方式,最常見的形式是二維碼。QR碼將數據符號信息按照一定的幾何圖形規律記錄在二維平面分布的黑白相間的圖形中,這種編碼巧妙地利用計算機內部邏輯基礎的“0”“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示各種類型的數據信息。Zbar庫是一個開源軟件套件,主要用于從各種來源讀取QR碼或者條形碼信息。
圖書二維碼識別是通過已有的二維碼進行識別的,而二維碼的創建可以通過ROS提供的開源功能包ar_track_alvar[7],通過該功能包可以快速的創建二維碼,并且可以設置二維碼參數和掃描二維碼出現的結果。
Gmapping建圖適用于小場景的室內環境,因此本次實驗地點為實驗室建立地圖。首先,啟動Gmapping節點,打開相應rviz界面,經過多次實驗后,得到的室內地圖精度非常理想,無明顯畸變。如圖7所示,展示的為其中一次最終生成的地圖,此過程只對主要干道過了一遍,沒有進入一些小通道,但不能看出主通道部分地圖的高精度。

圖7 Gmapping最終生成地圖
當讀者需要查詢書籍時,只要按照UI界面提示,輸入需要查找的書名,機器人會尋找圖書并顯示位置,且進行導航取書。如圖8所示為找書成功的界面。

圖8 找書成功界面
在導航過程中,機器人從起始位置到目標位置后的狀態,紅色箭頭是機器人的最優規劃路徑方向。如圖9所示為導航路徑規劃圖。

圖9 導航路徑規劃圖
在導航系統運行過程中,可以使用rqt_graph工具獲取當前某個節點的計算圖。其中訂閱了里程計、坐標變換tf、地圖、激光雷達、定位、服務通訊等信息,發布運動控制信息給底盤,驅動電機做出運動,從而實現了導航。
為應對圖書館智能化趨勢的發展,本文設計了一個基于ROS的圖書館還書管理機器人,包括硬件設計和軟件設計兩部分。硬件設計包括機器人機械結構、上位機、下位機和傳感器的設計。軟件設計主要是自主導航系統的設計、機械臂運動系統的設計、語音交互系統設計、人機交互系統的設計、圖書二維碼識別的設計。目前,人機交互界面實現了機器人的控制、目標點導航控制達到了預期目的。