賴梓昌,楊斌
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都610031)
隨著社會生產(chǎn)技術(shù)的飛速發(fā)展,移動機(jī)械手的應(yīng)用領(lǐng)域不斷擴(kuò)展,從自動化生產(chǎn)線到海洋資源的探索,乃至太空作業(yè)等領(lǐng)域,機(jī)械手已成為高科技領(lǐng)域內(nèi)具有代表性的戰(zhàn)略產(chǎn)品。然而,就目前的機(jī)械手技術(shù)水平而言,機(jī)械手在信息的獲取、處理及控制能力等方面都是有限的,對于復(fù)雜的工作任務(wù)及多變的工作環(huán)境,機(jī)械手的能力更顯不足[1]。隨著移動互聯(lián)網(wǎng)時(shí)代的到來、嵌入式技術(shù)及軟件技術(shù)的快速發(fā)展,越來越多的高性能嵌入式芯片的出現(xiàn),促進(jìn)了移動機(jī)械手向更加智能化方向發(fā)展。本文以TI公司的OMAP4430異構(gòu)多核處理器[2]為核心,Android手機(jī)為控制終端,實(shí)現(xiàn)了一款基于搖桿手柄操作的可視化移動機(jī)械手。
本次設(shè)計(jì)的可視化遠(yuǎn)程遙控移動機(jī)械手硬件部分主要分為OMAP4430開發(fā)板、Android手機(jī)、車體及機(jī)械手馬達(dá)3部分。
OMAP4430是TI公司的異構(gòu)多核處理器,其內(nèi)部主要包括4個處理引擎:基于ARMv7l指令集的SMP Cortex-A9 1 GHz雙核處理器,可編程多媒體硬件加速引擎IVA-HD及協(xié)處理器核Cortex-M3,高性能的圖像顯卡Power SGX540及提供圖像視頻并行計(jì)算的ISP。其中IVA-HD多媒體加速引擎[3]內(nèi)部有7個針對各種視頻編解碼而設(shè)計(jì)的加速引擎,能夠?qū)崿F(xiàn)對720P視頻的實(shí)時(shí)編解碼。其內(nèi)部示意圖如圖1所示。
Android是一個以Linux為基礎(chǔ)的開放源代碼移動設(shè)備操作系統(tǒng),主要用于移動設(shè)備,由Google成立的Open Handset Alliance持續(xù)領(lǐng)導(dǎo)與開發(fā)中。Android具有開源性和良好的可移植性,成為目前全球第一大智能手機(jī)操作系統(tǒng)。本設(shè)計(jì)中的Android手機(jī)采用聯(lián)發(fā)科Cortex-A7處理器,支持無線網(wǎng)卡AP熱點(diǎn),支持H264硬解碼。
圖1 OMAP4430內(nèi)部引擎示意圖
移動機(jī)械手由運(yùn)動小車和機(jī)械手組成,運(yùn)動小車負(fù)責(zé)地面移動,機(jī)械手通過旋轉(zhuǎn)6個馬達(dá)關(guān)節(jié)來完成捉取地面目標(biāo)任務(wù)。
1.3.1 移動小車
小車?yán)酶咝阅蹵Tmega128L芯片[4],通過傳感器采集當(dāng)前的狀態(tài)及驅(qū)動DC馬達(dá)進(jìn)行移動。ATmega128L單片機(jī)為基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微處理器。由于其先進(jìn)的指令集以及單周期指令執(zhí)行時(shí)間,ATmega128L單片機(jī)的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,小車采用4輪驅(qū)動車輪形成移動機(jī)器人,配有4個DC直流馬達(dá)及多種傳感器,具有卓越的旋轉(zhuǎn)能力和可靠的穩(wěn)定性。小車運(yùn)動控制框架如圖2所示。
圖2 小車運(yùn)動控制框架圖
1.3.2 機(jī)械手
機(jī)械手由6個AX-12馬達(dá)組成,AX-12馬達(dá)具有180級別位置和速度控制、位置角度和速度的實(shí)時(shí)反饋、內(nèi)部溫度或力矩超出范圍時(shí)給予警告提示等優(yōu)點(diǎn)。第一個馬達(dá)的關(guān)節(jié)負(fù)責(zé)機(jī)械手360°旋轉(zhuǎn),第二個關(guān)節(jié)同時(shí)控制兩個馬達(dá),這個關(guān)節(jié)在提起和放下物體時(shí)提供了所需的扭矩,因此通過控制這兩個馬達(dá)補(bǔ)充扭矩大小的不足,而第3和第4個馬達(dá)提供了機(jī)械手捉取目標(biāo)時(shí)前伸和后縮所需的力矩,第5個馬達(dá)則是手腕旋轉(zhuǎn)馬達(dá),用于旋轉(zhuǎn)最后一個馬達(dá)的空中角度,最后一個馬達(dá)的旋轉(zhuǎn)將推動夾子張開和閉合來捉取地表目標(biāo)。通過這6個馬達(dá)的機(jī)械臂,可完成向所有方向移動并進(jìn)行多樣化的動作。
系統(tǒng)硬件框架如圖3所示。
圖3 系統(tǒng)硬件框架圖
系統(tǒng)軟件設(shè)計(jì)包括Android手機(jī)應(yīng)用、OMAP4430開發(fā)板Linux控制服務(wù)端和無線視頻服務(wù)軟件設(shè)計(jì)、AVR單片機(jī)程序設(shè)計(jì),系統(tǒng)軟件框架如圖4所示。
Android應(yīng)用主要負(fù)責(zé)接收手柄水平、豎直方向的搖桿時(shí)間和手柄按鍵事件、實(shí)時(shí)分析處理事件、將結(jié)果通過Socket發(fā)送給OMAP4430開發(fā)板。同時(shí)Android將實(shí)時(shí)接收OMAP4430開發(fā)板通過H264算法壓縮的720P視頻流,通過硬解碼技術(shù)將解碼緩存繪制到控制界面上。
圖4 系統(tǒng)軟件框架圖
OMAP4430開發(fā)板搭載Linux3.9.11操作系統(tǒng),通過無線網(wǎng)卡Socket編程與Android手機(jī)建立通信,它主要負(fù)責(zé)接收Android平臺發(fā)過來的控制命令,進(jìn)行處理后將數(shù)據(jù)通過無線藍(lán)牙串口發(fā)送給AVR單片機(jī),控制移動機(jī)械手的運(yùn)動和馬達(dá)操作。利用OMAP4430在視頻編解碼上的強(qiáng)大優(yōu)勢,USB攝像頭采集720P分辨率的視頻幀,通過libdce庫利用內(nèi)部的IVA-HD多媒體硬件加速引擎進(jìn)行H264編碼,并將編碼視頻緩存流通過無線網(wǎng)卡Socket通信發(fā)送到Android手機(jī)進(jìn)行顯示。而底端AVR單片機(jī)則負(fù)責(zé)接收OMAP4430發(fā)過來的控制命令來操作4個直流電機(jī)進(jìn)行運(yùn)動,同時(shí)將通信數(shù)據(jù)解析為機(jī)械馬達(dá)旋轉(zhuǎn)速度及角度。
移動機(jī)械手的控制核心為ATmega128L單片機(jī),其內(nèi)部通過時(shí)鐘產(chǎn)生變換PWM來控制4個DC電機(jī)旋轉(zhuǎn)從而實(shí)現(xiàn)機(jī)械手的移動。內(nèi)部有兩個UART串口,分別連接OMAP4430通信的藍(lán)牙串口和控制AX-12馬達(dá)旋轉(zhuǎn)的串口。其軟件流程如下:
①寄存器初始化,包括初始化時(shí)鐘定時(shí)器、端口輸入輸出初始化、設(shè)置LED控制寄存器等。
②打開藍(lán)牙串口與AX-12通信串口,設(shè)置串口的波特率、奇偶校驗(yàn)、停止位等屬性。
③藍(lán)牙串口接收OMAP4430發(fā)過來的控制參數(shù),并進(jìn)行參數(shù)解析處理。如果為運(yùn)動控制參數(shù),通過PWM_change()修改PWM來控制機(jī)械手運(yùn)動方向,如果為機(jī)械手設(shè)置參數(shù),通過Ctrl_Array_M(jìn)T()設(shè)置每個AX-12馬達(dá)的旋轉(zhuǎn)角度和旋轉(zhuǎn)速度來完成捉取目標(biāo)任務(wù)。
④讀取AX-12馬達(dá)的溫度及力矩,如果超出預(yù)定范圍,則調(diào)整馬達(dá)速度和力矩,并向OMAP4430開發(fā)板發(fā)出提示信息。機(jī)械手動作控制命令如表1所列。
表1 移動機(jī)械手操作命令
2.2.1 搖桿手柄事件處理
搖桿手柄采用USB OTG方式連接到Android手機(jī),Linux內(nèi)核已經(jīng)包括其驅(qū)動程序。手柄的水平豎直搖桿事件和按鍵事件都將觸發(fā)Main Activity的on KeyDown()函數(shù)和onGeneric MotionEvent()函數(shù)的調(diào)用,在函數(shù)中分析事件對象的屬性(觸發(fā)按鍵ID、事件類型)進(jìn)而向OMAP4430發(fā)出不同控制命令。其參考代碼略——編者注。
2.2.2 Android H264解碼
Android在4.1版本加入了H264視頻硬解碼API,其MediaCodec內(nèi)部封裝了open Max庫進(jìn)行多媒體硬解碼加速。open Max是一個開源、跨平臺的多媒體編解碼加速 API[5],包括 open Max應(yīng)用層、open Max集成層、open-Max開發(fā)層。其解碼H264的步驟略——編者注。
OMAP4430開發(fā)板運(yùn)行Linux3.9.11操作系統(tǒng),具有實(shí)時(shí)性強(qiáng)、移植性好等優(yōu)點(diǎn)。利用Andriod手機(jī)無線網(wǎng)卡創(chuàng)建一個AP熱點(diǎn),OMAP4430開發(fā)板的無線網(wǎng)卡將連接到AP上,二者通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信。
控制進(jìn)程將創(chuàng)建一個TCP Socket服務(wù)端,等待Android應(yīng)用連接,同時(shí)打開無線藍(lán)牙串口設(shè)備/dev/tty-USB0,設(shè)置串口屬性(115 200波特率、8位數(shù)據(jù)、無校驗(yàn)等)。在連接建立之后,循環(huán)接收Andriod發(fā)過來的控制命令并進(jìn)行命令解析處理,處理結(jié)果將通過藍(lán)牙串口發(fā)送給AVR單片機(jī)來控制移動機(jī)械手。
無線視頻傳輸進(jìn)程將通過V4L2編程接口調(diào)用USB攝像頭采集1 280×720視頻幀(采集速度為30 fps)。利用OMAP4430在多媒體視頻編解碼強(qiáng)大運(yùn)算能力,通過libdce庫的engine_open()、engine_create()、viddce_control()、viddec_procees()函數(shù)創(chuàng)建 H264編碼實(shí)例并通過RPMSG消息總線[6]遠(yuǎn)程調(diào)用協(xié)處理器核的IVA-HD的加速引擎來提高視頻編碼效率。為了減小網(wǎng)絡(luò)帶寬需求、提高無線傳輸效率,本次采用Baseline、Level3.2編碼級別[7]。最后將H264編碼緩存通過無線網(wǎng)卡Socket服務(wù)端發(fā)送到Android客戶端進(jìn)行解碼顯示[8]??刂七M(jìn)程和無線視頻傳輸進(jìn)程的流程如圖5、圖6所示。
圖5 控制進(jìn)程流程
圖6 無線視頻服務(wù)流程圖
由圖7、圖8可知移動機(jī)械手可以完成捉取地面目標(biāo)的任務(wù),且Android控制界面可以實(shí)時(shí)顯示機(jī)械手操作畫面。由于借助OMAP4430內(nèi)部的協(xié)處理器核Cortex-M3和IVA-HD多媒體硬件引擎來實(shí)現(xiàn)H264編碼加速,因此本次720P無線視頻傳輸實(shí)時(shí)性較高,達(dá)到了28 fps。實(shí)驗(yàn)測試數(shù)據(jù)如表2所列。
圖7 機(jī)械手操作示意圖
圖8 Android控制界面
表2 無線視頻傳輸實(shí)時(shí)性測試
針對移動機(jī)械手控制方式復(fù)雜、環(huán)境周圍信息獲取能力不足的缺點(diǎn),采用Android手機(jī)為控制中心,搖桿手柄為輸入設(shè)備實(shí)現(xiàn)了移動機(jī)械手的可視化實(shí)時(shí)操作。同時(shí)利用OMAP4430異構(gòu)多核處理器內(nèi)部協(xié)處理器核Cortex-M3、IVA-HD多媒體引擎加快720P H264視頻編碼效率,提高了無線視頻服務(wù)的實(shí)時(shí)性。實(shí)踐證明,系統(tǒng)具有人機(jī)交互方式友好、控制簡單、多核間負(fù)債平衡、無線視頻服務(wù)實(shí)時(shí)性強(qiáng)等優(yōu)點(diǎn)。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]劉宇紅,張明路,孟憲春,等.移動機(jī)械手的穩(wěn)定性及補(bǔ)償方法現(xiàn)狀與發(fā)展趨勢[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2008(2):5-7.
[2]Texas Instruments.OMAP4430 Multimedia Device Silicon Revision 2.0 [EB/OL].[2014-07].http://focus.ti.com/pdfs/wtbu/OMAP4430_ES2.0_Public_TRM_vJ.pdf.
[3]Texas Instruments.Ducati For Dummies[EB/OL].[2014-07].http://omappedia.org/wiki/Ducati_For_Dummies.
[4]李玉娟,王琪.基于ATmega128L的智能探測車的設(shè)計(jì)與實(shí)現(xiàn)[J].自動化技術(shù)與應(yīng)用,2007(3):42-44.
[5]沈永增,李曉鳳,吳冬林.Android下Open Max IL框架的研究和應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2012(8):265-268.
[6]Texas Instruments.Design Overview-RPMsg[EB/OL].[2014-07].http://www.omappedia.org/wiki/Design_Overview_-_RPMsg.
[7]朱坤旺,傅文淵,凌朝東.低功耗 H.264 Baseline解碼IP核設(shè)計(jì)[J].華僑大學(xué)學(xué)報(bào):自然科學(xué)版,2011(3):280-283.
[8]李洪輝,劉志勤.GPU在Android顯示系統(tǒng)中的應(yīng)用與研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013(12).