王昱琪 熊紹托 齊巖松 韋隆圣 張紫軒
上海工程技術(shù)大學(xué)機(jī)械與汽車工程學(xué)院 上海 201600
隨著網(wǎng)絡(luò)的普及以及電商平臺(tái)的建立,信息化使如今的物流行業(yè)飛速發(fā)展,包裹分揀環(huán)節(jié)的任務(wù)量和錯(cuò)誤率逐漸上升。因此,設(shè)計(jì)一種可以自動(dòng)分揀包裹的機(jī)器人對(duì)實(shí)現(xiàn)物流行業(yè)的智能化具有重要意義。目前,依賴多傳感器進(jìn)行自主移動(dòng)的機(jī)器人的研究體系已較為成熟,人工智能算法不斷被提出并優(yōu)化。與軟件系統(tǒng)發(fā)展相協(xié)調(diào)的,是體積小、算力高的嵌入式硬件系統(tǒng)持續(xù)更新。
在過去的研究中,眾多文獻(xiàn)都提到了自主移動(dòng)機(jī)器人。文獻(xiàn)[1]研究提出了一種基于高斯分布重采樣的Rao-Blackwellized粒子濾波SLAM算法,改善了因缺乏粒子多樣性而造成的估計(jì)不精確問題。文獻(xiàn)[2]研究得出將機(jī)器人SLAM和目標(biāo)狀態(tài)估計(jì)作為整體進(jìn)行粒子濾波估計(jì),進(jìn)而提高了目標(biāo)狀態(tài)估計(jì)的準(zhǔn)確性。文獻(xiàn)[3]研究得出改變采樣方式和濾波條件對(duì)蒙特卡洛算法進(jìn)行改進(jìn)后實(shí)時(shí)定位精度較高、抗干擾性較強(qiáng)。文獻(xiàn)[4]研究得出在每個(gè)卷積層后面添加BN層可以增強(qiáng)規(guī)范性,通過遷移學(xué)習(xí)可以有效提升模型的泛化能力。文獻(xiàn)[5]研究得出根據(jù)機(jī)器人所運(yùn)輸?shù)奈锪骷馁|(zhì)量和機(jī)械臂上各連桿的尺寸可以逆向計(jì)算求得連桿所受的力和力矩。文獻(xiàn)[6]探討了激光雷達(dá)測(cè)距與建圖方法,并提出了兩種改進(jìn)算法。文獻(xiàn)[7]提出了從雷達(dá)點(diǎn)云中提取面元表達(dá)環(huán)境以實(shí)現(xiàn)室內(nèi)精確定位和建圖的方法。文獻(xiàn)[8]研究分析了傳統(tǒng)的三種路徑跟蹤方式,提出了改進(jìn)后的基于神經(jīng)網(wǎng)絡(luò)的移動(dòng)機(jī)器人路徑識(shí)別方法,通過實(shí)驗(yàn)表明控制機(jī)器人使其按照所識(shí)別的路徑曲率進(jìn)行跟蹤,可以提高機(jī)器人的路徑跟蹤精度。
圖1為系統(tǒng)硬件概述。分揀站點(diǎn)內(nèi)部有多臺(tái)計(jì)算機(jī)和機(jī)器人,機(jī)器人以NVIDIA Jetson TX2作為控制系統(tǒng)。計(jì)算機(jī)與機(jī)載NVIDIA Jetson TX2配置在同一局域網(wǎng)絡(luò)下并建立主從關(guān)系,計(jì)算機(jī)作為從機(jī),機(jī)載NVIDIA Jetson TX2作為主機(jī)。
圖1
將NVIDIA Jetson TX2與用于測(cè)量障礙物點(diǎn)云數(shù)據(jù)的激光雷達(dá),用于收集深度信息、進(jìn)行圖像識(shí)別以及二維碼識(shí)別的視覺傳感器,用于提供外部視覺位姿估計(jì)的IMU傳感器,用于測(cè)量機(jī)器人在運(yùn)動(dòng)通道上與通道邊緣距離的超聲波傳感器,用于測(cè)量機(jī)械臂夾持狀態(tài)的壓力傳感器連接。由Arduino充當(dāng)運(yùn)動(dòng)控制中心,Arduino與光電碼盤相連,光電碼盤通過串口為板載計(jì)算機(jī)提供里程計(jì)數(shù)據(jù),程序通過PID(比例積分微分)運(yùn)動(dòng)控制算法實(shí)現(xiàn)對(duì)電機(jī)的精準(zhǔn)驅(qū)動(dòng)。該機(jī)器人配備了一個(gè)電源系統(tǒng),用于電能分配并為決策單元、運(yùn)動(dòng)控制單元以及執(zhí)行單元供電。
機(jī)器人系統(tǒng)包括:(1)深度相機(jī),與激光雷達(dá)相配合的深度攝像頭可以為創(chuàng)建二維柵格地圖提供深度信息。此外,在匹配貨物時(shí)通過掃描貨箱上的二維碼提取貨物信息,進(jìn)而控制機(jī)械臂動(dòng)作。(2)USB相機(jī),機(jī)器人機(jī)身前方固定的USB相機(jī)可以收集環(huán)境信息作為神經(jīng)網(wǎng)絡(luò)輸入端數(shù)據(jù)。(3)激光雷達(dá),當(dāng)機(jī)器人在快遞站點(diǎn)的貨架間移動(dòng)時(shí),激光雷達(dá)用于建立地圖并根據(jù)地圖進(jìn)行自主定位和規(guī)劃路徑。(4)IMU傳感器,作用是提供位姿估計(jì),其內(nèi)由三個(gè)三軸傳感器構(gòu)成,分別是加速度計(jì)、陀螺儀和磁力計(jì),能夠感應(yīng)線性加速度、角旋轉(zhuǎn)速度和磁場(chǎng)矢量。(5)超聲波傳感器,提供機(jī)器人距離道路邊緣的距離信息。由于神經(jīng)網(wǎng)絡(luò)在達(dá)到最優(yōu)化之前會(huì)經(jīng)歷神經(jīng)元權(quán)重與卷積核不斷迭代調(diào)整的過程,因此提高初期的分類正確率尤為關(guān)鍵。根據(jù)實(shí)驗(yàn)結(jié)果人為調(diào)整一個(gè)距離閾值,當(dāng)距離大于該閾值時(shí),增加直行結(jié)果的權(quán)重;當(dāng)距離小于等于該閾值的時(shí)候,增加轉(zhuǎn)向結(jié)果的權(quán)重,可以提高神經(jīng)網(wǎng)絡(luò)分類的準(zhǔn)確率。(6)壓力傳感器,當(dāng)機(jī)械臂前爪內(nèi)側(cè)的壓力傳感器達(dá)到閾值并被觸發(fā)后,視為貨物被夾緊,機(jī)械臂開始搬運(yùn)。
控制系統(tǒng)主要由兩部分組成。(1)決策控制:由運(yùn)行ROS的從機(jī)與板載的NVIDIA計(jì)算機(jī)組成,NVIDIA計(jì)算機(jī)主要負(fù)責(zé)采集底盤與傳感器信息,并實(shí)現(xiàn)部分算法,而ROS從機(jī)經(jīng)過配置之后與NVIDIA計(jì)算機(jī)以主從方式工作,并負(fù)責(zé)執(zhí)行高級(jí)算法。(2)運(yùn)動(dòng)控制:以Arduino為主控制器的運(yùn)動(dòng)控制系統(tǒng)。由于PID控制具有較好的魯棒性并且易于實(shí)現(xiàn),因此運(yùn)動(dòng)控制單元采用PID閉環(huán)控制,光電碼盤在PID調(diào)節(jié)之前可以精確測(cè)量里程信息。
執(zhí)行系統(tǒng)主要包含兩部分。一是三軸全向輪電機(jī)驅(qū)動(dòng)系統(tǒng),即驅(qū)動(dòng)單元由一個(gè)驅(qū)動(dòng)器和三個(gè)電機(jī)組成,每個(gè)電機(jī)連接一個(gè)全向輪。該方式可以控制機(jī)器人的前進(jìn)、后退、轉(zhuǎn)向、旋轉(zhuǎn)、平移,增加了機(jī)器人運(yùn)動(dòng)的靈活性。二是抓取貨物的多自由度機(jī)械臂,由多個(gè)舵機(jī)通過連接擴(kuò)展板上不同的端口,在壓力傳感器的幫助下,穩(wěn)定抓取不同尺寸的貨物。
該機(jī)器人由可充電鋰聚合物電池供電,并通過一種簡(jiǎn)單的電池管理系統(tǒng)實(shí)現(xiàn)。電源系統(tǒng)可以合理地進(jìn)行電能分配并保證兩組24V、2600mAh的電池均勻放電,保證機(jī)器人在較長(zhǎng)時(shí)間內(nèi)運(yùn)行。它們被安置在固定于機(jī)器人載物臺(tái)下方的電池箱中,以便從機(jī)身上拆卸。其中一個(gè)電池組連接到電源模塊,另外一個(gè)電池組連接到電機(jī)驅(qū)動(dòng)器。
如圖2所示,提出了系統(tǒng)的軟件概述。首先,在ROS從機(jī)上,有兩個(gè)控制高級(jí)算法的部分,分別是計(jì)算機(jī)視覺和卷積神經(jīng)網(wǎng)絡(luò)。其中,通過調(diào)用工作空間下的對(duì)應(yīng)功能包和手動(dòng)更改相關(guān)配置文件實(shí)現(xiàn)在貨架區(qū)域自主移動(dòng),其效果可以在從機(jī)的插件中可視化顯示。TensorFlow的內(nèi)置函數(shù)簡(jiǎn)化了搭建和調(diào)整神經(jīng)網(wǎng)絡(luò)的過程。OpenCV庫中內(nèi)置了圖像識(shí)別模塊,可以訓(xùn)練二維碼識(shí)別模型。在主機(jī)上應(yīng)用了如下的功能包,分別是用于激光雷達(dá)數(shù)據(jù)采集的rplidar_ros,用于攝像頭數(shù)據(jù)采集的astra_camera和usb_camera,用于imu數(shù)據(jù)采集的9 dof_imu,用于里程計(jì)數(shù)據(jù)采集的ros_arduino。Arduino通過PID進(jìn)行調(diào)速。
圖2
如圖3概括了機(jī)器人的主程序。該程序由兩個(gè)主要模塊構(gòu)成,分別是SLAM模塊和路徑識(shí)別模塊。路徑識(shí)別模塊中將與道路邊緣距離作為調(diào)整分類權(quán)重的依據(jù)。SLAM模塊通過調(diào)用相應(yīng)功能包完成自主導(dǎo)航。
兩種主要算法的實(shí)現(xiàn)過程:首先說明創(chuàng)建柵格地圖的方式。該機(jī)器人利用ROS提供的Gmapping包來生成地圖。該功能包集成了Rao-Blackwellized粒子濾波算法,可以根據(jù)激光數(shù)據(jù)和姿態(tài)數(shù)據(jù)建立一個(gè)由網(wǎng)格構(gòu)成的2D地圖。
建圖完成之后可以進(jìn)行自主導(dǎo)航。自主導(dǎo)航需要調(diào)用的功能包是move_base,move_base提供了ROS導(dǎo)航的配置和運(yùn)行接口。它主要分為全局路徑規(guī)劃和本地路徑規(guī)劃兩個(gè)部分。該功能包可以配置四個(gè)文件,分別是:(1)通用地圖配置文件,該文件可以設(shè)置檢測(cè)障礙物以及自由空間的最大范圍,與障礙物的最小距離以及代價(jià)參數(shù)等。(2)全局規(guī)劃配置文件,該文件可以設(shè)置全局代價(jià)地圖的參考系、地圖更新頻率和分辨率等信息。(3)本地規(guī)劃配置文件,該文件用來設(shè)置本地代價(jià)地圖的相關(guān)參數(shù)。(4)本地規(guī)劃器設(shè)置,該文件可以設(shè)置行進(jìn)轉(zhuǎn)彎速度以及速度和加速度的閾值。導(dǎo)航過程中,我們需要調(diào)用amcl功能包完成自主定位功能,amcl功能包提供了自適應(yīng)蒙特卡洛定位算法,可以根據(jù)建成的地圖模型使用粒子濾波器估計(jì)機(jī)器人位置姿態(tài)。
以下說明建立神經(jīng)網(wǎng)絡(luò)的方式,在ROS從機(jī)上,以TensorFlow為框架編寫Python程序,該任務(wù)中擬采用經(jīng)典的ResNet網(wǎng)絡(luò)進(jìn)行損失迭代,初始化過程中的所有參數(shù)由特定域內(nèi)的正態(tài)分布的隨機(jī)數(shù)構(gòu)成。
初始化神經(jīng)網(wǎng)絡(luò)后,需通過ROS從機(jī)控制機(jī)器人底盤收集路況環(huán)境信息并人為給予每個(gè)訓(xùn)練數(shù)據(jù)標(biāo)簽,將所有帶標(biāo)簽的訓(xùn)練集分成若干束發(fā)送到ROS主機(jī)上。訓(xùn)練集首先進(jìn)入輸入層中,之后經(jīng)過卷積——池化——全連接層。算法會(huì)利用梯度下降法不斷迭代調(diào)整卷積層的卷積核以及全連接層的神經(jīng)元權(quán)重,若最終準(zhǔn)確率與貝葉斯錯(cuò)誤率相差較大,需要調(diào)整超參數(shù)和優(yōu)化算法。優(yōu)化算法可以參考Momentum、RMSprop以及Adam等。超參數(shù)調(diào)整則包括正則化、歸一化、卷積、激活等過程。神經(jīng)網(wǎng)絡(luò)建立完畢后,權(quán)重文件會(huì)被發(fā)送給NVIDIA計(jì)算機(jī),使機(jī)器人具備路徑識(shí)別能力。
圖3
本文設(shè)計(jì)了一種可以在物流分揀站點(diǎn)自動(dòng)化搬運(yùn)貨物的機(jī)器人。這種設(shè)計(jì)方式結(jié)合了傳統(tǒng)的多傳感器協(xié)同與新興的人工智能算法,使機(jī)器人效率達(dá)到最大化,為物流分揀這一流程提供了新的思路。不足的是機(jī)器人成本稍高,且算法的優(yōu)化需要周期進(jìn)行調(diào)整。因此,在實(shí)際應(yīng)用前需評(píng)估其經(jīng)濟(jì)價(jià)值并思考提高前期識(shí)別準(zhǔn)確率的方式。