張家琪 劉 祺
(天津理工大學(xué),天津,300384)
隨著自動化物流系統(tǒng)、智能工廠的發(fā)展,自動引導(dǎo)車(Automated Guided Vehicle,AGV)作為運輸系統(tǒng)的關(guān)鍵工具之一,得到了越來越多的應(yīng)用[1]。
目前主流的AGV導(dǎo)航方式有:磁導(dǎo)航、光學(xué)導(dǎo)航、慣性導(dǎo)航、激光導(dǎo)航。其中,磁導(dǎo)航是一種傳統(tǒng)導(dǎo)航方式,也是目前應(yīng)用最為廣泛的導(dǎo)航方式。磁導(dǎo)航的原理是:預(yù)先在AGV的行駛路徑上敷設(shè)磁條,AGV通過磁條感應(yīng)信號實現(xiàn)導(dǎo)引。磁導(dǎo)航AGV在復(fù)雜線路下運行時,其路徑選擇以及交通控制是影響轉(zhuǎn)運效率的關(guān)鍵因素,也是運行控制中需要解決的主要問題。
首先,需要根據(jù)AGV的運行線路、工藝流程等因素設(shè)置基本信息,主要包括點(Point)表、路徑(Path)表、任務(wù)(Task) 、區(qū)域(Area)表。
1.1.1 點的分類
點用來描述AGV運行路線上的關(guān)鍵位置,根據(jù)用途,點可分為兩類:磁釘點和非磁釘點。
為了獲得AGV的位置,在AGV的運行路線上,根據(jù)需要,設(shè)置編號不同的磁釘,這種設(shè)置磁釘?shù)狞c稱為磁釘點,主要用于準(zhǔn)確停位、路由控制等;當(dāng)AGV運行到磁釘點上方時,讀取磁釘編號,就可知AGV當(dāng)前位置。磁釘點主要布置在以下位置。
1)停止點:AGV需要停止進行工作的點;
2)多任務(wù)分配點:以該點為起點的任務(wù)有多個,需要在該點根據(jù)條件分配任務(wù);
3)AGV反向運行點: AGV在該點由正向運行轉(zhuǎn)為反向運行,或由反向運行轉(zhuǎn)為正向運行;
4)路徑三叉點;
5)路徑終點或需要交通管制的點;
6)減速點:為了在停止點停位準(zhǔn)確,根據(jù)需要在停止點的前方適當(dāng)位置設(shè)置減速點;
不設(shè)置磁釘?shù)狞c稱為非磁釘點,主要用于地圖顯示、路徑添加,設(shè)置在線路拐彎處、增加路徑處等。
1.1.2 點的主要屬性
1) 編號:點的序號,用于區(qū)別各個點;
2) X坐標(biāo):點位置的X坐標(biāo),用于地圖顯示和AGV位置計算和顯示;
3) Y坐標(biāo):點位置的Y坐標(biāo),用于地圖顯示和AGV位置計算和顯示;
4) 磁釘點:是否為磁釘點(1-磁釘點,0-非磁釘點);
5) 叉點:是否為三叉點或十字叉點(1-叉點,0-非叉點);
6) 加鎖區(qū)域:是否屬于某個加鎖區(qū)域(0-不屬于加鎖區(qū)域,非0-加鎖區(qū)域編號);叉點與加鎖區(qū)域不能同時設(shè)置;
7) 叉點加鎖標(biāo)志:叉點時,是否已被AGV加鎖(1-已被加鎖,0-未被加鎖);
8) 叉點加鎖AGV編號:叉點被AGV加鎖時,對應(yīng)的AGV編號(0-未被加鎖,非0-AGV編號);
9) 工位點加鎖標(biāo)志:若該點是任務(wù)終點,是否已被AGV加鎖(1-已被加鎖,0-未被加鎖)。
需要注意的是,上述屬性第1)-6)項的屬性值需要預(yù)先定義;屬性第7)-9)項在運行控制過程中動態(tài)寫入。
路徑指以相鄰的兩個點為端點的有向線段,路徑有起點、終點;起點、終點相反的路徑互為反向路徑,也稱雙向路徑。路徑的主要屬性如下。
1) 編號:路徑的序號,用于區(qū)別各個路徑;
2) 起點:路徑起點編號;
3) 終點:路徑終點編號;
4) 長度:路徑長度;
5) 車頭方向:AGV在路徑上運行時的車頭方向;AGV車頭方向與路徑方向一致時,為正向前進;否則,為反向后退(1-正向,0-反向);
6) 轉(zhuǎn)向(左中右):當(dāng)路徑終點為三叉點時,轉(zhuǎn)向為左或右;當(dāng)路徑終點為非三叉點時,轉(zhuǎn)向為中;
7) 速度:AGV在路徑上的運行速度;
8) 反向路徑:當(dāng)前路徑的反向路徑編號(0-無反向路徑,非0-反向路徑編號);
9) 象限:當(dāng)路徑為圓弧時,圓弧相對于圓心所在的象限,這用于計算AGV在圓弧上的位置和方向(0-直線,1~4-象限);
10)雙向加鎖標(biāo)志:雙向路徑時,是否已被AGV加鎖(1-已被加鎖,0-未被加鎖);
11)雙向加鎖AGV編號:雙向路徑被AGV加鎖時,對應(yīng)的AGV編號(0-未被加鎖,非0-AGV編號)。
需要注意的是,上述屬性第1)-9)項的屬性值需要預(yù)先定義;屬性第10)-11)項在運行控制過程中動態(tài)寫入。
任務(wù)由多個依次相連的路徑組成,也可理解為由多個依次相連的點組成,表示AGV運行路線。任務(wù)的主要屬性如下。
1) 起點:要求為磁釘點;
2) 中間點1~中間點10:(0-不使用或無,非0-中間點編號);
3) 終點:要求為磁釘點;
4) 終點停止:AGV到達任務(wù)終點時是否停止進行等待;
5) 終點加鎖:任務(wù)終點是否需要加鎖(1-需要加鎖,0-不需要加鎖);
6) 解鎖點:到達該點時,是否解鎖任務(wù)起點;用于特殊工位點交通控制。
需要注意的是,上述屬性的屬性值需要預(yù)先定義。
把兩個或多個相鄰的點定義為一個區(qū)域;用于交通管制。
區(qū)域的主要屬性如下:
1) 編號:區(qū)域的序號,用于區(qū)別各個區(qū)域;
2) 區(qū)域加鎖標(biāo)志:區(qū)域是否已被AGV加鎖(1-已被加鎖,0-未被加鎖);
3) 區(qū)域加鎖AGV編號:當(dāng)區(qū)域被AGV加鎖時,對應(yīng)的AGV編號(0-未被加鎖,非0-AGV編號)。
本示例取某新能源汽車電池檢測線路的一部分并簡化為例進行說明,如圖1所示。
圖1 新能源汽車電池檢測線簡化圖
示例圖工作流程說明如下:
1) 點03:待測電池裝載點;
2) 點09:任務(wù)分配點,根據(jù)點21、24的使用情況進行分配或等待;
3) 點21、24:電池檢測點,檢測完成后,根據(jù)檢測結(jié)果(合格、不合格)和點26的使用情況進行分配或等待,檢測合格時到點02結(jié)束下線,檢測不合格且點26空閑時到點26進行維修,檢測不合格且點26忙時等待點26空閑;
4) 點26:電池維修點,維修完成后,需要再次進行檢測,根據(jù)點21、24的使用情況進行分配或等待;
5) 點02:檢測完成電池卸載點。
根據(jù)工作流程,任務(wù)路徑配置如下:
一個任務(wù)執(zhí)行完成,自動分配新任務(wù),實現(xiàn)AGV的路徑選擇和自動連續(xù)運行。
根據(jù)任務(wù)屬性“終點停止”確定任務(wù)分配時機;當(dāng)終點停止時,AGV到達任務(wù)終點停止等待放行信號,再分配新任務(wù);當(dāng)終點不停止時,AGV進入任務(wù)的最后路徑開始分配新任務(wù)。
根據(jù)任務(wù)終點確定任務(wù)分配方式;當(dāng)以該點為任務(wù)起點的任務(wù)有多個時,稱為多任務(wù),需要根據(jù)條件進行邏輯判斷再進行分配。這部分邏輯判斷可以根據(jù)項目編寫特定程序?qū)崿F(xiàn),也可以采用“通用程序+參數(shù)配置”方式實現(xiàn)。當(dāng)以該點為任務(wù)起點的任務(wù)只有一個,稱為單任務(wù),編寫通用程序?qū)崿F(xiàn)。在實際項目應(yīng)用中,大部分任務(wù)為單任務(wù)。
控制AGV的基本命令有前進、后退、停止、速度、轉(zhuǎn)向(左中右)。這些基本命令的參數(shù)設(shè)置在路徑中,不同的路徑可以設(shè)置不同的命令參數(shù)。
AGV實時反饋最新經(jīng)過的磁釘編號以及經(jīng)過該磁釘后運行的距離,任務(wù)運行邏輯根據(jù)這兩個實時反饋值,確定AGV所在的路徑,然后根據(jù)路徑的命令參數(shù)及外界條件,控制AGV運行。
叉點是一種特殊的點,分為三叉點和十字叉點;圖1中點18為三叉點;點10為十字叉點。
當(dāng)兩個AGV同時進入叉點時,會觸發(fā)AGV雷達報警,造成障礙停止;為了避免這一情況發(fā)生,采用叉點獨占方式進行交通控制。
叉點控制邏輯如下:
1)若終點不是叉點,則繼續(xù)行駛;
2)若終點是叉點且未被加鎖,則加鎖終點;
3)若終點是叉點且被本AGV加鎖,則繼續(xù)行駛;
4)若終點是叉點且被其他AGV加鎖,則停止等待;
5)當(dāng)AGV到達路徑終點時,若路徑起點是叉點且被當(dāng)前AGV鎖定,則解鎖起點;
例如圖1中任務(wù)T4,當(dāng)?shù)竭_點22時,加鎖點18;當(dāng)?shù)竭_點19時,解鎖點18。
由于AGV尺寸和路徑長度的原因,當(dāng)某一區(qū)域線路復(fù)雜,利用叉點交通控制不能滿足要求時,可以把多個點定義為一個區(qū)域,使用區(qū)域加鎖的方法進行控制。
區(qū)域控制邏輯如下。
1) 若路徑終點不屬于區(qū)域,則繼續(xù)行駛;
2) 若路徑終點屬于某個區(qū)域且該區(qū)域未被加鎖,則加鎖該區(qū)域;
3) 若路徑終點屬于某個區(qū)域且該區(qū)域被本AGV加鎖,則繼續(xù)行駛;
4) 若路徑終點屬于某個區(qū)域且該區(qū)域被其他AGV加鎖,則停止等待;
5) 當(dāng)AGV到達路徑終點且路徑終點不屬于該區(qū)域時,若路徑起點屬于某個區(qū)域且該區(qū)域被本AGV加鎖,則解鎖該區(qū)域;
在圖1中,點10、11、20組成區(qū)域定義為A1,點10、11、20的屬性“加鎖區(qū)域”都設(shè)為A1。例如任務(wù)T2,當(dāng)?shù)竭_點09時,加鎖區(qū)域A1;當(dāng)?shù)竭_點21時,解鎖區(qū)域A1。
某些工位點不允許兩個或多個AGV同時進入;為了避免同時進入而造成的錯誤,采用工位點獨占方式進行交通控制。在圖1中,點21、24、26屬于這類特殊工位點。
1) 特殊工位點加鎖。
AGV在任務(wù)分配時,查找符合條件且任務(wù)終點未加鎖的任務(wù),若找到,則加鎖任務(wù)終點,并為AGV分配該任務(wù)。
例如圖1中假設(shè)AGV在點21電池檢測不合格需要維修,則任務(wù)T5滿足條件,若任務(wù)T5的終點26未被加鎖,則加鎖點26,并為AGV分配任務(wù)T5;否則,等待。
2) 特殊工位點解鎖。
當(dāng)AGV當(dāng)前任務(wù)執(zhí)行完成,到達任務(wù)終點時,不能立即解鎖任務(wù)終點,要確保AGV執(zhí)行新任務(wù)離開并和另一進入的AGV不發(fā)生碰撞時,才能解鎖。為了解決這一問題,采用在任務(wù)屬性中設(shè)置解鎖點的方法:當(dāng)AGV離開到達解鎖點時,解鎖任務(wù)起點。
圖1中以點26為起點的任務(wù)分別為T8、T9 、T10、T11,在這些任務(wù)中分別設(shè)置解鎖點為點15。這樣,當(dāng)AGV執(zhí)行這些任務(wù),到達點15時解鎖任務(wù)起點26。
當(dāng)兩輛AGV沿互為反向的路徑相對行駛時,如果不加控制,將產(chǎn)生交通堵塞。例如圖1中,對于任務(wù)T3和T10,點11和點13之間的路徑為需要雙向交通控制的路徑。
解決雙向交通控制的問題有兩種方法:一是在設(shè)計路線和任務(wù)時盡量減少或避免這種情況發(fā)生,這樣可以減少AGV互相等待的時間;二是通過交通控制的方法解決,其控制邏輯如下。
1) 若下一路徑不是雙向路徑,則繼續(xù)行駛;
2) 若下一路徑是雙向路徑且未被加鎖,同時所有未完成路徑中的雙向路徑的反向路徑均未加鎖時,對所有未完成路徑中的雙向路徑加鎖;否則,停止等待:
3) 若下一路徑是雙向路徑且被本AGV加鎖,則繼續(xù)行駛;
4) 若下一路徑是雙向路徑且被其他AGV加鎖,則停止等待;
5) 當(dāng)AGV到達路徑終點時,若當(dāng)前路徑是雙向路徑,則解鎖當(dāng)前路徑。
為了計算簡單,路徑只有直線路徑和標(biāo)準(zhǔn)四分之一圓弧路徑兩種;AGV實時反饋最新磁釘編號以及經(jīng)過該磁釘后運行的距離,根據(jù)這兩個實時反饋值,確定AGV所在的路徑、坐標(biāo)值及角度。
為了計算AGV在圓弧路徑上的坐標(biāo)和方向,需要在路徑屬性中定義圓弧相對于圓心所在的象限。
為了在顯示器或觸摸屏上顯示地圖及AGV,需要把上面計算的實際坐標(biāo)轉(zhuǎn)換為顯示器坐標(biāo)。其轉(zhuǎn)換公式如下:
M_X= (Act_X- LD_X)* M_W/ Act_W;
M_Y= M_H- (Act_Y- LD_Y)* M_H/ Act_H。
公式中各參數(shù)含義如下:
Act_X、ACt_Y:實際坐標(biāo);
Act_W、Act_H:運行路線的實際大?。?/p>
LD_X、LD_Y:運行路線左下角坐標(biāo);
M _X、M_Y:顯示屏顯示坐標(biāo);
M_W、M_H:顯示屏分辨率。
AGV在復(fù)雜線路下按照工藝要求合理順暢地運行是AGV運行控制系統(tǒng)的重要內(nèi)容。同時,AGV運行控制系統(tǒng)也要實時反饋AGV的運行狀態(tài),特別是當(dāng)AGV停止運行時,要反饋停止運行的原因。