施敏虎,栗云鵬,莊曙東,符正帆,王齊鑫
(河海大學 機電工程學院,江蘇 常州213000)
隨著技術的進步,科學的不斷發展,“智能”二字正逐漸為傳統的事物冠名,智能車、智能制造、智能家電等。應用在物流搬運[1]的AGV(自動引導運輸車)在自動化物流系統中充分地體現其自動性,可實現經濟高效的無人化生產;應用在汽車行業的電動汽車智能組裝生產線,機械化的勞動被可靠的器械所取代,提高了生產效率;智能汽車[2]無人駕駛技術也正在飛速發展。通過智能技術,減輕了人的勞動力付出、提高了企業的生產效率、降低了企業的生產成本。國內關于智能賽車的實踐項目也層出不窮,提供越來越多的機會來應用和創新此類技術。智能搬運作為一個實踐項目,缺少一定的實踐基礎。
本文提供了關于智能搬運循跡車型機器人的可實踐的合理化設計方案,通過OpenMV機器視覺模塊作為方便的圖像處理裝置,以Arduino控制智能小車實現循跡行駛,二者協同完成二維碼識別、顏色形狀識別、智能搬運功能,通過全向輪的布置,完成小車的全向移動。能夠滿足在復雜路線中需搬取和卸載的搬運任務要求。
OpenMV是一款小巧、低功耗、低成本的電路板,通過OpenMV IDE可以輕松地完成機器視覺使用,給研究者們的使用提供了方便。它通過高級語言Python 腳本(MicroPython)為機器視覺復雜的算法提供了容易處理的輸出方式。
OpenMV采用了STM32F765VI ARM Cortex M7 處理器,OV7725作為感光原件,可在80FPS下處理640×480 8-bit 灰度圖或者320×240 16-bit RGB565 彩色圖像。
Arduino Uno開發板,是一款方便上手的開放源代碼的單芯片微控制器,建構于易于輸出輸入的界面板,并且具有使用類似Java、C語言的開發環境。
它以ATmega328 MCU控制器為基礎提供了便捷的控制平臺。
各個硬件連接情況部分如圖1所示,車身結構、驅動及控制關系等介紹如下。

圖1 結構圖
車體由底盤、車架、電動機、車輪等所組成,是智能循跡小車的基礎部分。圖中為兩組設計方案,板上安置機械臂、主控器、傳感器、攝像頭等來實現小車智能搬運循跡的特殊要求。
車輪采用圓形布置全向輪三輪結構(如圖2)或矩形布置麥克納姆輪四輪結構(如圖3)。

圖2 三輪結構

圖3 四輪結構
全向輪是海丹等[3-4]的一款專利產品,包括輪轂和從動輪,該輪轂的外圓周處均勻開設有3個或3個以上的輪轂齒,每兩個輪轂齒之間裝設有一從動輪,該從動輪的徑向與輪轂外圓周的切向垂直。全向輪結構簡單,適用范圍廣,可以在較差的路況上運動。麥克納姆輪的設計方法,開始為瑞典公司的專利,后來被應用到工程實際中,是目前應用廣泛、技術十分成熟的輪結構。兩種輪結構均可通過多個舵機同步驅動、精確調速來實現車體的全向運動,如圖4 所示。
機器人四麥克納姆輪[5]結構方案的分析簡圖如圖5所示,機器人的4個電動機通過不同的轉速組合后可以實現以下幾種情況:前進,左進,45°斜進,原地旋轉。四輪速度方向、大小一致時,則實現機器人的前進;四輪方向成組一致時(1.3)(2.4)(順時針1.2.3.4)而不同組相反,可實現左進;(1.3)或(2.4)的速度一組存在而另一組為零時,可實現斜進;(1.2)(3.4)的速度大小一致而方向相反時可實現原地旋轉。

圖4 全向輪

圖5 麥克納姆輪結構方案分析簡圖
全向輪三輪節省空間,減少了原材料成本,有較高的輸出功率。但在速度矢量合成方面,受各種影響不易合成給定的速度方向,需要較長的時間調試,也缺少相關的使用經驗。由機器人運動學原理,圖中三輪排布的方式,滿足全方位運動的條件。
麥克納姆輪四輪結構,比三輪結構增加一個車輪的阻力,運轉輸出功率數低,運轉靈活度低于三輪結構,造價更高一些。但其更加穩定,且易于轉向。由機器人運動學原理,圖中四輪排布的方式滿足全方位運動的條件。
物料抓取裝置采用多關節型機械手,用4個舵機驅動,一個控制在水平面內旋轉,一個控制在豎直方向的旋轉擺動,一個控制手爪的抓取,有3個自由度,足夠完成對應任務。

圖6 麥克納姆輪結構對比圖
電源采用18650 12 V 鋰電池,DC/DC降壓模塊,電池盒3.7 V或者5 V直流電源。
OpenMV工作電壓為3.7~5.0 V,電池盒為OpenMV供電提供3.7 V工作電壓,或者通過Arduino提供5 V電源。
Arduino的工作電壓為7~12 V ,通過18650電池供電。舵機驅動電壓為8.4 V、6 V兩種,18650 12 V鋰電池通過DC/DC降壓模塊提供8.4 V和6 V電壓,給驅動模塊供電。
兩塊核心開發板,OpenMV、Arduino進行串口通信,并分別與兩塊Pca9685 舵機驅動開發板相連接。其中:與OpenMV相連的驅動開發板連接控制機械臂的4個舵機;與Arduino相連的驅動開發板連接控制移動的3個或者4個舵機。Arduino和3個紅外反射傳感器如TCRT5000,分別連接。
機械臂部分的舵機采用4個8.4 V大轉矩舵機,完成一系列的搬運動作;車底部舵機采用6 V舵機,減輕供電與驅動壓力;驅動模塊采用2塊Pca9685舵機驅動開發板,來控制各路舵機的運動。DC/DC降壓模塊,將電壓降為工作電壓;3個循跡模塊TCRT5000紅外反射傳感器,保證路線特征的檢測,傳輸輸入控制信號。
以OpenMV為機械臂控制器,Arduino作為循跡部分的控制器。物料搬運流程如圖7所示。

圖7 物料搬運流程圖
首先進行感光原件的初始化Sensor.reset();設置相機模塊的像素模式,可選的圖像處理的像素模式有兩種:一種是灰度模式sensor.GRAYSCALE;一種是色彩模式sensor.RGB565。灰度模式的算法比色彩模式運行得更快,但卻無法進行所需的顏色識別,這里選用色彩模式方便后續的顏色識別。設置相機模塊的分辨率大小sensor.set_framesize (framesize),可選的種類非常多,選擇320*240的QVGA模式;設計相機的穩定模式,sensor.skip_frames([n, time]),可以跳過相機設置時不穩定圖像的畫面;關閉自動白平衡,防止圖像不穩定,sensor.set_auto_gain、sensor.set_auto_whitebal設置為關閉。
識別二維碼獲取任務信息,采用QRCode類,進行二維碼對象的掃描。使用sensor.snapshot()函數對所處二維碼位置拍照掃描。對相機進行鏡頭畸變矯正,除去鏡頭造成的魚眼效果,提高攝像頭識別的速率,減輕變形,對應的函數為image.lens_corr()。
通過img.find_qrcodes() 找到圖像中的二維碼,并讀取數據,可返回二維碼的坐標、邊框坐標、返回二維碼信息中的有效字符串。然后對字符串進行處理,根據要求字符串為3位數字,將其進行個、十、百等3位分割,對應3種不同的顏色任務。
串口發送,通過Arduino與OpenMV的TX,RX 連接設置波特率完成串口通信。其中Arduino提供了軟件模擬串口通信,而硬串口又比較少,故可用作調試使用。 對于簡單的字符串直接發送即可,對于復雜的字符串可使用json格式傳輸再進行解析,不過處理的信息十分簡單,采用直接輸出字符串的方式即可。
循跡移動,通過3個循跡模塊TCRT5000紅外反射傳感器,檢測地面規劃的路徑,這里將地面定義為平整地面,不存在特殊障礙如窄路、坡路,循跡邏輯如表1所示。光標采用等邊三角形排列,可以在車體整體轉動時仍保持固定組合形態。只需改變循跡邏輯即可實現循跡得穩定進行。 或采用直線形排列,需在移動任務中控制車身轉動,以保證循跡的正常運行。
物體搬運,攜帶視覺模塊的機械臂初始狀態朝向待捕捉物體,通過顏色識別函數尋找色塊find_blobs()得返回值,通過比較得出最大的色塊作為目標任務色塊,根據blob.x() 的坐標來判定機械手臂相對于物料的位置,當物體處于視覺中心時,發送串口數據控制小車循跡靠近、抓取。抓取動作完成后,調整傳感器控制邏輯,控制小車反向,向物料存放區域移動,調整攝像頭位置對準地面,掃描對應顏色。待移動完畢后執行物料放置任務,最后手臂復原讀取下一次的搬運任務。
針對控制的超調情況,采用pid調節[7],軟件調整等方法,需不斷調整修正PID參數,由于舵機轉矩過大、動作速度快,不可直接由一種極端參數直接變換,需設計delay()函數進行延時緩沖,進行變化時,應使用參數遞增的方式讓舵機穩定工作。機器人手臂抓取實驗得出的控制其工作的模擬數據,記錄于表2中。

表1 循跡邏輯表

表2 機械臂參數表
OpenMV對機械臂控制的部分程序如下:


根據智能搬運車型機器人的實驗中,通過OpenMV的識別與控制、Arduino的驅動控制,對于小車靈活、精準、智能化的要求、機器視覺算法的實踐,提供了一種可行的方案,方便對機器視覺進行體驗式的學習;車體車型也為搬運機器人提供了一個可拓展可實踐的結構設計方案;對于車輪結構方案的論證,提供了控制麥克納姆輪或全向輪進行全向移動的機器人移動方案。小車在完成任務的前提下仍有很多的設計與拓展的空間,如車身的材料、車身的外觀、成本方面仍有待改進,以便于實際應用。例如增加信息反饋的液晶屏幕、小燈等,將循跡改為電磁或者光學引導移動,減少現場劃線的限制。還可改用成本更為低廉的核心控制器,低成本的步進電動機等進行再設計。智能搬運循跡小車的性能及實用性將得到大幅提升。