《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于FPGA的搬運(yùn)機(jī)器人控制系統(tǒng)

基于FPGA的搬運(yùn)機(jī)器人控制系統(tǒng)

2008-07-28
作者:包 明1, 包 奎2

  摘 要∶ 以FPGA作為搬運(yùn)機(jī)器人" title="器人">器人控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)的檢測(cè)和控制核心,詳細(xì)介紹了機(jī)器人行走控制器和機(jī)器手控制器的結(jié)構(gòu)和設(shè)計(jì)方法。該控制系統(tǒng)采用有限狀態(tài)機(jī)" title="有限狀態(tài)機(jī)">有限狀態(tài)機(jī)描述和硬件描述語(yǔ)言設(shè)計(jì)機(jī)器人控制器,具有自動(dòng)糾偏、尋線準(zhǔn)確、高集成度和高可靠性等特點(diǎn)。實(shí)際運(yùn)用表明該控制系統(tǒng)完全滿足要求。
  關(guān)鍵詞: 機(jī)器人 FPGA 有限狀態(tài)機(jī) 硬件描述語(yǔ)言


  目前,機(jī)器人控制器主要通過單片機(jī)來實(shí)現(xiàn)。但是,單片機(jī)是基于順序語(yǔ)言的,其描述過程繁瑣;處理速度受單片機(jī)時(shí)鐘頻率的限制,難于實(shí)現(xiàn)高速實(shí)時(shí)控制;并且外圍電路復(fù)雜,不易在線修改。利用現(xiàn)場(chǎng)可編程門陣列(FPGA)器件實(shí)現(xiàn)搬運(yùn)機(jī)器人控制系統(tǒng)則集成度高、高速、高效率;易于現(xiàn)場(chǎng)重新編程,實(shí)現(xiàn)多重配置;可以把其它控制模塊" title="控制模塊">控制模塊集成在FPGA中,體積小、可靠性高;易于實(shí)現(xiàn)SOPC(可編程單芯片系統(tǒng)),整個(gè)控制系統(tǒng)由硬件實(shí)現(xiàn)。這是電子系統(tǒng)發(fā)展的方向和趨勢(shì)。本文介紹基于FPGA的搬運(yùn)機(jī)器人控制系統(tǒng)。
1 設(shè)計(jì)思想與總體方案
  本搬運(yùn)機(jī)器人能在任意區(qū)域內(nèi)沿尋跡" title="尋跡">尋跡線行走,自動(dòng)繞開障礙,并能停在指定地點(diǎn);它的操作手能對(duì)貨物進(jìn)行升降、抓緊或放下等工作;它還能顯示整個(gè)運(yùn)行過程的時(shí)間和距離;并且在出現(xiàn)故障時(shí)發(fā)出報(bào)警。
  機(jī)器人控制系統(tǒng)以FPGA器件(Altera公司的ACEX 1K器件)作為檢測(cè)和控制的核心,采用紅外光電傳感器檢測(cè)路面尋跡線,使用超聲波傳感器檢測(cè)障礙物,利光電碼盤測(cè)距,用光電傳感器或者微動(dòng)開關(guān)檢測(cè)、判斷機(jī)器手是否到位, 應(yīng)用PWM技術(shù)動(dòng)態(tài)控制電動(dòng)機(jī)的轉(zhuǎn)動(dòng)方向和轉(zhuǎn)速。本機(jī)器人控制系統(tǒng)利用有限狀態(tài)機(jī)描述和硬件描述語(yǔ)言設(shè)計(jì)機(jī)器人控制器,實(shí)現(xiàn)機(jī)器人行走、轉(zhuǎn)彎、繞障、停止以及機(jī)器手升降、抓緊或放下的精確控制。機(jī)器人控制系統(tǒng)結(jié)構(gòu)圖如圖1所示。


  機(jī)器人根據(jù)輸入的各種檢測(cè)信息,按照為機(jī)器人設(shè)置的要求,自動(dòng)地進(jìn)行信息處理、分析和計(jì)算,作出相應(yīng)的控制決策或判斷,并通過輸出通道發(fā)出控制指令,控制各電機(jī)進(jìn)行工作。采用控制芯片ACEX1K的控制器主要包括兩部分:機(jī)器人行走控制器和機(jī)器手控制器。
  機(jī)器人行走控制器是控制系統(tǒng)中最為關(guān)鍵的一部分。機(jī)器人要準(zhǔn)確地走到設(shè)定的位置,才能執(zhí)行后面的抓舉和卸下物品的任務(wù)。機(jī)器人在地面上的移動(dòng)方式為三車輪移動(dòng)方式,即采用前輪輔助后輪驅(qū)動(dòng)的移動(dòng)配置方式。這種配置是前輪的萬(wàn)向輪為隨動(dòng)輪,僅僅起到支撐車體的作用,無(wú)任何導(dǎo)向作用;而后輪則分別為兩個(gè)獨(dú)立的驅(qū)動(dòng)輪,利用它們的轉(zhuǎn)速差控制機(jī)器人的運(yùn)動(dòng)方向。這種組合的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單,易于控制,而且當(dāng)兩個(gè)驅(qū)動(dòng)輪以相同速度、相反方向轉(zhuǎn)動(dòng)時(shí),車體只能繞兩個(gè)驅(qū)動(dòng)輪連線的中點(diǎn)自轉(zhuǎn),易于定位。
  機(jī)器手控制器的作用是當(dāng)機(jī)器人行走到了指定位置(物品放置位置)時(shí),能夠成功地抓起或放下物品,主要是手臂的抓、放、提升、下降等功能。
  本搬運(yùn)機(jī)器人使用四個(gè)直流電動(dòng)機(jī)進(jìn)行驅(qū)動(dòng), 直流電動(dòng)機(jī)的特點(diǎn)是在一個(gè)方向連續(xù)旋轉(zhuǎn)或者在相反的方向連續(xù)旋轉(zhuǎn), 運(yùn)動(dòng)連續(xù)且平滑。目前,直流電動(dòng)機(jī)可以達(dá)到很大的力矩/重量比,直流電機(jī)驅(qū)動(dòng)具有高精度、加速迅速以及可靠性高的特點(diǎn)。
2 機(jī)器人行走控制器
  機(jī)器人行走控制器實(shí)現(xiàn)機(jī)器人沿尋跡線前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等行走功能。行走控制器原理圖如圖2所示。


  行走控制器由計(jì)數(shù)模塊(COUNTER)、行走驅(qū)動(dòng)模塊(QUDONG)、指令模塊(JSKZ)和狀態(tài)控制模塊(CONTROL)組成。
2.1 計(jì)數(shù)模塊
  計(jì)數(shù)模塊是機(jī)器人的“記憶”系統(tǒng),實(shí)時(shí)地“告訴”機(jī)器人自己所處的位置。計(jì)數(shù)模塊準(zhǔn)確地計(jì)算出機(jī)器人行走的格數(shù)及光電碼盤檢測(cè)的驅(qū)動(dòng)輪脈沖數(shù)。當(dāng)機(jī)器人走過一格時(shí),產(chǎn)生一個(gè)脈沖信號(hào),計(jì)數(shù)模塊實(shí)現(xiàn)一次計(jì)數(shù)。但是當(dāng)機(jī)器人轉(zhuǎn)彎時(shí)會(huì)有一個(gè)計(jì)數(shù)誤差(根據(jù)計(jì)數(shù)探頭的安裝位置而定)。為了避免產(chǎn)生誤差,當(dāng)行走指令模塊發(fā)出轉(zhuǎn)彎命令時(shí),計(jì)數(shù)模塊將停止計(jì)數(shù),保持以前的計(jì)數(shù)值。這樣將保證計(jì)數(shù)的可靠性。
  圖中b為計(jì)數(shù)模塊的輸入信號(hào)。當(dāng)b有一個(gè)脈沖時(shí),計(jì)數(shù)模塊計(jì)一次數(shù);clr為計(jì)數(shù)復(fù)位信號(hào)(低電平效)。輸入端updown接收由指令模塊發(fā)出的指令(前進(jìn)、后退、左轉(zhuǎn)或右轉(zhuǎn)),當(dāng)updown=“11”(前進(jìn))或“00”(后退)時(shí),計(jì)數(shù)器正常計(jì)數(shù),最多可以計(jì)數(shù)到31(從0開始); updown=“01”( 右轉(zhuǎn))或“10”(左轉(zhuǎn))時(shí),計(jì)數(shù)器的計(jì)數(shù)值保持。counter為計(jì)數(shù)模塊輸出信號(hào),在此暫設(shè)為五位二進(jìn)制數(shù)。
2.2 指令模塊
  行走指令模塊的功能是按照貨物搬運(yùn)行走路徑的要求,為機(jī)器人設(shè)置行走方式。計(jì)數(shù)模塊輸出的計(jì)數(shù)值作為指令模塊發(fā)出行走指令的依據(jù),通過設(shè)定指令模塊可確定機(jī)器人的行走方式。機(jī)器人行走的每一步,都可以通過這個(gè)模塊設(shè)定它的行走模式,這極大地方便了對(duì)機(jī)器人路徑的修改和重新設(shè)置。要設(shè)定新的機(jī)器人行走路線時(shí),直接更改這個(gè)模塊便可以實(shí)現(xiàn)。 圖中輸入counter[]為計(jì)數(shù)模塊輸入的計(jì)數(shù)信號(hào),它被作為指令模塊發(fā)出行走指令的重要依據(jù)。輸出lrd[]為指令模塊發(fā)出的行走指令,發(fā)送給狀態(tài)控制模塊。lrd為“00”時(shí)機(jī)器人后退;lrd為“01” 時(shí)機(jī)器人右轉(zhuǎn);lrd為“10” 時(shí)機(jī)器人左轉(zhuǎn);lrd為“11” 時(shí)機(jī)器人前進(jìn)。
2.3 狀態(tài)控制模塊
  狀態(tài)控制模塊的功能用來控制機(jī)器人順利進(jìn)行轉(zhuǎn)彎。該模塊采用有限狀態(tài)機(jī)的描述方式和硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)。圖中輸入信號(hào)a1、a2為機(jī)器人前進(jìn)方向的紅外探頭檢測(cè)信號(hào),用于檢測(cè)機(jī)器人的尋線和轉(zhuǎn)彎是否到位;clr為控制器復(fù)位信號(hào);clkb為狀態(tài)機(jī)的時(shí)鐘信號(hào);tmp[]為指令模塊發(fā)出的指令信號(hào),tmp[]=“11”時(shí)為直走指令信號(hào);tmp[]=“01” 時(shí)為右轉(zhuǎn)指令信號(hào);tmp[]=“10”時(shí)為左轉(zhuǎn)指令信號(hào);tmp[]=“00”時(shí)為后退指令信號(hào);輸出信號(hào)updown[]為狀態(tài)控制模塊輸出的機(jī)器人行走指令信號(hào),最后輸入到行走驅(qū)動(dòng)模塊中。


  狀態(tài)控制模塊的狀態(tài)圖如圖3所示。s0狀態(tài)為初始狀態(tài)(直走),當(dāng)指令模塊發(fā)出右轉(zhuǎn)命令(tmp=“01”),并且前進(jìn)方向的紅外探頭檢測(cè)到尋跡線(a1=‘1’,a2=‘1’)時(shí),s0狀態(tài)跳轉(zhuǎn)到s1(右轉(zhuǎn)狀態(tài));當(dāng)指令模塊發(fā)出左轉(zhuǎn)命令(tmp=“10”),并且前進(jìn)方向的紅外探頭檢測(cè)到尋跡線(a1=‘1’,a2=‘1’)時(shí),s0狀態(tài)跳轉(zhuǎn)到s2(左轉(zhuǎn)狀態(tài));當(dāng)指令模塊發(fā)出后退指令(tmp=“00”)時(shí),s0狀態(tài)跳轉(zhuǎn)到s6;不符合以上條件的都保持在s0狀態(tài)。
  s3為右轉(zhuǎn)狀態(tài),此時(shí)前進(jìn)方向的兩個(gè)紅外探頭已經(jīng)離開尋跡線(a1=‘0’,a2=‘0’),當(dāng)有一個(gè)探頭檢測(cè)到尋跡線時(shí)(即a1或a2有一個(gè)為1時(shí)),s3跳轉(zhuǎn)到s5狀態(tài)(強(qiáng)行直走狀態(tài));s4為左轉(zhuǎn)狀態(tài),它的跳轉(zhuǎn)條件與s3一致,滿足條件也是跳轉(zhuǎn)到s5狀態(tài)。
  s5為強(qiáng)行直走狀態(tài),不受指令模塊的控制。當(dāng)沿尋跡線行走一格時(shí)(即b=‘1’),s5跳轉(zhuǎn)到s0初始狀態(tài)。s6為后退狀態(tài)。
2.4 行走驅(qū)動(dòng)模塊
  行走驅(qū)動(dòng)模塊的功能是根據(jù)狀態(tài)控制模塊和指令模塊發(fā)出的行走指令產(chǎn)生驅(qū)動(dòng)信號(hào),控制機(jī)器人的尋線及轉(zhuǎn)彎工作。圖中,輸入信號(hào)a1、a2為前進(jìn)尋線紅外檢測(cè)信號(hào);輸入信號(hào)a3、a4為后退尋線紅外檢測(cè)信號(hào);clr為復(fù)位信號(hào);clk為時(shí)鐘信號(hào);updown為狀態(tài)控制模塊發(fā)出的指令信號(hào);輸出信號(hào)acount[]為電機(jī)的控制信號(hào)。
  該模塊采用有限狀態(tài)機(jī)的描述方式和硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),保證機(jī)器人能沿著尋跡線實(shí)現(xiàn)前進(jìn)、后退和轉(zhuǎn)彎的操作。在機(jī)器人沿著尋跡線快速行走過程中, 由于尋跡線的寬度有限(幾個(gè)厘米),兩個(gè)驅(qū)動(dòng)輪存在轉(zhuǎn)速差,使機(jī)器人容易偏離尋跡線行走。為了解決這個(gè)問題, 采用有限狀態(tài)機(jī)設(shè)計(jì),使該模塊具有“記憶”功能,無(wú)論從哪個(gè)方向完全偏離尋跡線,都能夠返回到尋跡線上,這樣就增加了尋線行走的可靠性。實(shí)際應(yīng)用表明,將有限狀態(tài)機(jī)設(shè)計(jì)的行走驅(qū)動(dòng)模塊運(yùn)用在一個(gè)快速行走且慣性較大的機(jī)器人上,機(jī)器人能夠沿著尋跡線呈“S”形行走,始終保持以尋跡線為中心運(yùn)動(dòng)。
3 機(jī)器手控制器
  機(jī)器手主要完成升、降、抓緊和放下物品等工作。機(jī)器手控制器結(jié)構(gòu)圖如圖4所示。主要由手臂指令模塊和手臂執(zhí)行模塊組成。機(jī)器手控制器實(shí)現(xiàn)的控制主要是一個(gè)順序控制的問題。當(dāng)手臂指令模塊發(fā)出取物品的命令時(shí),手臂執(zhí)行模塊將產(chǎn)生取物品的一系列順序信號(hào),驅(qū)動(dòng)手臂電機(jī),完成機(jī)器手取物品的工作。在取物品時(shí),首先將手臂升降到指定位置,夾緊物品并保持;然后將整個(gè)物品提升或下降到位,整個(gè)取物品的操作結(jié)束。機(jī)器手放物品與取物品的工作相似。機(jī)器手必須是在機(jī)器人行走到指定位置時(shí)才能進(jìn)行操作,行走計(jì)數(shù)值和超聲波與光電檢測(cè)信號(hào)為手臂指令模塊提供機(jī)器人行走到位信號(hào)。


3.1 手臂指令模塊
  手臂指令模塊與行走部分的行走指令模塊相似。這個(gè)模塊比行走指令模塊只是多了超聲波與光電檢測(cè)信號(hào)。為了提高機(jī)器手的可靠性,采用了雙重檢測(cè),由行走計(jì)數(shù)值檢測(cè)是否已進(jìn)入物品區(qū)域,并且通過超聲波與光電信號(hào)檢測(cè)機(jī)器手是否已達(dá)到取放物品的位置。若缺一個(gè)條件,機(jī)器人將不會(huì)發(fā)出取物品或放物品的指令。3.2 手臂執(zhí)行模塊
  手臂執(zhí)行模塊主要是根據(jù)手臂指令模塊發(fā)出的指令,產(chǎn)生一系列輸出信號(hào),驅(qū)動(dòng)手臂電機(jī)。此模塊的設(shè)計(jì)也運(yùn)用了有限狀態(tài)機(jī)的設(shè)計(jì)思想,采用的是順序控制的原理??墒鞘直鄞嬖谝粋€(gè)初始位置的問題,例如要取物品時(shí),它的手臂必須是松開的,并且處于某個(gè)初始位置。因此每次取物品時(shí),都要檢測(cè)是否處在這個(gè)初始位置,若不是,則要先調(diào)整到初始位置,然后按照取物品順序進(jìn)行操作。
  手臂執(zhí)行模塊狀態(tài)圖如圖5所示。s0、s1、s2 狀態(tài)為未到位狀態(tài)(初始位置),需要進(jìn)行狀態(tài)調(diào)整,跳轉(zhuǎn)到s3狀態(tài)。s3為初始到位狀態(tài),當(dāng)接收到取物品信號(hào)(ud=“01”)時(shí),跳轉(zhuǎn)到s4狀態(tài)(抓緊物品); s5狀態(tài)為提升到位,s8為保持狀態(tài),最后回到初始位置s3狀態(tài)。s6、s7狀態(tài)為放物品狀態(tài),與取物品過程相似。


  本搬運(yùn)機(jī)器人除了以上介紹的機(jī)器人行走控制器和機(jī)器手控制器外,還有其它單元電路,如紅外光電檢測(cè)電路、超聲波檢測(cè)電路、光電碼盤檢測(cè)電路和電機(jī)驅(qū)動(dòng)電路。為了隨時(shí)接收上位機(jī)發(fā)出的指令,還需要通訊模塊電路。為了實(shí)現(xiàn)機(jī)器人可靠地運(yùn)行,檢測(cè)電路的設(shè)計(jì)顯得非常重要。
  本設(shè)計(jì)是在QUARTUSII開發(fā)工具下對(duì)各功能模塊進(jìn)行仿真分析,保證了FPGA芯片設(shè)計(jì)的成功。FPGA器件采用ALTERA公司的ACEX1K50器件,占用ACEX1K50器件的邏輯單元為43%。由于篇幅有限,各功能模塊用硬件描述語(yǔ)言編寫的源文件省略。
  由于采用有限狀態(tài)機(jī)描述和硬件描述語(yǔ)言進(jìn)行設(shè)計(jì),該控制系統(tǒng)不僅在運(yùn)行方式上類似于單片機(jī)控制器,而且在運(yùn)行速度和工作可靠性方面優(yōu)于單片機(jī)控制器。實(shí)際運(yùn)用表明該控制系統(tǒng)完全滿足要求。


參考文獻(xiàn)
1 包 明, 趙明富.EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2002
2 趙雅興.FPGA原理、設(shè)計(jì)與應(yīng)用[M]. 天津:天津大學(xué)出版社,1999
3 潘 松, 黃繼業(yè).EDA技術(shù)實(shí)用教材[M].北京:科技出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。