《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Zedboard的視覺(jué)導(dǎo)航除草機(jī)器人控制系統(tǒng)設(shè)計(jì)
基于Zedboard的視覺(jué)導(dǎo)航除草機(jī)器人控制系統(tǒng)設(shè)計(jì)
2014年電子技術(shù)應(yīng)用第6期
肖志遠(yuǎn),杜啟亮,田聯(lián)房,秦傳波,張 勤
華南理工大學(xué) 自動(dòng)化科學(xué)與工程學(xué)院,廣東 廣州510640
摘要: 現(xiàn)階段水田除草大部分采用農(nóng)藥噴灑方式,這樣會(huì)對(duì)環(huán)境造成污染。詳細(xì)討論了水田除草機(jī)器人控制系統(tǒng)的分析設(shè)計(jì)及實(shí)現(xiàn)過(guò)程,該系統(tǒng)采用Zedboard為控制核心,上位機(jī)通過(guò)ZigBee向機(jī)器人發(fā)送指令,驅(qū)動(dòng)電機(jī)完成指定動(dòng)作。重點(diǎn)研究設(shè)計(jì)了人機(jī)交互界面及視頻遠(yuǎn)程監(jiān)控。實(shí)驗(yàn)效果表明,該控制系統(tǒng)具有良好的動(dòng)態(tài)響應(yīng)特性,穩(wěn)定性強(qiáng)。
中圖分類號(hào): TP271.4
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)06-0027-03
The design of visual navigation of weeding robot control system based on Zedboard
Xiao Zhiyuan,Du Qiliang,Tian Lianfang,Qin Chuanbo,Zhang Qin
School of Automation Science and Engineering,South China University of Technology,Guangzhou 510641,China
Abstract: Paddy field weeding methods at this stage were most of the use of pesticides spraying.This method will cause pollution to the environment. The paper discussed the analysis,design and implementation process of the robot control system.The system uses Zedboard as the control core. PC sends instructions to the robots through ZigBee,and drives motor to complete the specified action. This paper focuses on the designs of human-computer interaction interface and remote video monitoring. Experimental results show that the control system has good dynamic response and strong stability.
Key words : paddy field weeding robot;Zedboard;motor drive;remote monitoring;control system

       水田除草機(jī)器人是指具備人工智能識(shí)別功能、能夠通過(guò)圖像或者其他傳感器對(duì)雜草的具體情況進(jìn)行識(shí)別并能夠通過(guò)推理判斷以產(chǎn)生具體的指令來(lái)指示機(jī)械除草機(jī)構(gòu)進(jìn)行除草的一種智能裝置[1]。

        隨著工業(yè)機(jī)器人的發(fā)展,一些發(fā)達(dá)國(guó)家(如日本、美國(guó)等)紛紛展開(kāi)農(nóng)業(yè)機(jī)器人的研究和開(kāi)發(fā)并已經(jīng)取得了一些階段性成果。但由于一些經(jīng)濟(jì)特殊性的問(wèn)題,還沒(méi)有達(dá)到實(shí)用化的程度。日本發(fā)明了一種小型水田除草機(jī)器人,它體積很小,由電池供電,完成一次除草作業(yè)后,可通過(guò)轉(zhuǎn)彎的方式換到另一除草位置進(jìn)行下一輪除草作業(yè)[2]。我國(guó)也開(kāi)始了農(nóng)業(yè)機(jī)器人的研究,南京林業(yè)大學(xué)的陳勇等發(fā)明了一種高效除草機(jī)器人,它是由自動(dòng)導(dǎo)航和雜草識(shí)別攝像裝置、行間切割涂抹與行內(nèi)除草機(jī)構(gòu)以及控制系統(tǒng)組成[2]的。

1 機(jī)器人控制系統(tǒng)整體設(shè)計(jì)

1.1 控制系統(tǒng)需求分析

        根據(jù)除草機(jī)器人所要完成的功能可將系統(tǒng)劃分為如圖1所示的控制框圖。由圖可以看出,控制系統(tǒng)主要分為三大部分:第一部分為上位機(jī)監(jiān)控部分;第二部分為運(yùn)動(dòng)控制部分;第三部分為視頻采集及識(shí)別部分。

        (1)上位機(jī)監(jiān)控部分:此部分主要實(shí)現(xiàn)對(duì)機(jī)器人的實(shí)時(shí)控制和合理操作。上位機(jī)要與運(yùn)動(dòng)控制部分進(jìn)行數(shù)據(jù)通信[3]

        (2)運(yùn)動(dòng)控制部分:此部分主要負(fù)責(zé)接收上位機(jī)命令,并負(fù)責(zé)將這些數(shù)據(jù)進(jìn)行判斷解析,將其轉(zhuǎn)換為電機(jī)控制信號(hào)來(lái)完成機(jī)器人的運(yùn)行。

        (3)視頻采集方案:此部分要實(shí)時(shí)采集水田秧苗圖像,并將圖像實(shí)時(shí)傳到PC,從而可以在PC上用瀏覽器來(lái)實(shí)時(shí)觀察圖像。因此,這里采用WiFi是非常合適的。

1.2 系統(tǒng)主控方案

        本設(shè)計(jì)采用Zynq-7000平臺(tái),Zynq-7000實(shí)現(xiàn)了雙核Cortex-A9 MPcore和最新的28 nm 7系列可編程邏輯的緊密集成。Zynq芯片內(nèi)部可以分為PS(Processing System)和PL(Programmable Logic)兩部分,ZedBoard是基于Xilinx ZynqTM-7000擴(kuò)展式處理平臺(tái)的低成本開(kāi)發(fā)板。它的可擴(kuò)展接口使得用戶可以方便訪問(wèn)處理系統(tǒng)和可編程邏輯,創(chuàng)建獨(dú)特而強(qiáng)大的設(shè)計(jì)[4-5]

2 機(jī)器人控制系統(tǒng)實(shí)現(xiàn)

2.1 上位機(jī)部分

        利用VC++6.0開(kāi)發(fā)了除草機(jī)器人的人機(jī)交互界面,開(kāi)發(fā)類庫(kù)是基于MFC的對(duì)話框設(shè)計(jì)的,通過(guò)ZigBee實(shí)現(xiàn)了上位機(jī)與Zedboard的通信。人機(jī)交互界面如圖2所示,主要分為3部分來(lái)控制。通過(guò)手柄和界面上的按鈕發(fā)送指令和數(shù)據(jù)。

        行走電機(jī)是通過(guò)M0和M1編輯框中的數(shù)值設(shè)置速度大小,運(yùn)動(dòng)方向可由Up和Down來(lái)控制,注意這里不選擇Select按鈕。

        在圖2所示界面中,選中Select,這時(shí),為控制4個(gè)推桿電機(jī),鉤選R1、R2、1、2、3、4、L1、L2、Up、Down、Left、Right選項(xiàng),每?jī)蓚€(gè)選項(xiàng)控制一個(gè)推桿電機(jī),如R1控制一號(hào)推桿的前進(jìn),R2控制一號(hào)推桿的后退,推桿復(fù)位、設(shè)置p參數(shù)、解除復(fù)位這3個(gè)按鈕用于4個(gè)推桿電機(jī)初始化的設(shè)置。

2.2 運(yùn)動(dòng)控制部分

2.2.1 運(yùn)動(dòng)控制部分結(jié)構(gòu)框圖

        運(yùn)動(dòng)控制部分結(jié)構(gòu)框圖如圖3所示。

        Zedboard通過(guò)ZigBee接收從上位機(jī)來(lái)的數(shù)據(jù),通過(guò)增量式PID算法整定控制PWM波形。Zedboard作為帶FPGA的處理器,利用FPGA的邏輯資源十分有意義。本文將介紹產(chǎn)生一路PWM發(fā)生器的IP核,如果要產(chǎn)生多路PWM發(fā)生器,對(duì)FPGA來(lái)說(shuō)僅僅是多消耗一些邏輯資源而已,其過(guò)程是一樣的。

        在Zedboard中運(yùn)行Linux系統(tǒng),要使用本設(shè)計(jì)FPGA的IP核,必須為這個(gè)IP核開(kāi)發(fā)Linux系統(tǒng)上的設(shè)備驅(qū)動(dòng),使得運(yùn)行在Linux系統(tǒng)上的應(yīng)用程序可以使用這個(gè)驅(qū)動(dòng)程序與FPGA端進(jìn)行通信,從而控制PWM的輸出。

2.2.2 增量式PID算法

        PID算法廣泛應(yīng)用于控制系統(tǒng)中,本系統(tǒng)使用增量式PID算法,即:

       

 

        增量式PID的輸出只與當(dāng)前拍和前兩拍的誤差有關(guān),因此累積誤差相對(duì)更小。上式中,e(n)對(duì)應(yīng)給定和反饋的偏差,u(n)對(duì)應(yīng)著輸出。增量式PID輸出的是控制量增量,并無(wú)積分作用,因此該方法適用于執(zhí)行機(jī)構(gòu)帶積分部件的對(duì)象,如電機(jī)等[6]。由于增量式PID輸出的是控制量增量,當(dāng)控制板出現(xiàn)故障時(shí),誤動(dòng)作影響較小,而執(zhí)行機(jī)構(gòu)本身有記憶功能,可保持原位,不會(huì)嚴(yán)重影響系統(tǒng)的工作。

2.2.3 PWM模塊的IP核設(shè)計(jì)

        在Zynq上制作用戶IP核需要考慮如何與PS交換數(shù)據(jù)。有兩種方案,一種是EMIO交換數(shù)據(jù),一種是制作滿足AXI協(xié)議的IP核。通常采用第二種方案。Xilinx為用戶提供了Wizard,它會(huì)自動(dòng)生成總線(AXI)相關(guān)的代碼,做好地址譯碼邏輯、讀寫控制邏輯,并在用戶工作區(qū)生成一些寄存器。本設(shè)計(jì)中的PL邏輯通過(guò)讀寫這些寄存器與PS交互[4]。

        由于Zedboard運(yùn)行的系統(tǒng)使用了FPGA資源,因此所開(kāi)發(fā)的IP核必須在原有的工程里加入新的IP核,重新生成新的bit流文件,打開(kāi)適合自己ise版本的官方demo,xps系統(tǒng)工程位于hw\xps_proj文件夾下,打開(kāi)這個(gè)xps工程。在xps中單擊Hardware->Create or Import Periphera進(jìn)入歡迎界面,按照自己的要求定制IP核,完成IP核制作的向?qū)?sup>[4]。

        接下來(lái)把這個(gè)IP核添加進(jìn)xps工程,在IP Catalog中的USER選項(xiàng)中找到它,雙擊添加到系統(tǒng)中,然后在Bus Interface中,分別修改MPD、添加接口、修改HDL sources[7-8]。修改完畢后,在project菜單中選擇Rescan User Repositories,從port中可以看到新添加的引腳,選擇為External Ports把引腳引出去。分配地址,修改ucf約束文件,產(chǎn)生bit流文件。導(dǎo)入到SDK中,新建一個(gè)fsbl工程,重新生成BOOT.BIN文件。這樣用戶IP核的部分就完成了。

2.2.4 Linux下PWM模塊驅(qū)動(dòng)程序的開(kāi)發(fā)

        Linux提供了內(nèi)核模塊機(jī)制,模塊本身不被編譯入內(nèi)核映像,從而控制了內(nèi)核的大小,模塊一旦被加載,它就和內(nèi)核中的其他部分完全一樣。驅(qū)動(dòng)程序是從來(lái)不主動(dòng)運(yùn)行的程序,而且等待應(yīng)用程序來(lái)調(diào)用。應(yīng)用程序通過(guò)內(nèi)核來(lái)調(diào)用驅(qū)動(dòng)程序[9],實(shí)現(xiàn)與實(shí)際硬件設(shè)備的通信。一般分為字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備3種類型[10]。需為上面生成的IP核進(jìn)行字符設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)。

        PWM模塊驅(qū)動(dòng)程序主要分為4個(gè)部分:加載函數(shù),卸載函數(shù),設(shè)置PWM的周期函數(shù),設(shè)置PWM的占空比函數(shù)[4]。

        (1)加載函數(shù),主要完成以下幾項(xiàng)工作:內(nèi)核注冊(cè)設(shè)備驅(qū)動(dòng),創(chuàng)建PWM設(shè)備類,利用利用PWM設(shè)備類創(chuàng)建一個(gè)PWM設(shè)備,在PWM設(shè)備中創(chuàng)建周期和占空比兩個(gè)文件,將PWM模塊的物理地址映射到虛擬地址上[4]。

        (2)卸載函數(shù),這個(gè)主要是在rmmod模塊時(shí)完成清除的工作,注銷設(shè)備。

        (3)設(shè)置pwm的周期函數(shù),修改前關(guān)閉pwm模塊,將數(shù)值寫入到寄存器中。

        (4)設(shè)置pwm的占空比函數(shù),修改前關(guān)閉pwm模塊,將數(shù)值寫入到寄存器中。

        完成了pwm驅(qū)動(dòng)程序的編寫后,需要對(duì)驅(qū)動(dòng)程序進(jìn)行編譯,驅(qū)動(dòng)程序的編譯依賴于內(nèi)核,這就和一般的應(yīng)用程序不同了。因此除了要在Linux主機(jī)下安裝交叉編譯工具之外,還要編譯和運(yùn)行與Zedboard板子上的內(nèi)核版本一樣的內(nèi)核,然后編寫Makefile。Makefile中必須指定內(nèi)核所在的路徑,在這個(gè)Makefile的幫助下運(yùn)行make即可生成編譯模塊。

2.3 視頻采集方案

2.3.1 搭建嵌入式Web服務(wù)器

        Web服務(wù)器是連接在網(wǎng)絡(luò)上提供Web訪問(wèn)服務(wù)的一種設(shè)備/程序。在Zedboard上運(yùn)行一個(gè)提供Web服務(wù)的程序,使得Zedboard成為一個(gè)可以提供Web訪問(wèn)服務(wù)的設(shè)備,這里選擇Boa服務(wù)器。

        下載與移植Boa服務(wù)器,這里需要修改源碼目錄下的一些文件以及已經(jīng)發(fā)現(xiàn)的一些bug。

        配置Boa服務(wù)器,在源碼目錄下找到boa.conf,在其基礎(chǔ)上做出自己的修改,配置Boa服務(wù)器。

        在編譯配置完Boa服務(wù)器后,就需要在Zedboard上進(jìn)行部署,完成相關(guān)的設(shè)置,保證與boa.conf中的配置相符。

2.3.2 網(wǎng)絡(luò)攝像機(jī)的移植和搭建

        網(wǎng)絡(luò)攝像機(jī)可以提供實(shí)時(shí)捕獲的圖像。攝像頭捕獲的圖像數(shù)據(jù)很大,因此需要將其壓縮后進(jìn)行網(wǎng)絡(luò)傳輸,接收端將接收到的壓縮數(shù)據(jù)進(jìn)行解碼后播放。利用網(wǎng)絡(luò)攝像頭實(shí)時(shí)采集圖像的工作原理如圖4所示。

        在安裝編碼軟件mjpg-streamer之前,需要安裝libtool工具盒移植JPEG編碼庫(kù),移植mjpg-streamer需要修改源碼目錄中plugins/input_uvc目錄下的Makefile,然后使用交叉編譯。編譯完成后可以找到input_uvc.so、output_http.so,使用這兩個(gè)庫(kù),將JPEG編碼庫(kù)生成的libjpg庫(kù)拷貝到Zedboard文件系統(tǒng),最好是/usr/lib/下。

        在視頻采集方案中,將mjpg-streamer與Boa結(jié)合使用,結(jié)合Web服務(wù)器一起將實(shí)時(shí)圖像嵌入到網(wǎng)頁(yè)中,這樣就可以通過(guò)瀏覽器輸入Zedboard的IP地址來(lái)觀看傳回來(lái)的實(shí)時(shí)圖像。

3 實(shí)驗(yàn)測(cè)試

測(cè)試:imsmod  pwm_driver.ko

cd  /sys/class/pwm_driver/pwm_device

echo  1000>pwm_frequency

echo  50>pwm_duty

        產(chǎn)生頻率為10 kHz、占空比分別為50%和30%的PWM波,如圖5(a)、(b)所示。

        打開(kāi)火狐瀏覽器,輸入開(kāi)發(fā)板的IP地址192.168.1.10,這時(shí)可以觀察到機(jī)器人傳回的實(shí)時(shí)圖像。

        本設(shè)計(jì)是在Xilinx的Zynq平臺(tái)上進(jìn)行實(shí)驗(yàn)的。通過(guò)在機(jī)器人車身上安裝攝像頭可以實(shí)現(xiàn)對(duì)機(jī)器人的遠(yuǎn)程控制。實(shí)驗(yàn)結(jié)果表明,電機(jī)控制調(diào)節(jié)響應(yīng)快,電機(jī)驅(qū)動(dòng)器運(yùn)行穩(wěn)定可靠,實(shí)現(xiàn)了增量式PID閉環(huán)控制。通過(guò)WiFi接入機(jī)器人的無(wú)線路由,就可以獲取實(shí)時(shí)的圖像,能夠?qū)崿F(xiàn)對(duì)機(jī)器人的準(zhǔn)確控制,很好地滿足了實(shí)際的工程應(yīng)用。

參考文獻(xiàn)

[1] 張濱,杜啟亮,田聯(lián)房.基于FPGA的步進(jìn)電動(dòng)機(jī)加減速控制器[J].微特電機(jī),2012(08):71-74.

[2] 夏歡.水田用除草機(jī)器人的結(jié)構(gòu)與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2012.

[3] 呂常智,姚志科.基于無(wú)線通信的移動(dòng)機(jī)器人遠(yuǎn)程控制系統(tǒng)[J].煤礦機(jī)械,2012,33(3):239-241.

[4] 陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013.

[5] 何賓.Xilinx All Programmable Zynq-7000 Soc設(shè)計(jì)指南[M].北京:清華大學(xué)出版社,2013.

[6] 杭啟樂(lè),司賓強(qiáng),朱紀(jì)洪,等.基于DSP和CPLD的四相容錯(cuò)電機(jī)控制系統(tǒng)硬件設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(9):2413-2415.

[7] 吳厚航.深入淺出玩轉(zhuǎn)FPGA[M].北京:北京航空航天大學(xué)出版社,2010.

[8] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.

[9] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

[10] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。