成鳳敏,張學輝
(唐山學院 智能與信息工程學院,河北 唐山 063000)
一家擁有眾多借閱者的圖書館,每天會有大量的圖書出借和歸還,由于人工難以將歸還的圖書快速歸放原位,使得圖書堆積,無法有效利用,既不利于圖書的整備,也不方便讀者借閱。因此,為實現圖書快速歸位,設計了一種智能多路徑圖書分揀系統來代替人工進行分揀工作,此系統通過圖像掃描進行圖書種類識別,并利用無線傳輸模塊實現上位機與下位機之間的數據交互,借助機械臂快速有序地完成圖書的歸架整理工作。
系統包括以掃描槍為主體的識別部分和以控制單片機為核心的機器人分揀部分,系統中用到兩個單片機,分別為處理分析掃描數據的掃描單片機和控制機械臂動作的控制單片機。系統框架如圖1所示。

圖1 系統框架圖
識別部分包括掃描槍、掃描單片機和無線發送模塊。掃描槍掃描圖書上的6位條形碼獲取圖書信息,通過MAX232進行編譯并傳入掃描單片機,掃描單片機將信息編譯成無線傳輸模塊能夠識別的信號,再通過無線發送模塊轉發至機器人分揀部分,完成識別與分揀兩部分之間的通信。
機器人分揀部分包括電機驅動模塊、超聲波測距模塊、光電傳感器、無線接收模塊、控制單片機和機械臂。無線接收模塊接收識別部分發送來的信號,并傳給控制單片機,之后控制單片機向機械臂發出信號,直接驅動機械臂上的3個舵機,對目標圖書進行抓取。抓取圖書后,控制單片機向電機驅動模塊發出信號,使電機和兩個尋跡模塊啟動。機器人沿規劃軌跡行駛,同時超聲波測距模塊啟動,在前進過程中不斷檢測并及時避障。當尋跡模塊檢測到目標地點的標記物時,機械臂停止前進,并將抓取的圖書放下。
無線傳輸模塊作為系統的通信中樞,可將識別部分與機器人分揀部分進行有效的連接。目前的分揀系統由于受硬件和軟件的諸多限制,在使用上都是一臺上位機單獨控制一個分揀機器人。要實現一臺上位機控制多個機器人完成所有工作和總分配,需要用到無線傳輸模塊。
無線傳輸模塊選用低功耗設計的NRF24L01,工作在發射模式下發射功率為10 dBm時電流消耗為11.3 mA,接收模式下電流消耗為12.3 mA,掉電模式和待機模式下電流消耗更低。
無線傳輸模塊采用串口型,由USB轉TTL模塊轉接到電腦上,通過電腦的串口助手讀取無線傳輸模塊上的信息,這有助于對無線傳輸模塊的信息進行調試。NRF24L01的RXD引腳連接USB轉TTL模塊的2引腳和單片機TxD/P3.1端口,USB轉TTL模塊的3引腳連接單片機RxD/P3.0端口。
在機械臂控制系統中,利用單片機控制機械臂完成抓取圖書的動作。控制機械臂的舵機有3個,編號為1號、2號、3號,在機械臂上由上至下放置,采用并聯方式依次相連,3個舵機之間相互配合,準確地抓取目標圖書,完成抓取收納任務。最上面的1號舵機,控制抓物鉗的張開和收攏;中間的2號舵機,調整抓物鉗的水平位置,便于抓取目標圖書;最下方的3號舵機,調整舵機的水平方向。連接3個舵機的每條控制線都在單片機上有所對應,舵機直接與單片機連接,便于電信號處理。將機械臂控制端口置于單片機的一側整齊排列,有利于接線和電信號的傳輸,且不易和其他電路串聯。3個舵機的電源和地線連接在一起,由單片機的電源統一供電,這樣有利于檢測出在機械臂上所出現的各種問題。
選用L298N作為4個電機的驅動模塊,L298N內部包含4通道邏輯驅動電路,是一種二相和四相電機的專用驅動器,內含雙H橋電機驅動芯片,其中每個H橋可提供2 A的電流,功率部分的供電電壓范圍是2.5~4.8 V,邏輯部分為5 V供電,接受TTL電平[1]。
驅動模塊的4個端口IN1-IN4與單片機的P1.0-P1.3端口一一連接,用來接收單片機上的電信號。為了維持電信號的穩定,提升單片機所輸出的信號電壓,在連線中增加上拉電阻A102J。另外,為了防止電機在運行過程中因電壓問題出現不同步現象,對L298N采取單獨供電。
超聲波測距模塊用于機器人在行進過程中檢測前方是否有障礙物,做到有效避障。通過發送和接收超聲波,利用時間差和聲音傳播速度,計算出模塊到前方障礙物的距離[2]。設超聲波脈沖由傳感器發出到接收所經歷的時間為t,超聲波在空氣中的傳播速度為c,則從傳感器到目標物體的距離D可用D=ct/2求出[3]。

程序設計分模塊進行,主要包括三部分:掃描程序設計、行進程序設計和機械臂抓取程序設計。
單片機接通電源后運行主程序,主程序開啟定時器和定時中斷程序,每10 ms檢測一次所連接的引腳獲取的信號,在收到信號后單片機對MAX232的信號進行讀取,并在檢測完信號后將連接的引腳信號進行復位,防止二次檢測,也防止后面的信號無法傳輸。信號復位后單片機將信號進行編譯,首先單片機發送啟動信號給NRF24L01,當NRF24L01接收到啟動信號后才從單片機中接收信號,然后單片機會不斷地將信號發送給NRF24L01,同時NRF24L01將接收到的信號以無線信號直接傳送出去。
電機之間性能不同,導致電機在相同的電壓、電流參數下轉動速度不同,如果一個電機比另一個電機轉動速度快,機器人不會走直線而是轉圈,因此需要對電機性能進行測試,即調整驅動程序。為了讓4個電機轉動的速度為同一個數值,將電機在同電壓下進行兩兩測試,經過3次比較之后找到最快轉速的電機,將其所供給的電壓設為一個定值20,其后所有電機的所供電壓在此基礎上進行相應的增加,然后依次和最快轉速的電機進行兩兩測試,當機器人能進行直線行駛時記錄此電機的電壓,最后得出其余3個電機的供電數值。
完成4個電機的程序設計后,再對尋跡模塊進行設計。尋跡模塊在檢測到地點標記物黑線時會變為低電平輸出。單片機內啟用定時器對各引腳電信號進行檢測,當檢測到對應引腳達到低電平時,說明機器人前端的一側檢測到黑線,此時如果加快反向側的電機轉速,可使機器人快速脫離黑線。但是當機器人運行速度過快,很容易在檢測時來不及反應而直接沖出軌道,同樣在轉彎的時候也容易在持續的加速中沖出軌道,找不到繼續行進的路線,因此在程序設計時沒有加快反向側的電機轉速,而是減慢了所有電機的轉速,并且將檢測到黑線那一側電機的轉速再次減慢,形成更大的速度差來達到相同的效果,這樣保證了機器人在偏離軌道或者轉彎時能夠平穩行進,提高了容錯率。機器人行進程序流程如圖2所示。

圖2 機器人行進程序流程圖
機械臂抓取動作需要驅動機械臂上的3個舵機進行轉動,因此需要單片機的3個引腳對其進行控制。單片機對舵機持續發送電信號,使舵機不停地轉動,當信號中斷時,舵機停止轉動,使機械臂固定在某位置。
3個舵機的轉動角度和轉速是固定的,在設計時將機械臂的轉動時間調到極限,將機械臂先轉動到一個極限位置進行復位,然后再進行轉動,轉動一定角度時停止,這樣就很容易達到指定位置。
當3個舵機調整角度的程序完成后,在運行程序時將3個舵機的運行順序分開,依次運行。先運行3號舵機程序完成機械臂水平轉動角度,然后運行2號舵機程序調整機械臂上下距離,最后運行1號舵機程序使鉗子張開或收縮進行抓取,然后2號舵機再抬高抓頭,完成收納動作。機械臂抓取程序流程如圖3所示。

圖3 機械臂抓取程序流程圖
智能分揀機器人采用靜態卸載,只要圖書電子標簽的信息正確,即可實現分揀零差錯率。與人工分揀相比,智能分揀機器人不僅省時省力,而且還具有分揀差錯小、可靠性高和拓展性強等優點,同時系統電路結構簡單,成本低。因此,具有廣泛的應用前景。