摘 要:本文介紹了一種目標識別雙足機器人,能通過攝像頭追蹤并接近設(shè)定顏色的物體。本系統(tǒng)以安卓系統(tǒng)和Arduino微控制器系統(tǒng)為基礎(chǔ),運用安卓系統(tǒng)上的視覺庫OpenCV4Android對采集到的圖像進行視覺分析,再對設(shè)定顏色物體進行立體定位,然后通過藍牙芯片向Arduino控制器發(fā)送指令,控制舵機驅(qū)動機器人向目標接近。
關(guān)鍵詞:Arduino;安卓;OpenCV;機器人
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1003-5168(2018)10-0017-02
Design and Implementation of Visual Target Tracking Biped Robot
Based on ARDUINO Controller and OpenCV on Android Platform
CEN Yi
(Department of Electro-mechanics, Guangdong Industry Polytechnic,Guangzhou Guangdong 510300)
Abstract: This paper introduced a target-recognition robot leg system, which was able to track and approach objects with specific color. This system was based on Android system and Arduino micro-controller. It used a computer vision library on Android, which was called OpenCV4Android to analyze the captured image, and then positioned the target object, and then sent instructions to the Arduino controller through a Bluetooth chip to control the rudder driven robot to approach the target.
Keyword: Arduino;Android;OpenCV;robot
1 設(shè)計任務(wù)和要求
本系統(tǒng)的設(shè)計目標使用安卓系統(tǒng)結(jié)合Arduino控制器制作一個雙足目標定位機器人。此機器人能使用OpenCV4Android視覺庫在行進過程中尋找具有一定顏色(HSV格式)的物體,能在實驗過程中追蹤特定形狀和顏色的物體,并始終面向它行進。機器人組件采用3D打印的方法制造而成,并用Arduino微控制器控制舵機驅(qū)動機器人移動和轉(zhuǎn)向。
2 系統(tǒng)原理和組成
本雙足機器人系統(tǒng)由安卓上位機設(shè)備及軟件、Arduino單片機系統(tǒng)、超聲波測距模塊和雙足機器人腿部機構(gòu)組成。系統(tǒng)首先利用安裝在安卓上位機的視覺追蹤軟件通過設(shè)備上的攝像頭檢測出具有特定顏色范圍的物體,獲得物體的形狀和輪廓,然后據(jù)此判別該物體表面中點在攝像機坐標系中的坐標,即(x,y)。當(dāng)物體坐標不在攝像機坐標系的中軸線時,機器人自動轉(zhuǎn)向,直到中軸線正對物體坐標時,機器人停止轉(zhuǎn)向。
2.1 安卓設(shè)備及軟件
本文采用安卓設(shè)備作為機器人上位機(本文中使用的是搭載安卓系統(tǒng)的智能手機),通過安卓開發(fā)環(huán)境ADT基于安卓視覺庫OpenCV4Android編寫物體辨別程序,并通過手機上的藍牙控制器控制機器人雙足上的舵機驅(qū)動機器人前進或轉(zhuǎn)彎。
2.2 物體顏色辨別定位程序
安裝在安卓設(shè)備上的物體顏色辨別定位程序通過安卓開發(fā)環(huán)境ADT結(jié)合OpenCV視覺庫編寫。OpenCV視覺庫是Intel公司開發(fā)的一個開源的跨平臺視覺庫[1]。首先在ADT中加載安卓平臺版本的OpenCV視覺庫,然后在程序文件夾SRC中的主程序文件MainActivity.java中新建一個用于操作照相機的基本類CameraBridgeViewBase,用以打開攝像頭。然后在onCameraFrame中,把攝像頭捕捉到的瞬時影像以RGB格式存儲到名為MRgba的矩陣變量里,通過OpenCV矩陣操作函數(shù)Inrange設(shè)定檢測顏色閥值,接著通過OpenCV庫的findContours函數(shù)找到物體形狀輪廓集contours矩陣。最后,通過迭代語句把contours矩陣轉(zhuǎn)化成輪廓點矩陣,程序得到輪廓中點坐標。經(jīng)過測試,定位效果良好。圖1顯示了本程序能檢測圖像中指定顏色物體的輪廓(本例中檢測的是綠色物體的輪廓),用曲線畫出該輪廓,并用直線畫出該輪廓的外接四邊形。最后程序計算出此輪廓的左上和右下的兩個端點,并根據(jù)這兩個端點得到該輪廓中心點的坐標。
2.3 藍牙設(shè)備控制
作為上位機的安卓設(shè)備使用安卓庫的BluetoothAdapter類來與單片機上的藍牙模塊通信,當(dāng)安卓上位機通過藍牙與單片機上的藍牙模塊連接后(通過輸入密碼,藍牙設(shè)備默認密碼是0000或1234),上位機上的APP創(chuàng)建一個Bluetooth Socket,用于和Arduino控制器上的藍牙模塊通信。
本系統(tǒng)采用藍牙芯片通過串行口連接Arduino控制器和安卓設(shè)備,藍牙芯片的型號為HC06。此芯片上具有TXD、RXD兩個接口,分別通過杜邦線與8051單片機的RXD(P3.0)、TXD(P3.1)接口連接。
2.4 Arduino單片機系統(tǒng)
Arduino是一套方便靈活,功能強大的基于AVR單片機開發(fā)的開源微控制器平臺。本文采用的是Arduino的型號是Arduino MEGA2560。Arduino MEGA2560處理器的核心是ATmega2560,采用USB接口,具有54路數(shù)字輸入輸出,其中有16路可作為PWM輸出,功能強大,適用于控制雙足機器人關(guān)節(jié)的舵機。
圖2是舵機接線圖,機器人腿部結(jié)構(gòu)一共用5個舵機行走。當(dāng)舵機數(shù)目較多時,若只用Arduino的板載電源為舵機供電,會出現(xiàn)舵機驅(qū)動電流不足的情況,導(dǎo)致舵機轉(zhuǎn)動時出現(xiàn)抖動的情況。本系統(tǒng)采用6V12AH的蓄電池為舵機供電能有效解決舵機轉(zhuǎn)動時抖動的情況。蓄電池正負極通過杜邦線及面包板與舵機電源極和地極相連,為舵機供電。舵機信號線與Arduino的PWM發(fā)生端口相連,接收來自Arduino的控制信號。Arduino控制器與舵機接線圖見圖2。
2.5 機器人結(jié)構(gòu)與運動控制設(shè)計
本設(shè)計中的機器人采用3D打印機器人的骨架。3D打印機打印方便快捷,簡單易用。打印成品具有重量輕、強度高的優(yōu)點。首先用SolidWorks軟件創(chuàng)建機器人腿部機構(gòu)模型,再通過SolidWorks軟件集成的SolidWorks Motion插件對腿部機構(gòu)模型進行仿真,若仿真結(jié)果符合技術(shù)要求,則通過計算機串口輸出到3D打印機完成打印。最后采用塑料螺紋連接件將各個骨架組件連接到一起。
考慮到機器人的骨架較輕,采用輝盛MG995舵機驅(qū)動機器人腿部關(guān)節(jié)。此款舵機具有成本低、反應(yīng)靈敏和扭矩較大等優(yōu)點,足以驅(qū)動雙足機器人前進和轉(zhuǎn)向。腿部結(jié)構(gòu)圖及SolidWorks運動仿真結(jié)果見圖3和圖4。
從仿真結(jié)果可知,當(dāng)機器人骨架重量約為0.5kg時,采用蓄電池作為電源,MG995舵機的最大輸出扭矩為13kg·cm。而在仿真運行過程中,驅(qū)動機器人關(guān)節(jié)最大承受負載只有2.19kg·cm,所以MG995舵機具有足夠動力驅(qū)動此機器人。
3 結(jié)語
本文提出了一種視覺機器人的設(shè)計思路。本設(shè)計的重點在于運用安卓OpenCV庫,在安卓Eclipse環(huán)境下編寫出具有較高進度和穩(wěn)定性的對指定目標物體進行定位的程序。
參考文獻:
[1]Reto Meier. Professional Android 4 Application Development[M].New York:Wiley Publishing Inc, 2012.