王昱琪 熊紹托 齊巖松 韋隆圣 張紫軒
上海工程技術大學機械與汽車工程學院 上海 201600
隨著網絡的普及以及電商平臺的建立,信息化使如今的物流行業飛速發展,包裹分揀環節的任務量和錯誤率逐漸上升。因此,設計一種可以自動分揀包裹的機器人對實現物流行業的智能化具有重要意義。目前,依賴多傳感器進行自主移動的機器人的研究體系已較為成熟,人工智能算法不斷被提出并優化。與軟件系統發展相協調的,是體積小、算力高的嵌入式硬件系統持續更新。
在過去的研究中,眾多文獻都提到了自主移動機器人。文獻[1]研究提出了一種基于高斯分布重采樣的Rao-Blackwellized粒子濾波SLAM算法,改善了因缺乏粒子多樣性而造成的估計不精確問題。文獻[2]研究得出將機器人SLAM和目標狀態估計作為整體進行粒子濾波估計,進而提高了目標狀態估計的準確性。文獻[3]研究得出改變采樣方式和濾波條件對蒙特卡洛算法進行改進后實時定位精度較高、抗干擾性較強。文獻[4]研究得出在每個卷積層后面添加BN層可以增強規范性,通過遷移學習可以有效提升模型的泛化能力。文獻[5]研究得出根據機器人所運輸的物流件的質量和機械臂上各連桿的尺寸可以逆向計算求得連桿所受的力和力矩。文獻[6]探討了激光雷達測距與建圖方法,并提出了兩種改進算法。文獻[7]提出了從雷達點云中提取面元表達環境以實現室內精確定位和建圖的方法。文獻[8]研究分析了傳統的三種路徑跟蹤方式,提出了改進后的基于神經網絡的移動機器人路徑識別方法,通過實驗表明控制機器人使其按照所識別的路徑曲率進行跟蹤,可以提高機器人的路徑跟蹤精度。
圖1為系統硬件概述。分揀站點內部有多臺計算機和機器人,機器人以NVIDIA Jetson TX2作為控制系統。計算機與機載NVIDIA Jetson TX2配置在同一局域網絡下并建立主從關系,計算機作為從機,機載NVIDIA Jetson TX2作為主機。

圖1
將NVIDIA Jetson TX2與用于測量障礙物點云數據的激光雷達,用于收集深度信息、進行圖像識別以及二維碼識別的視覺傳感器,用于提供外部視覺位姿估計的IMU傳感器,用于測量機器人在運動通道上與通道邊緣距離的超聲波傳感器,用于測量機械臂夾持狀態的壓力傳感器連接。由Arduino充當運動控制中心,Arduino與光電碼盤相連,光電碼盤通過串口為板載計算機提供里程計數據,程序通過PID(比例積分微分)運動控制算法實現對電機的精準驅動。該機器人配備了一個電源系統,用于電能分配并為決策單元、運動控制單元以及執行單元供電。
機器人系統包括:(1)深度相機,與激光雷達相配合的深度攝像頭可以為創建二維柵格地圖提供深度信息。此外,在匹配貨物時通過掃描貨箱上的二維碼提取貨物信息,進而控制機械臂動作。(2)USB相機,機器人機身前方固定的USB相機可以收集環境信息作為神經網絡輸入端數據。(3)激光雷達,當機器人在快遞站點的貨架間移動時,激光雷達用于建立地圖并根據地圖進行自主定位和規劃路徑。(4)IMU傳感器,作用是提供位姿估計,其內由三個三軸傳感器構成,分別是加速度計、陀螺儀和磁力計,能夠感應線性加速度、角旋轉速度和磁場矢量。(5)超聲波傳感器,提供機器人距離道路邊緣的距離信息。由于神經網絡在達到最優化之前會經歷神經元權重與卷積核不斷迭代調整的過程,因此提高初期的分類正確率尤為關鍵。根據實驗結果人為調整一個距離閾值,當距離大于該閾值時,增加直行結果的權重;當距離小于等于該閾值的時候,增加轉向結果的權重,可以提高神經網絡分類的準確率。(6)壓力傳感器,當機械臂前爪內側的壓力傳感器達到閾值并被觸發后,視為貨物被夾緊,機械臂開始搬運。
控制系統主要由兩部分組成。(1)決策控制:由運行ROS的從機與板載的NVIDIA計算機組成,NVIDIA計算機主要負責采集底盤與傳感器信息,并實現部分算法,而ROS從機經過配置之后與NVIDIA計算機以主從方式工作,并負責執行高級算法。(2)運動控制:以Arduino為主控制器的運動控制系統。由于PID控制具有較好的魯棒性并且易于實現,因此運動控制單元采用PID閉環控制,光電碼盤在PID調節之前可以精確測量里程信息。
執行系統主要包含兩部分。一是三軸全向輪電機驅動系統,即驅動單元由一個驅動器和三個電機組成,每個電機連接一個全向輪。該方式可以控制機器人的前進、后退、轉向、旋轉、平移,增加了機器人運動的靈活性。二是抓取貨物的多自由度機械臂,由多個舵機通過連接擴展板上不同的端口,在壓力傳感器的幫助下,穩定抓取不同尺寸的貨物。
該機器人由可充電鋰聚合物電池供電,并通過一種簡單的電池管理系統實現。電源系統可以合理地進行電能分配并保證兩組24V、2600mAh的電池均勻放電,保證機器人在較長時間內運行。它們被安置在固定于機器人載物臺下方的電池箱中,以便從機身上拆卸。其中一個電池組連接到電源模塊,另外一個電池組連接到電機驅動器。
如圖2所示,提出了系統的軟件概述。首先,在ROS從機上,有兩個控制高級算法的部分,分別是計算機視覺和卷積神經網絡。其中,通過調用工作空間下的對應功能包和手動更改相關配置文件實現在貨架區域自主移動,其效果可以在從機的插件中可視化顯示。TensorFlow的內置函數簡化了搭建和調整神經網絡的過程。OpenCV庫中內置了圖像識別模塊,可以訓練二維碼識別模型。在主機上應用了如下的功能包,分別是用于激光雷達數據采集的rplidar_ros,用于攝像頭數據采集的astra_camera和usb_camera,用于imu數據采集的9 dof_imu,用于里程計數據采集的ros_arduino。Arduino通過PID進行調速。

圖2
如圖3概括了機器人的主程序。該程序由兩個主要模塊構成,分別是SLAM模塊和路徑識別模塊。路徑識別模塊中將與道路邊緣距離作為調整分類權重的依據。SLAM模塊通過調用相應功能包完成自主導航。
兩種主要算法的實現過程:首先說明創建柵格地圖的方式。該機器人利用ROS提供的Gmapping包來生成地圖。該功能包集成了Rao-Blackwellized粒子濾波算法,可以根據激光數據和姿態數據建立一個由網格構成的2D地圖。
建圖完成之后可以進行自主導航。自主導航需要調用的功能包是move_base,move_base提供了ROS導航的配置和運行接口。它主要分為全局路徑規劃和本地路徑規劃兩個部分。該功能包可以配置四個文件,分別是:(1)通用地圖配置文件,該文件可以設置檢測障礙物以及自由空間的最大范圍,與障礙物的最小距離以及代價參數等。(2)全局規劃配置文件,該文件可以設置全局代價地圖的參考系、地圖更新頻率和分辨率等信息。(3)本地規劃配置文件,該文件用來設置本地代價地圖的相關參數。(4)本地規劃器設置,該文件可以設置行進轉彎速度以及速度和加速度的閾值。導航過程中,我們需要調用amcl功能包完成自主定位功能,amcl功能包提供了自適應蒙特卡洛定位算法,可以根據建成的地圖模型使用粒子濾波器估計機器人位置姿態。
以下說明建立神經網絡的方式,在ROS從機上,以TensorFlow為框架編寫Python程序,該任務中擬采用經典的ResNet網絡進行損失迭代,初始化過程中的所有參數由特定域內的正態分布的隨機數構成。
初始化神經網絡后,需通過ROS從機控制機器人底盤收集路況環境信息并人為給予每個訓練數據標簽,將所有帶標簽的訓練集分成若干束發送到ROS主機上。訓練集首先進入輸入層中,之后經過卷積——池化——全連接層。算法會利用梯度下降法不斷迭代調整卷積層的卷積核以及全連接層的神經元權重,若最終準確率與貝葉斯錯誤率相差較大,需要調整超參數和優化算法。優化算法可以參考Momentum、RMSprop以及Adam等。超參數調整則包括正則化、歸一化、卷積、激活等過程。神經網絡建立完畢后,權重文件會被發送給NVIDIA計算機,使機器人具備路徑識別能力。

圖3
本文設計了一種可以在物流分揀站點自動化搬運貨物的機器人。這種設計方式結合了傳統的多傳感器協同與新興的人工智能算法,使機器人效率達到最大化,為物流分揀這一流程提供了新的思路。不足的是機器人成本稍高,且算法的優化需要周期進行調整。因此,在實際應用前需評估其經濟價值并思考提高前期識別準確率的方式。