譚韶峰,蘇朝文,徐江山
(天津工業大學 計算機科學與技術學院,天津,300000)
現在各種辦公樓、居民樓等正在向智能化方向發展,人們越來越多業務往來所涉及的物品投遞發生在樓宇內。這種場景中,傳統方式顯然已經無法滿足人滿需求。本項目基于激 光SLAM(Simultaneous Localization and Mapping)技術,ROS(Robot Operating System)技術,人工智能技術、物聯網技術,參考共享單車的商業模式,提出了一套可以共享使用的樓宇內無人配送系。用戶可以通過手機終端輕松控制智能車實現樓宇內定點物品投遞,智能車則能夠根據傳感器感知和智能算法自主尋址到指定服務地點或投遞地點。該系統既可以用于物流行業的末端配送,也可以運用于辦公區域的自助物品投遞以及特殊場景下的無接觸配送等。
整體系統由機器人端軟硬件系統和共享服務平臺軟件系統組成。機器人端軟硬件系統實現的功能包括基本運動控制,傳感器數據處理采集,環境二維地圖構建、即時定位、路徑規劃與自主導航、物聯網通信系統、用戶交互等,是整個系統的核心部分。共享服務軟件系統分為后臺服務系統、后臺管理系統、用戶端軟件系統組成機器人終端通過NBIoT網絡接入華為云IoT平臺,與系統服務器建立連接,管理員可以通過系統管理端來對機器人設備進行管理、監控,用戶可以通過移動客戶端來發起投遞任務。系統的總體結構如圖1所示。

圖1 系統總體結構示意圖

圖 2 機器人硬件結構框圖
結構框圖如圖2所示,機器人下位機選用STM32F405開發板,該開發板提供了工作頻率為168 MHz的Arm Cortex-M4內核的性能、多達15個通信接口,可以滿足實時的運動控制以及大量傳感器數據的采集與處理。下位機系統的主要作用之一是采集電機編碼器數據、IMU數據、超聲波數據以及激光雷達的數據,并且將這些數據打包發送給上位機系統。此外還具有接收上位機的控制指令,通過PID算法,對電機速度做出調節從而使得機器人按照指令做出相應的移動和控制伺服電機轉動開合儲物柜。上位機采用Jetson nano開發版,該開發版搭載ARMv8系CPU以及性能強大的GPU,可以輕松處理各種運算。此外該開發板還搭載了WiFi、藍牙通信模塊以及外接的NB-IoT通信模組,便于機器人與其他物聯網設備、云服務器等進行數據傳輸。Jetson nano也具有豐富的串行接口和IO口,可以方便地拓展上層組件。本系統中,上位機主要用作地圖構建、路徑規劃、實時避障、用戶交互、業務應用以及實現聯網通信。機器人模型如圖3所示,主要包括運動基座(含下位機硬件系統),電源、上位機硬件系統,帶自動門的儲物柜,深度攝像機以及激光雷達。

圖 3 機器人模型簡圖
機器人運動底盤采用兩輪差速結構,并前后配上兩個萬向輪,以保證機器人運動的穩定性,模型如圖4所示。機器人左右兩側是驅動輪,分別由兩個電機驅動,而前后是被動輪,采用萬向輪。通過調節左右驅動的速度,控制機器人運動:若左右驅動輪的速度相同,則機器人直線運動,若左右兩輪速度不同,則機器人做圓周運動。

圖4 底盤結構簡圖
機器人的運動模型如5所示,其中CENTER為底盤的幾何中心,ICR(Instantaneous Center of Rotation)為瞬時旋轉中心,rc為旋轉半徑,w為旋轉角速度,dwb為左右輪中心距離,L、R為左右輪與地面的接觸點,vl、vc、vr分別為L點、CENTER點以及R點的線速度。簡單分析可以得出該機器人底盤正運動學模型,如公式(1)所示:

該模型是基于左右驅動輪的速度來計算幾何中心點CENTER的速度。在機器人兩個驅動輪上安裝編碼器便可以計算出兩個驅動輪的線速度,再通過公式(1)便可以得到CENTER的速度,并可以進一步被用于計算機器人的里程計數據,作用于后面的地圖構建和定位功能中。

圖 5 運動模型

圖 6 機器人端軟件設計框圖
由公式(1)變換可以表示出逆運動學模型,如公式(2)所示:

該模型是基于幾何中心點CENTER的速度分解出左右驅動輪的速度。這里的逆運動學模型用于對上位機下發的機器人移動速度控制數據的解算,并通過PID算法進一步控制兩個驅動輪的精準轉動。
機器人終端的建圖及自主導航功能主要由上位機ROS系統上實現,下位機主要用于采集傳感器數據、控制電機的轉動。軟件系統基于ROS進行開發,在ROS生態中,有著成熟的SLAM應用棧以及Navigation應用棧,在數據融合良好的情況下,能夠達到優秀的自動導航效果。圖6為配送機器人的軟件系統設計,軟件分為五大部分,分別是數據采集處理模塊,運動控制模塊,SLAM模塊,Navigation模塊,交互模塊。
2.2.1 數據采集與處理
機器人對環境數據的采集由下位機來完成。下位機軟件根據運動模型將編碼器數據轉換為里程計數據,包括機器人旋轉的角度、在右手笛卡爾坐標系下x方向運動的距離以及y軸運動的距離三個數據,并于通過卡爾曼濾波器的IMU數據進行融合,得到底盤位姿數據。雷達數據通過對壞點過濾后于底盤位姿數據打包經過串口發送給上位機。上位機得到數據后通過ROS的發布訂閱機制,將這些數據發布出去,供給其他模塊使用。
2.2.2 多傳感器融合SLAM
SLAM算法有許多種類型,常見的有Gmapping、Hector_slam、Karto、Cartographer。經過反復測試,發現在室內環境中Gmapping算法在建圖效果以及性能上,是優于其他幾種的。Gmapping是ROS開源社區中比較成熟的SLAM算法,能夠繪制二維的柵格地圖。建圖采用里程計和 IMU數據,通過擴展卡爾曼濾波得到位姿提交到 Gmapping里面,建圖的效果優異,而且還可以建立大型地圖,對于移動時的加減速考慮的也相對較少,建圖效果如圖7所示,其中黑色表示該位置占用,白色表示自由空間。

圖 7 二維格柵地圖

圖 8 路徑規劃
2.2.3 自動導航
機器人的自動導航功能主要通過ROS的Navigation導航框架來實現,其作用簡單來講就是根據輸入的傳感器信息流和機器人的全局位置,通過路徑規劃算法,計算得出安全可靠的機器人速度控制指令。在本設計中,機器人的自動導航的實現主要是通過該框架的map_server、move_base、acml以 及nav_core。其 中map_server是地圖服務器,用于保存地圖和載入地圖,并且可以結合costmap_2d功能模塊來生成代價地圖,實現機器人的動態避障。move_base實現對整個導航流程的控制,包括對全局、局部路徑規劃的選擇以及在機器人丟失位置時執行恢復操作。nav_core中實現了move_base需要的功能,即全局規劃器、局部規劃器和行為恢復。本設計中機器人采用兩輪差速結構,運動較為靈活,因而規劃器采用DWA算法,在能快速規劃路徑的同時,達到較好的行進效果,路徑規劃示意圖如圖8所示,其中紅色表示全局路徑,綠色表示局部路徑。acml是用于導航過程中的定位,是蒙特卡洛定位方法的一種升級版,基于粒子濾波的方法來進行定位的,并使用自適應的KLD方法來更新粒子。
2.2.4 輔助避障
由于導航過程中的動態避障功能依賴于單線激光雷達,其對黑色物體的感知較差,從而導致在導航過程中與動態出現在機器人形式路徑上著黑色衣物的行人發生碰撞,此外,在有玻璃的環境下,激光雷達也不能很好的工作,從而使得機器人終端位置的丟失。針對這類問題,該系統在雷達掃描的基礎上,增加了三個超聲波傳感器,掃描小車中軸線左右各60度夾角的區域,并且將數據添加到代價地圖與雷達數據進行融合,對雷達不能感知到的環境信息進行補充。
2.2.5 自動搭乘梯
對于跨樓層的投遞任務,機器人借助電梯來實現樓層切換。目前很多大樓的電梯都配備了物聯網通信接口,只需將機器人接入該電梯的通信接口,便可以自動實現對電梯的呼叫以及獲取電梯的狀態。在機器人導航進入電梯后,會根據目標樓層自動切當前的導航地圖,并以進入的位置初始化導航,從而在到達目標樓層時能夠無差別地繼續執行配送任務。此外,還有另一種通用的方案,即通過計算機視覺技術識別出電梯控制面板以及各功能鍵的位置,通過機械臂去模擬人的點擊動作,并通過相機檢測電梯樓層顯示面板的狀態來判斷當前樓層位置。

圖 9 共享服務軟件系統結構
2.2.6 自動回沖
機器人電量低于閾值時會自動到充電點進行充電。由于該機器人導航部分依賴于里程計,在長時間的運動下會累計誤差,從而使得定位產生偏差。自動充電系統采用有線充電,對于機器人觸頭的位置要求比較高。為此,在導航到充電樁的附近時,還需要輔助定位系統來矯正機器人感知的位置,從而較為精準的接觸充電樁,進行充電。這里采用紅外引導的方式,在充電樁上成角度安裝四個紅外發射管,使其覆蓋充電樁正前方區域。相應的,在機器人上安裝紅外接收器,在機器人導航到充電附近后,通過紅外信號的位置以及強弱,不斷調節自己的位置,直到接觸到充電樁開始充電。
本系統中,共享服務軟件系統包括三大部分,即服務器端,管理系統以及客戶端APP。應用服務器到機器人終端采用了華為云IoT平臺,該平臺作為連接業務應用和設備的中間層,屏蔽了各種復雜的設備接口,實現設備的快速接入。機器人端通過NB-IoT模塊接入網絡然后通過LWM2M/CoAP協議接入到華為云IoT平臺,將IP地址、當前位置、使用狀態、電量情況等設備狀態信息按周期上傳。IoT平臺則根據收到的應用服務請求,解析指令下發給機器人端。此外,華為云IoT平臺也提供了API,系統的應用服務器通過該API來實現對設備數據采集、命令下發、設備管理等操作。服務器上運行的應用服務程序和管理系統后端采用比較流行的Java Spring框架開發,采用MongoDB數據庫存儲用戶信息及設備信息,通過Http協議于IoT平臺進行數據交互。管理系統具有數據管理、設備部署以及信息監控的功能,方便管理人員對系統的控制。用戶App是基于Vue.js開發的,實現簡單的用戶注冊登錄界面,發起投遞任務以及顯示投遞任務進行的狀態等信息。
在當前物聯網技術和機器人技術快速發展的大背景下,室內配送無人化可以極大地提高配送效率以及方便用戶。本系統機器人能夠在室內環境中長期穩定可靠的運行,執行配送任務和自主充電,配合上遠程管理系統和用戶App,使得該系統能滿足多種服務場景,在物流末端配送、一些特殊場合的無接觸配送、寫字樓文件投遞等等可以發揮出很大的作用,助力智慧城市、智慧樓宇的建設。