孫小飛,余 濤,陳 銳
(重慶大學,重慶 400044)
電子商務的迅猛發(fā)展,為倉儲物流行業(yè)帶來了新的需求和挑戰(zhàn)[1]。中國快遞行業(yè)的整體規(guī)模也在電子商務的迅猛發(fā)展下迅速壯大,2019年業(yè)務量已超過630億件,如此巨大業(yè)務量的快遞分揀工作也消耗著大量的人力物力資源。例如,在勞動密集型的配送中心,從事分揀作業(yè)的人員占配送人員總數(shù)的50%,花費在分揀作業(yè)上的時間占配送中心總工作時間的30%~40%[2],這種傳統(tǒng)的人工手動模式效率低、錯誤率高;而立體倉庫等自動分揀系統(tǒng)雖然分揀效率較高,但占地面積大,而且,一旦建成就不可改變,柔性和靈活性較差[3]。
針對目前倉儲物流行業(yè)存在的問題,本文以中國機器人大賽“自動分揀”項目為依托,設計了一款具有自主導航、自動避障以及自動分揀功能的自動分揀機器人,并且,在實驗過程中,針對DWA算法存在的問題進行了相應的優(yōu)化。
本文中的自動分揀機器人本體結(jié)構(gòu)由四驅(qū)麥克納姆輪底盤、二自由度機械臂以及自動分揀倉庫組成。其中,四驅(qū)麥克納姆輪底盤采用四組1000線的光電式編碼器直流減速電機(減速比1:27)驅(qū)動麥克納姆輪的驅(qū)動形式,選用的編碼器可以精確地測出機器人四個輪子的角速度數(shù)據(jù),作為里程計數(shù)據(jù)的重要參考;電機固定板采用雙層玻纖板結(jié)構(gòu),兩層玻纖板靠銅柱支撐,中間放置電機驅(qū)動器、STM32控制板以及超聲波傳感器等元器件,其中兩個超聲波位于底盤前端,兩個超聲波位于底盤后端,固定板四周則由一圈較薄的玻纖板將其密封,防塵的同時,保證美觀。二自由度機械臂的大臂由步進電機驅(qū)動,小臂由舵機驅(qū)動,小臂末端為舵機驅(qū)動的撥片,撥片上安有顏色傳感器,對目標物體進行顏色識別。自動分揀倉庫由滑道,分揀擋板、分揀通道組成,分揀擋板會根據(jù)顏色傳感器的顏色反饋進行擺動,將目標顏色的球體分別放置于不同倉庫中。另外,機器人的前端放置有深度相機Kinect,分揀倉庫上端安裝有激光雷達Rplidar,機械臂側(cè)面為MinpiPC。圖1為該機器人的結(jié)構(gòu)示意圖。
圖1 機器人結(jié)構(gòu)示意圖
該機器人的移動底盤采用四驅(qū)麥克納姆輪[4]驅(qū)動,該方式具有轉(zhuǎn)彎半徑小、運動靈活等特點。根據(jù)ROS下坐標系的規(guī)定,建立其運動學模型示意圖:
圖2 四驅(qū)麥克納姆輪運動學模型示意圖
對下位機上傳的四個編碼器數(shù)據(jù)進行速度解算得到機器人的速度:
其中ω1、ω2、ω3、ω4為四個輪子的角速度,Rω是輪轂半徑,2α為橫向兩輪中心間距,2b為前后輪軸的中心距,麥克納姆輪輪轂軸線和輥子軸線的夾角為α=45°;
若在初始時刻機器人坐標系(xroryr)與里程計坐標系(xoooyo)重合,則利用累加的方式進行機器人定位:
式(3)采用了近似的計算方法,其假定在采樣間隔tΔt內(nèi)速度是恒定的,因此tΔt應該盡可能小,計算精度才會越高。
但是,由于麥克納姆輪運動過程中,打滑現(xiàn)象嚴重,所以會造成機器人在運動,尤其是轉(zhuǎn)彎時,根據(jù)編碼器數(shù)據(jù)計算得到的里程計會存在較大誤差,為了保證里程計的精確性,采用下面兩種方法進行優(yōu)化:
用IMU的yaw軸角速度替換由四個編碼器數(shù)據(jù)計算得到的角速度值;
對機器人直線和自轉(zhuǎn)運動進行里程計精度測量,在相應的里程計算公式中增加校正系數(shù):
得到新的里程計計算公式:
自動分揀機器人硬件系統(tǒng)由上位機與下位機兩部分組成。上位機為MiniPC,裝載Ubuntu 16.04+ROS kinetic,其與深度相機Kinect、激光雷達RplidarA2、慣性傳感器Razor_imu_9dof等通過USB串口直接相連,進行環(huán)境信息以及自身位姿數(shù)據(jù)獲取。下位機為STM32,其與直流電機驅(qū)動器RoboModule之間通過CAN通信,實現(xiàn)對四個底盤電機的驅(qū)動;與步進電機驅(qū)動器TB6600直連控制大臂步進電機動作;與舵機驅(qū)動器PCA9625之間通過IIC通信,實現(xiàn)對多個舵機的控制;顏色傳感器與STM32直連,通過IIC通信,獲取目標物體的RGB值;超聲波傳感器與STM32直連,獲取距離數(shù)據(jù)。上位機與下位機通過串口線連接,實現(xiàn)數(shù)據(jù)通信。該自動分揀機器人的硬件框架如圖3所示。
圖3 硬件框架
自動分揀機器人的軟件系統(tǒng)包括上位機導航控制系統(tǒng)和下位機底層驅(qū)動控制系統(tǒng),其中,上位機基于ROS實現(xiàn)了機器人的自主導航功能[5],下位機通過STM32實現(xiàn)對底層傳感器的驅(qū)動控制,兩者通過串口通信實現(xiàn)數(shù)據(jù)傳輸。圖4為上位機與下位機的通信框圖。
圖4 通信框圖
機器人的下位機底層驅(qū)動系統(tǒng)主要通過STM32實現(xiàn)電機的底層驅(qū)動以及顏色傳感器、超聲波傳感器數(shù)據(jù)獲取。STM32通過與超聲波直連,獲取機器人前后500mm距離范圍內(nèi)的障礙物信息,并通過串口將距離數(shù)據(jù)上傳到上位機,進行避障、距離矯正;同時,下位機根據(jù)上位機下發(fā)的速度數(shù)據(jù)控制底盤運動,并將機器人的實際運動速度上傳給上位機;當機器人運動到目標位置后,上位機對目標點標志位進行賦值,下發(fā)給下位機,下位機根據(jù)標志位的數(shù)據(jù)控制機械臂、自動分揀倉庫動作,實現(xiàn)對目標物體的分揀、放置工作;當工作完成后,下位機對工作完成標志位進行賦值,并通過串口上傳到上位機,發(fā)布相應目標點任務。機器人下位機底層驅(qū)動控制系統(tǒng)框架如圖5所示。
圖5 下位機底層驅(qū)動控制系統(tǒng)框架
機器人的上位機導航控制系統(tǒng)基于ROS實現(xiàn)機器人的自主導航[6,7]功能。上位機利用下位機上傳的編碼器數(shù)據(jù)以及IMU的yaw軸角速度數(shù)據(jù)進行里程計計算,并結(jié)合Rplidar、Kinect采集的外部環(huán)境進行信息,利用Gmapping算法進行建圖,利用AMCL算法實現(xiàn)定位。另外,上位機根據(jù)下位機上傳的工作完成標志位的數(shù)據(jù)發(fā)布相應的目標點任務,利用A*算法進行全局路徑規(guī)劃避開所有障礙物,利用DWA算法在全局路徑的基礎上,產(chǎn)生一系列的速度下發(fā)到下位機,控制底盤運動。當機器人運動到指定位置后,上位機利用IMU的yaw軸姿態(tài)數(shù)據(jù)結(jié)合超聲波數(shù)據(jù)進行姿態(tài)矯正;矯正完成后,上位機對目標點標志位進行賦值,下發(fā)給下位機,完成相應的抓取、放置工作。機器人上位機導航控制系統(tǒng)框架如圖6所示。
圖6 上位機導航控制系統(tǒng)控制框架
自動分揀機器人的主要功能是自主完成多點導航以及目標物體的自動分揀放置工作。首先,啟動機器人,機器人向抓取區(qū)運動,當運動到目標位置后,會進行姿態(tài)矯正,保證抓取的可靠性;然后,機械臂擺動到工作狀態(tài),通過顏色傳感器對目標物體進行顏色識別,分選到指定倉庫中;接著,機器人先后運動到紅、藍色倉庫區(qū),打開自動分揀倉庫門,將不同顏色的目標物體放置到指定倉庫;最后,機器人回到初始位置。
機器人的邏輯控制框架如圖7所示。
圖7 邏輯控制框架
由于該機器人在工作區(qū)域內(nèi)多處需要拐彎、掉頭,所以減少拐彎、掉頭時行走的路徑,從而縮短機器人的運行時間,對提高機器人的工作效率很有必要。同時,工作場地上存在著各種靜態(tài)、動態(tài)障礙物,所以,良好的避障效果也十分重要。該自動分揀機器人的路徑規(guī)劃算法采用A*和DWA算法,其中,DWA算法具有較好的實時性,但是避障效果較差,因此,針對機器人的工作需求以及DWA算法存在的問題,對DWA算法做了相應的優(yōu)化。
sim_period越長,速度越大,規(guī)劃出的路徑越長,越能更早的避開障礙物,但是路徑末端端點偏離全局路徑的方位差越大。當算法對局部路徑與全局路徑進行貼合程度打分時,會以局部路徑的末端端點為參考,如果選擇的局部路徑與全局路徑末端端點位姿偏差越大,機器人在掉頭、拐彎或者避障時,需要運動一個比較大的軌跡才能調(diào)整到局部路徑末端對應的全局路徑的位姿,從而,也增加了機器人的運動時間。
為了得到最優(yōu)的整體效果,最終采用增加仿真時間,裁剪局部路徑的方式對DWA算法進行優(yōu)化。如圖8所示,適當增加仿真時間sim_period,進而增加DWA算法規(guī)劃出的路徑長度,當算法進行避障評價時,可以更早的做出避障判斷;當對局部路徑與全局路徑的貼合程度進行評價時,對路徑進行裁剪,去掉局部路徑末端偏離全局路徑的部分,保證局部路徑和全局路徑的貼合程度,同時,充分發(fā)揮麥克納姆輪的運動特性,使機器人在轉(zhuǎn)彎、掉頭、避障時傾向于并且可以通過自轉(zhuǎn)的方式調(diào)整機器人位姿,從而減少運行路徑,縮短運行時間,優(yōu)化避障效果。
圖8 路徑選擇評價圖
自動分揀機器人的主要功能是自主完成多點導航以及目標物體的自動分揀放置工作。并且,根據(jù)DWA算法原理以及麥克納姆輪的運動特性,對DWA算法進行了優(yōu)化。
研究過程中,根據(jù)工作需求,提前設置好目標點坐標,自動分揀機器人按順序從啟動區(qū)依次運動到藍(紅)色抓取區(qū)、藍(紅)色倉庫區(qū)、紅(藍)色倉庫區(qū)、啟動區(qū),并且完成相應的抓取分揀工作、藍(紅)球放置工作、紅(藍)球放置工作。機器人在工作過程中的工作狀態(tài)圖如下:
圖9 工作狀態(tài)圖
機器人工作環(huán)境中存在著各種靜態(tài)、動態(tài)障礙物,并且障礙物的高度、位置各不相同,所以傳感器檢測障礙物時,需要有較大的檢測范圍。因此,該機器人障礙物檢測傳感器采用分層布置方式。其中,底盤上的超聲波通過控制邏輯,進行高度較低、距離較近物體避障;Rplidar、Kinect將檢測到的障礙物投到代價地圖Costmap上進行避障,其中,Rplidar進行高度較高物體避障,Kinect進行超生波以及Rplidar中間層的障礙物避障,從而保證了機器人的避障能力。圖10為機器人障礙物檢測區(qū)域分布圖,其中,深色三角區(qū)域為超聲波檢測范圍,深色矩形區(qū)域為Kinect檢測范圍,Rplidar檢測范圍為高度為350mm的360°圓周范圍,圖中未標出。圖11為Kinect與Rplidar的避障效果圖,其中,左圖為Kinect拍攝圖像,右圖為Kinect圖像中高、低障礙物在Costmap中投影,并且,機器人規(guī)劃出的路徑完全避開了障礙物。
圖10 障礙物檢測區(qū)域分布圖
圖11 避障效果圖
4.3.1 掉頭實驗
本研究選取了不同的sin_period,對算法優(yōu)化前后,10次試驗中,機器人旋轉(zhuǎn)180°運行總時間以及相對起點位置(該坐標系為右手笛卡爾坐標系,并且,機器人正前方為X軸正方向),機器人在X軸、Y軸方向的偏移量進行記錄,求取相應平均值,實驗結(jié)果如圖12、圖13所示。由于優(yōu)化后的算法對局部路徑進行了裁剪,使局部路徑與全局路徑更加貼合,機器人在掉頭、拐彎時,傾向于通過自轉(zhuǎn)的方式進行,所以行走的路徑更短,消耗時間更少。當選取sim_period=2.5時,算法優(yōu)化后,機器人掉頭完成時的Y軸偏移量是優(yōu)化前Y軸偏移量的51%,優(yōu)化后的運行時間也比優(yōu)化前縮短了30%,并且,隨著sim_period的增加,優(yōu)化后的算法仍能使機器人保持很好的掉頭效果。由此可見,優(yōu)化后的算法可以使機器人具有更好的掉頭效果。
圖12 掉頭運行時間消耗圖
圖13 掉頭運動偏移量
4.3.2 避障實驗
本研究在機器人正前方1 m處設置一長寬高為64×23×42cm 的長方體障礙物,將機器人目標點設置在機器人正前方2.5m處,選取不同的sim_period,運行程序,記錄10次試驗中,機器人越過障礙物運行的時間。由于優(yōu)化后算法規(guī)劃的局部路徑與全局路徑有更好的貼合性,使機器人在避障時行走路徑緊貼全局路徑(全局路徑已避開所有障礙物),因此可以更好的避開障礙物。另外,即使障礙物離機器人很近,或者是突然出現(xiàn)的障礙物,機器人也可以通過自轉(zhuǎn)的方式,調(diào)整到避開障礙物的姿態(tài),從而減少機器人在障礙物前猶豫、卡頓、減速尋找路徑的時間。如圖14中實驗結(jié)果,在sim_period所有的選取值下,算法優(yōu)化后,機器人避障消耗的時間都少于算法優(yōu)化前,并且在實驗過程中,算法優(yōu)化后,機器人避障成功率更高。由此可見,算法優(yōu)化后,機器人具有更好的避障效果。
圖14 機器人避障時間消耗圖
該自動分揀機器人具有自主導航、自動避障以及自動分揀功能。設置好多個目標點,機器人可以依次運動到相應坐標點,自主完成物體的抓取、分揀、放置工作。另外,該機器人自主導航功能是基于ROS實現(xiàn)的,具有很強的可移植性,可以快速移植到各種輪式自主導航底盤,同時,只需根據(jù)工作需求,更換相應的機械臂、抓手,就可以完成應用于不同場景的自動分揀機器人系統(tǒng)設計。該研究還對DWA算法進行了優(yōu)化,提高了機器人的運動效率以及避障效果。后續(xù)將會結(jié)合G2O[10]圖優(yōu)化算法對DWA算法進行優(yōu)化,進一步提高機器人的動態(tài)避障效果。