譚韶峰,蘇朝文,徐江山
(天津工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津,300000)
現(xiàn)在各種辦公樓、居民樓等正在向智能化方向發(fā)展,人們?cè)絹碓蕉鄻I(yè)務(wù)往來所涉及的物品投遞發(fā)生在樓宇內(nèi)。這種場(chǎng)景中,傳統(tǒng)方式顯然已經(jīng)無法滿足人滿需求。本項(xiàng)目基于激 光SLAM(Simultaneous Localization and Mapping)技術(shù),ROS(Robot Operating System)技術(shù),人工智能技術(shù)、物聯(lián)網(wǎng)技術(shù),參考共享單車的商業(yè)模式,提出了一套可以共享使用的樓宇內(nèi)無人配送系。用戶可以通過手機(jī)終端輕松控制智能車實(shí)現(xiàn)樓宇內(nèi)定點(diǎn)物品投遞,智能車則能夠根據(jù)傳感器感知和智能算法自主尋址到指定服務(wù)地點(diǎn)或投遞地點(diǎn)。該系統(tǒng)既可以用于物流行業(yè)的末端配送,也可以運(yùn)用于辦公區(qū)域的自助物品投遞以及特殊場(chǎng)景下的無接觸配送等。
整體系統(tǒng)由機(jī)器人端軟硬件系統(tǒng)和共享服務(wù)平臺(tái)軟件系統(tǒng)組成。機(jī)器人端軟硬件系統(tǒng)實(shí)現(xiàn)的功能包括基本運(yùn)動(dòng)控制,傳感器數(shù)據(jù)處理采集,環(huán)境二維地圖構(gòu)建、即時(shí)定位、路徑規(guī)劃與自主導(dǎo)航、物聯(lián)網(wǎng)通信系統(tǒng)、用戶交互等,是整個(gè)系統(tǒng)的核心部分。共享服務(wù)軟件系統(tǒng)分為后臺(tái)服務(wù)系統(tǒng)、后臺(tái)管理系統(tǒng)、用戶端軟件系統(tǒng)組成機(jī)器人終端通過NBIoT網(wǎng)絡(luò)接入華為云IoT平臺(tái),與系統(tǒng)服務(wù)器建立連接,管理員可以通過系統(tǒng)管理端來對(duì)機(jī)器人設(shè)備進(jìn)行管理、監(jiān)控,用戶可以通過移動(dòng)客戶端來發(fā)起投遞任務(wù)。系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)示意圖
圖 2 機(jī)器人硬件結(jié)構(gòu)框圖
結(jié)構(gòu)框圖如圖2所示,機(jī)器人下位機(jī)選用STM32F405開發(fā)板,該開發(fā)板提供了工作頻率為168 MHz的Arm Cortex-M4內(nèi)核的性能、多達(dá)15個(gè)通信接口,可以滿足實(shí)時(shí)的運(yùn)動(dòng)控制以及大量傳感器數(shù)據(jù)的采集與處理。下位機(jī)系統(tǒng)的主要作用之一是采集電機(jī)編碼器數(shù)據(jù)、IMU數(shù)據(jù)、超聲波數(shù)據(jù)以及激光雷達(dá)的數(shù)據(jù),并且將這些數(shù)據(jù)打包發(fā)送給上位機(jī)系統(tǒng)。此外還具有接收上位機(jī)的控制指令,通過PID算法,對(duì)電機(jī)速度做出調(diào)節(jié)從而使得機(jī)器人按照指令做出相應(yīng)的移動(dòng)和控制伺服電機(jī)轉(zhuǎn)動(dòng)開合儲(chǔ)物柜。上位機(jī)采用Jetson nano開發(fā)版,該開發(fā)版搭載ARMv8系CPU以及性能強(qiáng)大的GPU,可以輕松處理各種運(yùn)算。此外該開發(fā)板還搭載了WiFi、藍(lán)牙通信模塊以及外接的NB-IoT通信模組,便于機(jī)器人與其他物聯(lián)網(wǎng)設(shè)備、云服務(wù)器等進(jìn)行數(shù)據(jù)傳輸。Jetson nano也具有豐富的串行接口和IO口,可以方便地拓展上層組件。本系統(tǒng)中,上位機(jī)主要用作地圖構(gòu)建、路徑規(guī)劃、實(shí)時(shí)避障、用戶交互、業(yè)務(wù)應(yīng)用以及實(shí)現(xiàn)聯(lián)網(wǎng)通信。機(jī)器人模型如圖3所示,主要包括運(yùn)動(dòng)基座(含下位機(jī)硬件系統(tǒng)),電源、上位機(jī)硬件系統(tǒng),帶自動(dòng)門的儲(chǔ)物柜,深度攝像機(jī)以及激光雷達(dá)。
圖 3 機(jī)器人模型簡(jiǎn)圖
機(jī)器人運(yùn)動(dòng)底盤采用兩輪差速結(jié)構(gòu),并前后配上兩個(gè)萬向輪,以保證機(jī)器人運(yùn)動(dòng)的穩(wěn)定性,模型如圖4所示。機(jī)器人左右兩側(cè)是驅(qū)動(dòng)輪,分別由兩個(gè)電機(jī)驅(qū)動(dòng),而前后是被動(dòng)輪,采用萬向輪。通過調(diào)節(jié)左右驅(qū)動(dòng)的速度,控制機(jī)器人運(yùn)動(dòng):若左右驅(qū)動(dòng)輪的速度相同,則機(jī)器人直線運(yùn)動(dòng),若左右兩輪速度不同,則機(jī)器人做圓周運(yùn)動(dòng)。
圖4 底盤結(jié)構(gòu)簡(jiǎn)圖
機(jī)器人的運(yùn)動(dòng)模型如5所示,其中CENTER為底盤的幾何中心,ICR(Instantaneous Center of Rotation)為瞬時(shí)旋轉(zhuǎn)中心,rc為旋轉(zhuǎn)半徑,w為旋轉(zhuǎn)角速度,dwb為左右輪中心距離,L、R為左右輪與地面的接觸點(diǎn),vl、vc、vr分別為L(zhǎng)點(diǎn)、CENTER點(diǎn)以及R點(diǎn)的線速度。簡(jiǎn)單分析可以得出該機(jī)器人底盤正運(yùn)動(dòng)學(xué)模型,如公式(1)所示:
該模型是基于左右驅(qū)動(dòng)輪的速度來計(jì)算幾何中心點(diǎn)CENTER的速度。在機(jī)器人兩個(gè)驅(qū)動(dòng)輪上安裝編碼器便可以計(jì)算出兩個(gè)驅(qū)動(dòng)輪的線速度,再通過公式(1)便可以得到CENTER的速度,并可以進(jìn)一步被用于計(jì)算機(jī)器人的里程計(jì)數(shù)據(jù),作用于后面的地圖構(gòu)建和定位功能中。
圖 5 運(yùn)動(dòng)模型
圖 6 機(jī)器人端軟件設(shè)計(jì)框圖
由公式(1)變換可以表示出逆運(yùn)動(dòng)學(xué)模型,如公式(2)所示:
該模型是基于幾何中心點(diǎn)CENTER的速度分解出左右驅(qū)動(dòng)輪的速度。這里的逆運(yùn)動(dòng)學(xué)模型用于對(duì)上位機(jī)下發(fā)的機(jī)器人移動(dòng)速度控制數(shù)據(jù)的解算,并通過PID算法進(jìn)一步控制兩個(gè)驅(qū)動(dòng)輪的精準(zhǔn)轉(zhuǎn)動(dòng)。
機(jī)器人終端的建圖及自主導(dǎo)航功能主要由上位機(jī)ROS系統(tǒng)上實(shí)現(xiàn),下位機(jī)主要用于采集傳感器數(shù)據(jù)、控制電機(jī)的轉(zhuǎn)動(dòng)。軟件系統(tǒng)基于ROS進(jìn)行開發(fā),在ROS生態(tài)中,有著成熟的SLAM應(yīng)用棧以及Navigation應(yīng)用棧,在數(shù)據(jù)融合良好的情況下,能夠達(dá)到優(yōu)秀的自動(dòng)導(dǎo)航效果。圖6為配送機(jī)器人的軟件系統(tǒng)設(shè)計(jì),軟件分為五大部分,分別是數(shù)據(jù)采集處理模塊,運(yùn)動(dòng)控制模塊,SLAM模塊,Navigation模塊,交互模塊。
2.2.1 數(shù)據(jù)采集與處理
機(jī)器人對(duì)環(huán)境數(shù)據(jù)的采集由下位機(jī)來完成。下位機(jī)軟件根據(jù)運(yùn)動(dòng)模型將編碼器數(shù)據(jù)轉(zhuǎn)換為里程計(jì)數(shù)據(jù),包括機(jī)器人旋轉(zhuǎn)的角度、在右手笛卡爾坐標(biāo)系下x方向運(yùn)動(dòng)的距離以及y軸運(yùn)動(dòng)的距離三個(gè)數(shù)據(jù),并于通過卡爾曼濾波器的IMU數(shù)據(jù)進(jìn)行融合,得到底盤位姿數(shù)據(jù)。雷達(dá)數(shù)據(jù)通過對(duì)壞點(diǎn)過濾后于底盤位姿數(shù)據(jù)打包經(jīng)過串口發(fā)送給上位機(jī)。上位機(jī)得到數(shù)據(jù)后通過ROS的發(fā)布訂閱機(jī)制,將這些數(shù)據(jù)發(fā)布出去,供給其他模塊使用。
2.2.2 多傳感器融合SLAM
SLAM算法有許多種類型,常見的有Gmapping、Hector_slam、Karto、Cartographer。經(jīng)過反復(fù)測(cè)試,發(fā)現(xiàn)在室內(nèi)環(huán)境中Gmapping算法在建圖效果以及性能上,是優(yōu)于其他幾種的。Gmapping是ROS開源社區(qū)中比較成熟的SLAM算法,能夠繪制二維的柵格地圖。建圖采用里程計(jì)和 IMU數(shù)據(jù),通過擴(kuò)展卡爾曼濾波得到位姿提交到 Gmapping里面,建圖的效果優(yōu)異,而且還可以建立大型地圖,對(duì)于移動(dòng)時(shí)的加減速考慮的也相對(duì)較少,建圖效果如圖7所示,其中黑色表示該位置占用,白色表示自由空間。
圖 7 二維格柵地圖
圖 8 路徑規(guī)劃
2.2.3 自動(dòng)導(dǎo)航
機(jī)器人的自動(dòng)導(dǎo)航功能主要通過ROS的Navigation導(dǎo)航框架來實(shí)現(xiàn),其作用簡(jiǎn)單來講就是根據(jù)輸入的傳感器信息流和機(jī)器人的全局位置,通過路徑規(guī)劃算法,計(jì)算得出安全可靠的機(jī)器人速度控制指令。在本設(shè)計(jì)中,機(jī)器人的自動(dòng)導(dǎo)航的實(shí)現(xiàn)主要是通過該框架的map_server、move_base、acml以 及nav_core。其 中map_server是地圖服務(wù)器,用于保存地圖和載入地圖,并且可以結(jié)合costmap_2d功能模塊來生成代價(jià)地圖,實(shí)現(xiàn)機(jī)器人的動(dòng)態(tài)避障。move_base實(shí)現(xiàn)對(duì)整個(gè)導(dǎo)航流程的控制,包括對(duì)全局、局部路徑規(guī)劃的選擇以及在機(jī)器人丟失位置時(shí)執(zhí)行恢復(fù)操作。nav_core中實(shí)現(xiàn)了move_base需要的功能,即全局規(guī)劃器、局部規(guī)劃器和行為恢復(fù)。本設(shè)計(jì)中機(jī)器人采用兩輪差速結(jié)構(gòu),運(yùn)動(dòng)較為靈活,因而規(guī)劃器采用DWA算法,在能快速規(guī)劃路徑的同時(shí),達(dá)到較好的行進(jìn)效果,路徑規(guī)劃示意圖如圖8所示,其中紅色表示全局路徑,綠色表示局部路徑。acml是用于導(dǎo)航過程中的定位,是蒙特卡洛定位方法的一種升級(jí)版,基于粒子濾波的方法來進(jìn)行定位的,并使用自適應(yīng)的KLD方法來更新粒子。
2.2.4 輔助避障
由于導(dǎo)航過程中的動(dòng)態(tài)避障功能依賴于單線激光雷達(dá),其對(duì)黑色物體的感知較差,從而導(dǎo)致在導(dǎo)航過程中與動(dòng)態(tài)出現(xiàn)在機(jī)器人形式路徑上著黑色衣物的行人發(fā)生碰撞,此外,在有玻璃的環(huán)境下,激光雷達(dá)也不能很好的工作,從而使得機(jī)器人終端位置的丟失。針對(duì)這類問題,該系統(tǒng)在雷達(dá)掃描的基礎(chǔ)上,增加了三個(gè)超聲波傳感器,掃描小車中軸線左右各60度夾角的區(qū)域,并且將數(shù)據(jù)添加到代價(jià)地圖與雷達(dá)數(shù)據(jù)進(jìn)行融合,對(duì)雷達(dá)不能感知到的環(huán)境信息進(jìn)行補(bǔ)充。
2.2.5 自動(dòng)搭乘梯
對(duì)于跨樓層的投遞任務(wù),機(jī)器人借助電梯來實(shí)現(xiàn)樓層切換。目前很多大樓的電梯都配備了物聯(lián)網(wǎng)通信接口,只需將機(jī)器人接入該電梯的通信接口,便可以自動(dòng)實(shí)現(xiàn)對(duì)電梯的呼叫以及獲取電梯的狀態(tài)。在機(jī)器人導(dǎo)航進(jìn)入電梯后,會(huì)根據(jù)目標(biāo)樓層自動(dòng)切當(dāng)前的導(dǎo)航地圖,并以進(jìn)入的位置初始化導(dǎo)航,從而在到達(dá)目標(biāo)樓層時(shí)能夠無差別地繼續(xù)執(zhí)行配送任務(wù)。此外,還有另一種通用的方案,即通過計(jì)算機(jī)視覺技術(shù)識(shí)別出電梯控制面板以及各功能鍵的位置,通過機(jī)械臂去模擬人的點(diǎn)擊動(dòng)作,并通過相機(jī)檢測(cè)電梯樓層顯示面板的狀態(tài)來判斷當(dāng)前樓層位置。
圖 9 共享服務(wù)軟件系統(tǒng)結(jié)構(gòu)
2.2.6 自動(dòng)回沖
機(jī)器人電量低于閾值時(shí)會(huì)自動(dòng)到充電點(diǎn)進(jìn)行充電。由于該機(jī)器人導(dǎo)航部分依賴于里程計(jì),在長(zhǎng)時(shí)間的運(yùn)動(dòng)下會(huì)累計(jì)誤差,從而使得定位產(chǎn)生偏差。自動(dòng)充電系統(tǒng)采用有線充電,對(duì)于機(jī)器人觸頭的位置要求比較高。為此,在導(dǎo)航到充電樁的附近時(shí),還需要輔助定位系統(tǒng)來矯正機(jī)器人感知的位置,從而較為精準(zhǔn)的接觸充電樁,進(jìn)行充電。這里采用紅外引導(dǎo)的方式,在充電樁上成角度安裝四個(gè)紅外發(fā)射管,使其覆蓋充電樁正前方區(qū)域。相應(yīng)的,在機(jī)器人上安裝紅外接收器,在機(jī)器人導(dǎo)航到充電附近后,通過紅外信號(hào)的位置以及強(qiáng)弱,不斷調(diào)節(jié)自己的位置,直到接觸到充電樁開始充電。
本系統(tǒng)中,共享服務(wù)軟件系統(tǒng)包括三大部分,即服務(wù)器端,管理系統(tǒng)以及客戶端APP。應(yīng)用服務(wù)器到機(jī)器人終端采用了華為云IoT平臺(tái),該平臺(tái)作為連接業(yè)務(wù)應(yīng)用和設(shè)備的中間層,屏蔽了各種復(fù)雜的設(shè)備接口,實(shí)現(xiàn)設(shè)備的快速接入。機(jī)器人端通過NB-IoT模塊接入網(wǎng)絡(luò)然后通過LWM2M/CoAP協(xié)議接入到華為云IoT平臺(tái),將IP地址、當(dāng)前位置、使用狀態(tài)、電量情況等設(shè)備狀態(tài)信息按周期上傳。IoT平臺(tái)則根據(jù)收到的應(yīng)用服務(wù)請(qǐng)求,解析指令下發(fā)給機(jī)器人端。此外,華為云IoT平臺(tái)也提供了API,系統(tǒng)的應(yīng)用服務(wù)器通過該API來實(shí)現(xiàn)對(duì)設(shè)備數(shù)據(jù)采集、命令下發(fā)、設(shè)備管理等操作。服務(wù)器上運(yùn)行的應(yīng)用服務(wù)程序和管理系統(tǒng)后端采用比較流行的Java Spring框架開發(fā),采用MongoDB數(shù)據(jù)庫存儲(chǔ)用戶信息及設(shè)備信息,通過Http協(xié)議于IoT平臺(tái)進(jìn)行數(shù)據(jù)交互。管理系統(tǒng)具有數(shù)據(jù)管理、設(shè)備部署以及信息監(jiān)控的功能,方便管理人員對(duì)系統(tǒng)的控制。用戶App是基于Vue.js開發(fā)的,實(shí)現(xiàn)簡(jiǎn)單的用戶注冊(cè)登錄界面,發(fā)起投遞任務(wù)以及顯示投遞任務(wù)進(jìn)行的狀態(tài)等信息。
在當(dāng)前物聯(lián)網(wǎng)技術(shù)和機(jī)器人技術(shù)快速發(fā)展的大背景下,室內(nèi)配送無人化可以極大地提高配送效率以及方便用戶。本系統(tǒng)機(jī)器人能夠在室內(nèi)環(huán)境中長(zhǎng)期穩(wěn)定可靠的運(yùn)行,執(zhí)行配送任務(wù)和自主充電,配合上遠(yuǎn)程管理系統(tǒng)和用戶App,使得該系統(tǒng)能滿足多種服務(wù)場(chǎng)景,在物流末端配送、一些特殊場(chǎng)合的無接觸配送、寫字樓文件投遞等等可以發(fā)揮出很大的作用,助力智慧城市、智慧樓宇的建設(shè)。