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