基于FPGA的搬運機器人控制系統(tǒng)
1 設(shè)計思想與總體方案
本搬運機器人能在任意區(qū)域內(nèi)沿尋跡線行走,自動繞開障礙,并能停在指定地點;它的操作手能對貨物進行升降、抓緊或放下等工作;它還能顯示整個運行過程的時間和距離;并且在出現(xiàn)故障時發(fā)出報警。
機器人控制系統(tǒng)以FPGA器件(Altera公司的ACEX 1K器件)作為檢測和控制的核心,采用紅外光電傳感器檢測路面尋跡線,使用超聲波傳感器檢測障礙物,利光電碼盤測距,用光電傳感器或者微動開關(guān)檢測、判斷機器手是否到位,應(yīng)用PWM技術(shù)動態(tài)控制電動機的轉(zhuǎn)動方向和轉(zhuǎn)速。本機器人控制系統(tǒng)利用有限狀態(tài)機描述和硬件描述語言設(shè)計機器人控制器,實現(xiàn)機器人行走、轉(zhuǎn)彎、繞障、停止以及機器手升降、抓緊或放下的精確控制。機器人控制系統(tǒng)結(jié)構(gòu)圖如圖1所示。
機器人根據(jù)輸入的各種檢測信息,按照為機器人設(shè)置的要求,自動地進行信息處理、分析和計算,作出相應(yīng)的控制決策或判斷,并通過輸出通道發(fā)出控制指令,控制各電機進行工作。采用控制芯片ACEX1K的控制器主要包括兩部分:機器人行走控制器和機器手控制器。
機器人行走控制器是控制系統(tǒng)中最為關(guān)鍵的一部分。機器人要準確地走到設(shè)定的位置,才能執(zhí)行后面的抓舉和卸下物品的任務(wù)。機器人在地面上的移動方式為三車輪移動方式,即采用前輪輔助后輪驅(qū)動的移動配置方式。這種配置是前輪的萬向輪為隨動輪,僅僅起到支撐車體的作用,無任何導(dǎo)向作用;而后輪則分別為兩個獨立的驅(qū)動輪,利用它們的轉(zhuǎn)速差控制機器人的運動方向。這種組合的特點是結(jié)構(gòu)簡單,易于控制,而且當兩個驅(qū)動輪以相同速度、相反方向轉(zhuǎn)動時,車體只能繞兩個驅(qū)動輪連線的中點自轉(zhuǎn),易于定位。
機器手控制器的作用是當機器人行走到了指定位置(物品放置位置)時,能夠成功地抓起或放下物品,主要是手臂的抓、放、提升、下降等功能。
本搬運機器人使用四個直流電動機進行驅(qū)動, 直流電動機的特點是在一個方向連續(xù)旋轉(zhuǎn)或者在相反的方向連續(xù)旋轉(zhuǎn), 運動連續(xù)且平滑。目前,直流電動機可以達到很大的力矩/重量比,直流電機驅(qū)動具有高精度、加速迅速以及可靠性高的特點。
2 機器人行走控制器
機器人行走控制器實現(xiàn)機器人沿尋跡線前進、后退、左轉(zhuǎn)、右轉(zhuǎn)等行走功能。行走控制器原理圖如圖2所示。
行走控制器由計數(shù)模塊(COUNTER)、行走驅(qū)動模塊(QUDONG)、指令模塊(JSKZ)和狀態(tài)控制模塊(CONTROL)組成。
2.1 計數(shù)模塊
計數(shù)模塊是機器人的“記憶”系統(tǒng),實時地“告訴”機器人自己所處的位置。計數(shù)模塊準確地計算出機器人行走的格數(shù)及光電碼盤檢測的驅(qū)動輪脈沖數(shù)。當機器人走過一格時,產(chǎn)生一個脈沖信號,計數(shù)模塊實現(xiàn)一次計數(shù)。但是當機器人轉(zhuǎn)彎時會有一個計數(shù)誤差(根據(jù)計數(shù)探頭的安裝位置而定)。為了避免產(chǎn)生誤差,當行走指令模塊發(fā)出轉(zhuǎn)彎命令時,計數(shù)模塊將停止計數(shù),保持以前的計數(shù)值。這樣將保證計數(shù)的可靠性。
圖中b為計數(shù)模塊的輸入信號。當b有一個脈沖時,計數(shù)模塊計一次數(shù);clr為計數(shù)復(fù)位信號(低電平效)。輸入端updown接收由指令模塊發(fā)出的指令(前進、后退、左轉(zhuǎn)或右轉(zhuǎn)),當updown=“11”(前進)或“00”(后退)時,計數(shù)器正常計數(shù),最多可以計數(shù)到31(從0開始); updown=“01”( 右轉(zhuǎn))或“10”(左轉(zhuǎn))時,計數(shù)器的計數(shù)值保持。counter為計數(shù)模塊輸出信號,在此暫設(shè)為五位二進制數(shù)。
2.2 指令模塊
行走指令模塊的功能是按照貨物搬運行走路徑的要求,為機器人設(shè)置行走方式。計數(shù)模塊輸出的計數(shù)值作為指令模塊發(fā)出行走指令的依據(jù),通過設(shè)定指令模塊可確定機器人的行走方式。機器人行走的每一步,都可以通過這個模塊設(shè)定它的行走模式,這極大地方便了對機器人路徑的修改和重新設(shè)置。要設(shè)定新的機器人行走路線時,直接更改這個模塊便可以實現(xiàn)。圖中輸入counter[]為計數(shù)模塊輸入的計數(shù)信號,它被作為指令模塊發(fā)出行走指令的重要依據(jù)。輸出lrd[]為指令模塊發(fā)出的行走指令,發(fā)送給狀態(tài)控制模塊。lrd為“00”時機器人后退;lrd為“01” 時機器人右轉(zhuǎn);lrd為“10” 時機器人左轉(zhuǎn);lrd為“11” 時機器人前進。
2.3 狀態(tài)控制模塊
狀態(tài)控制模塊的功能用來控制機器人順利進行轉(zhuǎn)彎。該模塊采用有限狀態(tài)機的描述方式和硬件描述語言進行設(shè)計。圖中輸入信號a1、a2為機器人前進方向的紅外探頭檢測信號,用于檢測機器人的尋線和轉(zhuǎn)彎是否到位;clr為控制器復(fù)位信號;clkb為狀態(tài)機的時鐘信號;tmp[]為指令模塊發(fā)出的指令信號,tmp[]=“11”時為直走指令信號;tmp[]=“01” 時為右轉(zhuǎn)指令信號;tmp[]=“10”時為左轉(zhuǎn)指令信號;tmp[]=“00”時為后退指令信號;輸出信號updown[]為狀態(tài)控制模塊輸出的機器人行走指令信號,最后輸入到行走驅(qū)動模塊中。
狀態(tài)控制模塊的狀態(tài)圖如圖3所示。s0狀態(tài)為初始狀態(tài)(直走),當指令模塊發(fā)出右轉(zhuǎn)命令(tmp=“01”),并且前進方向的紅外探頭檢測到尋跡線(a1=‘1’,a2=‘1’)時,s0狀態(tài)跳轉(zhuǎn)到s1(右轉(zhuǎn)狀態(tài));當指令模塊發(fā)出左轉(zhuǎn)命令(tmp=“10”),并且前進方向的紅外探頭檢測到尋跡線(a1=‘1’,a2=‘1’)時,s0狀態(tài)跳轉(zhuǎn)到s2(左轉(zhuǎn)狀態(tài));當指令模塊發(fā)出后退指令(tmp=“00”)時,s0狀態(tài)跳轉(zhuǎn)到s6;不符合以上條件的都保持在s0狀態(tài)。
s3為右轉(zhuǎn)狀態(tài),此時前進方向的兩個紅外探頭已經(jīng)離開尋跡線(a1=‘0’,a2=‘0’),當有一個探頭檢測到尋跡線時(即a1或a2有一個為1時),s3跳轉(zhuǎn)到s5狀態(tài)(強行直走狀態(tài));s4為左轉(zhuǎn)狀態(tài),它的跳轉(zhuǎn)條件與s3一致,滿足條件也是跳轉(zhuǎn)到s5狀態(tài)。
s5為強行直走狀態(tài),不受指令模塊的控制。當沿尋跡線行走一格時(即b=‘1’),s5跳轉(zhuǎn)到s0初始狀態(tài)。s6為后退狀態(tài)。
2.4 行走驅(qū)動模塊
行走驅(qū)動模塊的功能是根據(jù)狀態(tài)控制模塊和指令模塊發(fā)出的行走指令產(chǎn)生驅(qū)動信號,控制機器人的尋線及轉(zhuǎn)彎工作。圖中,輸入信號a1、a2為前進尋線紅外檢測信號;輸入信號a3、a4為后退尋線紅外檢測信號;clr為復(fù)位信號;clk為時鐘信號;updown為狀態(tài)控制模塊發(fā)出的指令信號;輸出信號acount[]為電機的控制信號。
該模塊采用有限狀態(tài)機的描述方式和硬件描述語言進行設(shè)計,保證機器人能沿著尋跡線實現(xiàn)前進、后退和轉(zhuǎn)彎的操作。在機器人沿著尋跡線快速行走過程中, 由于尋跡線的寬度有限(幾個厘米),兩個驅(qū)動輪存在轉(zhuǎn)速差,使機器人容易偏離尋跡線行走。為了解決這個問題, 采用有限狀態(tài)機設(shè)計,使該模塊具有“記憶”功能,無論從哪個方向完全偏離尋跡線,都能夠返回到尋跡線上,這樣就增加了尋線行走的可靠性。實際應(yīng)用表明,將有限狀態(tài)機設(shè)計的行走驅(qū)動模塊運用在一個快速行走且慣性較大的機器人上,機器人能夠沿著尋跡線呈“S”形行走,始終保持以尋跡線為中心運動。
3 機器手控制器
機器手主要完成升、降、抓緊和放下物品等工作。機器手控制器結(jié)構(gòu)圖如圖4所示。主要由手臂指令模塊和手臂執(zhí)行模塊組成。機器手控制器實現(xiàn)的控制主要是一個順序控制的問題。當手臂指令模塊發(fā)出取物品的命令時,手臂執(zhí)行模塊將產(chǎn)生取物品的一系列順序信號,驅(qū)動手臂電機,完成機器手取物品的工作。在取物品時,首先將手臂升降到指定位置,夾緊物品并保持;然后將整個物品提升或下降到位,整個取物品的操作結(jié)束。機器手放物品與取物品的工作相似。機器手必須是在機器人行走到指定位置時才能進行操作,行走計數(shù)值和超聲波與光電檢測信號為手臂指令模塊提供機器人行走到位信號。
3.1 手臂指令模塊
手臂指令模塊與行走部分的行走指令模塊相似。這個模塊比行走指令模塊只是多了超聲波與光電檢測信號。為了提高機器手的可靠性,采用了雙重檢測,由行走計數(shù)值檢測是否已進入物品區(qū)域,并且通過超聲波與光電信號檢測機器手是否已達到取放物品的位置。若缺一個條件,機器人將不會發(fā)出取物品或放物品的指令。
3.2 手臂執(zhí)行模塊
手臂執(zhí)行模塊主要是根據(jù)手臂指令模塊發(fā)出的指令,產(chǎn)生一系列輸出信號,驅(qū)動手臂電機。此模塊的設(shè)計也運用了有限狀態(tài)機的設(shè)計思想,采用的是順序控制的原理??墒鞘直鄞嬖谝粋€初始位置的問題,例如要取物品時,它的手臂必須是松開的,并且處于某個初始位置。因此每次取物品時,都要檢測是否處在這個初始位置,若不是,則要先調(diào)整到初始位置,然后按照取物品順序進行操作。
手臂執(zhí)行模塊狀態(tài)圖如圖5所示。s0、s1、s2 狀態(tài)為未到位狀態(tài)(初始位置),需要進行狀態(tài)調(diào)整,跳轉(zhuǎn)到s3狀態(tài)。s3為初始到位狀態(tài),當接收到取物品信號(ud=“01”)時,跳轉(zhuǎn)到s4狀態(tài)(抓緊物品); s5狀態(tài)為提升到位,s8為保持狀態(tài),最后回到初始位置s3狀態(tài)。s6、s7狀態(tài)為放物品狀態(tài),與取物品過程相似。
本搬運機器人除了以上介紹的機器人行走控制器和機器手控制器外,還有其它單元電路,如紅外光電檢測電路、超聲波檢測電路、光電碼盤檢測電路和電機驅(qū)動電路。為了隨時接收上位機發(fā)出的指令,還需要通訊模塊電路。為了實現(xiàn)機器人可靠地運行,檢測電路的設(shè)計顯得非常重要。
本設(shè)計是在QUARTUSII開發(fā)工具下對各功能模塊進行仿真分析,保證了FPGA芯片設(shè)計的成功。FPGA器件采用ALTERA公司的ACEX1K50器件,占用ACEX1K50器件的邏輯單元為43%。由于篇幅有限,各功能模塊用硬件描述語言編寫的源文件省略。
由于采用有限狀態(tài)機描述和硬件描述語言進行設(shè)計,該控制系統(tǒng)不僅在運行方式上類似于單片機控制器,而且在運行速度和工作可靠性方面優(yōu)于單片機控制器。實際運用表明該控制系統(tǒng)完全滿足要求。
評論