基于FPGA的搬運機器人控制系統
1 設計思想與總體方案
本搬運機器人能在任意區域內沿尋跡線行走,自動繞開障礙,并能停在指定地點;它的操作手能對貨物進行升降、抓緊或放下等工作;它還能顯示整個運行過程的時間和距離;并且在出現故障時發出報警。
機器人控制系統以FPGA器件(Altera公司的ACEX 1K器件)作為檢測和控制的核心,采用紅外光電傳感器檢測路面尋跡線,使用超聲波傳感器檢測障礙物,利光電碼盤測距,用光電傳感器或者微動開關檢測、判斷機器手是否到位,應用PWM技術動態控制電動機的轉動方向和轉速。本機器人控制系統利用有限狀態機描述和硬件描述語言設計機器人控制器,實現機器人行走、轉彎、繞障、停止以及機器手升降、抓緊或放下的精確控制。機器人控制系統結構圖如圖1所示。

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