劉 昕 鑫, 范 道 林
(中國水利水電第七工程局有限公司,四川 成都 610213)
近幾年,國內(nèi)對群塔作業(yè)防碰撞技術(shù)的研究已經(jīng)越來越重視,但防碰撞系統(tǒng)或裝置仍未能得到普遍應(yīng)用。隨著各類新興技術(shù)的發(fā)展和成熟,在算法設(shè)計、硬件技術(shù)等方面仍有一定的研究和進(jìn)步空間[1,2]。
在算法設(shè)計方面,筆者通過分析國內(nèi)各機構(gòu)和我公司的研究進(jìn)程發(fā)現(xiàn):有的僅關(guān)注于幅度限位、高度限位和角度限位等簡單功能集成,所采用的防碰撞算法處理較為單一,難以全面、準(zhǔn)確地預(yù)測碰撞危險;有的側(cè)重于區(qū)域限制計算,無法滿足諸如水電站大壩施工環(huán)境下不同類型塔機交叉作業(yè)的需要;有的算法設(shè)計過于復(fù)雜,未考慮到實際工程應(yīng)用的可行性;還有的算法存在對不同型號塔機的推廣應(yīng)用兼容性不足的問題。[3]
筆者所設(shè)計的碰撞預(yù)警算法已應(yīng)用于瓦托水電站工程。該工程施工場地狹小,工期緊張,工作強度高。三臺設(shè)備的活動區(qū)域在施工現(xiàn)場互有交錯,設(shè)備運行過程中交叉施工干擾極大,安全隱患突出(圖1)。筆者結(jié)合瓦托水電站施工現(xiàn)場的實際情況,從系統(tǒng)實用性、可靠性及系統(tǒng)開發(fā)時限等出發(fā),設(shè)計出一種更為精簡、易推廣的算法。
圖1 瓦托水電站施工現(xiàn)場
目前,分布式構(gòu)架越來越受到計算機界的青睞,對分布式系統(tǒng)的定義如下:分布式系統(tǒng)是一個硬件或軟件組件分布在不同的網(wǎng)絡(luò)計算機上,彼此之間僅僅通過消息傳遞進(jìn)行通信和協(xié)調(diào)的系統(tǒng)。[4]由于瓦托水電站施工現(xiàn)場僅有三臺用于混凝土澆筑的塔機,且其屬于塔身底座固定類型,無需通過GPS技術(shù)進(jìn)行大范圍位置定位,因此,為了降低系統(tǒng)硬件要求、實現(xiàn)模塊化,技術(shù)人員將分布式構(gòu)架的概念應(yīng)用于碰撞預(yù)警系統(tǒng)中。
本課題開發(fā)出的分布式系統(tǒng)的特點為:
(1)取消作為中心節(jié)點的基站,實現(xiàn)設(shè)備間依靠無線網(wǎng)絡(luò)的協(xié)同互聯(lián)。
(2)在系統(tǒng)中所有設(shè)備的司機室配備一臺平板電腦作為控制主機,各設(shè)備根據(jù)自身需要獲取信息,僅進(jìn)行與自身相關(guān)的防碰撞計算,從而使信息傳輸量和計算量得到降低,對硬件配置要求亦隨之降低。
(3)在分布式構(gòu)架之下,各施工設(shè)備上的軟硬件配置和功能基本相同,易實現(xiàn)模塊化,從而便于系統(tǒng)中施工設(shè)備數(shù)量的增加等后續(xù)功能擴展或向同類推廣,適應(yīng)性強。
圖2為碰撞預(yù)警系統(tǒng)的分布式構(gòu)架體系,系統(tǒng)涵蓋的每臺塔機上都形成一個完整而獨立的模塊,各模塊之間借助無線網(wǎng)絡(luò)進(jìn)行信息互聯(lián)。每臺塔機上均以控制主機為中心,配備有為自身碰撞預(yù)測服務(wù)的信息采集、傳輸和處理設(shè)備。同時,均編制有功能完備的碰撞預(yù)警軟件,軟件的后臺進(jìn)行碰撞預(yù)警計算,前端界面實現(xiàn)現(xiàn)場運動模擬、信息警示等功能。
圖2 系統(tǒng)分布式構(gòu)架示意圖
筆者根據(jù)塔機群作業(yè)的設(shè)備特點和環(huán)境特點分析出以下幾個問題:無論是平臂塔機,還是動臂塔機,其運動狀態(tài)均由回轉(zhuǎn)、變幅和起升三個方向的復(fù)合運動組成。其中,由于回轉(zhuǎn)運動慣性較大、發(fā)生較頻繁、運動路徑范圍廣,相比較之下最易遭遇碰撞事故,因此,應(yīng)當(dāng)將回轉(zhuǎn)運動作為主運動形式進(jìn)行碰撞預(yù)警。
鑒于塔機作業(yè)的回轉(zhuǎn)速度一般不超過5°/s,在狹小場地和緊張工期的前提下,塔機之間常常近距離作業(yè),如果過早報警或漏報、誤報都將影響工作效率或造成損害。因此,碰撞預(yù)警系統(tǒng)需要預(yù)測未來多長時間后發(fā)生碰撞并制定出合理的提前報警時間,根據(jù)時間的長短區(qū)分警報級別。
分布式構(gòu)架之下,各塔機只考慮自身是否會撞到對方,因此,當(dāng)自身塔機產(chǎn)生運動時(包括回轉(zhuǎn)、變幅和起升),才開始進(jìn)行相應(yīng)的碰撞預(yù)警計算,避免自身與外部碰撞。即對每臺塔機來說,當(dāng)需要自己主動避讓時,才對自身構(gòu)成碰撞警報。
碰撞預(yù)警算法針對的對象主要是大壩施工現(xiàn)場的三臺塔機。俯視角度觀察到的瓦托水電站施工現(xiàn)場的三臺塔機的平面布置情況見圖3。圖中左側(cè)、右側(cè)均為平臂式塔機,左右兩個直徑較大的圓圈代表其工作覆蓋范圍;中間為動臂式塔機,中間直徑較小的圓圈代表其工作覆蓋范圍。筆者以左側(cè)、右側(cè)、中間塔機的簡稱指代三臺設(shè)備。塔機布置的剖視情況見圖4。
圖3 塔機平面布置圖
圖4 塔機布置剖視圖
雖然施工設(shè)備的三維形體復(fù)雜,但可將其看作多個簡單形體的組合。對該系統(tǒng)中塔機而言,根據(jù)其運動狀態(tài),可以將其整體解析為固定不動的塔身部分以及發(fā)生運動的起重臂、平衡臂、懸吊重物的鋼絲繩幾部分,即可將不同設(shè)備間的碰撞問題轉(zhuǎn)化為設(shè)備不同部件間的碰撞問題。在該系統(tǒng)中,設(shè)備部件間存在26種可能發(fā)生的碰撞情況(表1)。
針對分解后的塔機部件間的碰撞現(xiàn)象,起重臂投影為一條線、鋼絲繩投影為一個點、塔身外輪廓投影為圓形或方形,將碰撞問題簡化為平面上點線之間距離的研究,進(jìn)一步降低了算法難度。
此時,算法的繁瑣程度仍然較高。筆者結(jié)合碰撞現(xiàn)象的實質(zhì)以及“主動設(shè)備避讓原則”,對所有碰撞情況進(jìn)行了共性化處理,提取出了點碰線、線碰點、點碰固定障礙物、線碰固定障礙物等4個核心計算函數(shù),在該系統(tǒng)中,26種碰撞現(xiàn)象在經(jīng)過角度映射等處理后均可歸類到以上4個本質(zhì)計算函數(shù)中去(表1)。
表1 部件間所有可能發(fā)生的碰撞現(xiàn)象表
綜上所述,經(jīng)過部件分解、二叉樹遍歷遞歸算法、三維向二維縮維、共性化處理等步驟,算法得到精簡,易推廣。[5]
根據(jù)算法設(shè)計思路,筆者對某種具體的碰撞現(xiàn)象的分析過程進(jìn)行了如下說明。
首先,以右側(cè)塔機起重臂碰撞左側(cè)塔機鋼絲繩為例進(jìn)行說明。右側(cè)塔機是主動設(shè)備,左側(cè)塔機為被動設(shè)備。右側(cè)塔機的起重臂垂直投影后可簡化為一條一端固定、另一端軌跡是圓的線段;左側(cè)塔機鋼絲繩垂直投影后則簡化為一個點。此時,碰撞問題實質(zhì)上成為某一高度水平面上移動的線和點是否會相撞的問題。
線碰點在投影平面中的軌跡見圖5,共有四種情形。因為所有的塔機底座固定,兩塔機的塔身中心軸距離為L;左側(cè)設(shè)備經(jīng)過變幅后鋼絲繩所在的豎直軸線與塔身中心軸之間的距離為R1;右側(cè)設(shè)備起重臂投影后對應(yīng)線段的長度為R2,投影平面上起重臂回轉(zhuǎn)時掃過一個半徑為R2的圓形面。由于現(xiàn)實中L、R1、R2之間的關(guān)系不同,導(dǎo)致潛在碰撞點及計算方法不同,通常分為以下四種情形:
(1)R1+L (2)R1>L+R2(R2極小); (3)R1+R2 (4)其他(R1、R2所在兩圓形軌跡有交點)。 圖5 線碰點四種情形示意圖 情形一,當(dāng)R1+L 情形二,當(dāng)R1>L+R2,意味著右側(cè)設(shè)備回轉(zhuǎn)運動掃過的范圍極小,無潛在碰撞點。 情形三,當(dāng)R1+R2 圖6 線碰點R1+L 情形四,其他兩個圓形軌跡有交點的所有情形。如圖7(a)所示,此時潛在碰撞點無法直接確定。假設(shè)左側(cè)設(shè)備(被動設(shè)備)的碰撞部件(鋼絲繩)在所預(yù)測時刻所處的回轉(zhuǎn)角度為β(圖7中未標(biāo)出),假設(shè)兩設(shè)備圓形軌跡有兩個交點A、B(包含只有一個交點的情況,看作A、B點重合),A點對應(yīng)角度β1(β1≤180°),B點對應(yīng)角度360°-β1,β2代表安全裕度(10°)。根據(jù)被動設(shè)備所處位置的不同(β不同),潛在碰撞點不同。 圖7 線碰點情形四(兩設(shè)備軌跡有交點)危險范圍示意圖 在線碰點的情形四: 若β1+β2<β<360-β1-β2,無潛在碰撞點; β1<β<β1+β2,潛在碰撞點為A(如圖7(b)); 360-β1-β2<β<360-β1,潛在碰撞點為B(圖7(c)); 若β<β1或β>360-β1,潛在碰撞點為C(線與點圓形軌跡的切點)(圖7(d))。 得出潛在碰撞點后,再確定危險范圍。以潛在碰撞點A為例,點A是左側(cè)設(shè)備圓形運行軌跡上的一點,右側(cè)設(shè)備(主動設(shè)備)在其回轉(zhuǎn)中心以O(shè)為圓心的坐標(biāo)系中,點A對應(yīng)的角度為αA。假設(shè)右側(cè)設(shè)備當(dāng)前所處回轉(zhuǎn)角度為α(圖上未標(biāo)出),α1代表預(yù)留的安全裕度(10°),α2代表右側(cè)設(shè)備制動所需預(yù)留的角度。那么,實線和虛線處的α1+α2分別代表右側(cè)設(shè)備逆時針和順時針回轉(zhuǎn)時需要發(fā)出碰撞警報的角度范圍。 另外,潛在碰撞點并非真實的碰撞點,找到潛在碰撞點的目的是為了確定危險范圍。碰撞預(yù)警的目的是:在近距離作業(yè)時提醒設(shè)備操作人員提高警惕,只要主動設(shè)備離外部物體距離過小就應(yīng)該發(fā)出碰撞警報,因此,允許存在設(shè)備進(jìn)入預(yù)警范圍后經(jīng)過一段時間正常運行又自己走出預(yù)警范圍的情況。 線碰點計算方法如下: (1)右側(cè)設(shè)備為主動設(shè)備,其碰撞部件經(jīng)過縮維處理后可簡化為一條線。 (2)左側(cè)設(shè)備為被動設(shè)備,其碰撞部件經(jīng)過縮維處理后可簡化為一個點。 (3)算法輸入?yún)?shù)包括:a.兩設(shè)備底座中心位置及設(shè)備高度等外形輪廓;b.左側(cè)設(shè)備(被動設(shè)備)回轉(zhuǎn)角度、變幅位置和起升高度;c.右側(cè)設(shè)備(主動設(shè)備)回轉(zhuǎn)角度、變幅位置和起升高度;d.右側(cè)設(shè)備(主動設(shè)備)目前的警示級別;e.右側(cè)設(shè)備(主動設(shè)備)正常制動需預(yù)留的回轉(zhuǎn)角度;f.右側(cè)設(shè)備(主動設(shè)備)緊急制動需預(yù)留的回轉(zhuǎn)角度(其中,b、c、d的參數(shù)為實時獲得;a、e、f中的參數(shù)基本固定)。 (4)根據(jù)被動設(shè)備部件的位置、運動方向等,結(jié)合主動設(shè)備自身的運動軌跡確定潛在的碰撞點,再根據(jù)潛在碰撞點的位置以及主動設(shè)備的位置、運動方向等判斷出危險范圍。 (5)對于算法的輸入變量,無論被動設(shè)備或主動設(shè)備,其回轉(zhuǎn)角度、變幅位置和起重高度等運動信息既可以是當(dāng)前的參數(shù),也可以是10 s/4 s/2 s后的預(yù)測值。 (6)首先判斷設(shè)備是否已處于潛在碰撞點對應(yīng)的危險范圍內(nèi),若處于該范圍,采用上述方法若能有效適用于所有線碰點一類的現(xiàn)象,必須關(guān)注以下注意事項: ①根據(jù)碰撞預(yù)警規(guī)則,所有回轉(zhuǎn)角度應(yīng)及時處理并保持在0°至360°,從而使數(shù)據(jù)整齊,便于比較和計算。 ②碰撞部件縮維后是“線”的情況下,一般需要將縮維后的線段長度作為算法的輸入?yún)?shù)。當(dāng)設(shè)備為平臂式塔機時,該參數(shù)的值是起重臂的全長;設(shè)備為動臂式塔機時,該參數(shù)值為起重臂全長與其變幅傾角余弦值的乘積。 ③由于動臂式塔機的起重臂有斜度,而起重臂上只有與平臂式塔機起重臂等高的那一點才可能遭遇碰撞。在這種情況下,動臂式塔機的碰撞部件——起重臂在縮維后可簡化為一個點,因此,這類碰撞現(xiàn)象本質(zhì)的研究對象是點和線。該點對應(yīng)的變幅位置、起升高度、回轉(zhuǎn)角度才應(yīng)該作為算法的輸入?yún)?shù)。 ④碰撞現(xiàn)象里主動和被動設(shè)備左右位置互換時的調(diào)用方法:a.所有回轉(zhuǎn)角度α的映射:若α≤180°,令α=180°-α;否則,令α=540°-α。b.所有回轉(zhuǎn)角速度的映射:數(shù)值不變,回轉(zhuǎn)方向相反。c.變幅運動和起升運動無映射變化(例如“中間塔機起重臂碰撞右側(cè)塔機鋼絲繩”之類,其本質(zhì)是線碰點,只不過是其主動設(shè)備在左側(cè)、被動設(shè)備在右側(cè),意味著此時兩設(shè)備的運行軌跡和危險范圍應(yīng)當(dāng)以平面上的豎直軸線作對稱處理,但其實質(zhì)以及解算步驟完全一致)。 ⑤對于碰撞部件涉及到的平衡臂碰撞現(xiàn)象,在算法輸入?yún)?shù)里,只需將起重臂長度和回轉(zhuǎn)角度位置更換為平衡臂的對應(yīng)數(shù)值即可。 同理,可以總結(jié)出其他碰撞情況(點碰線、點碰固定障礙物、線碰固定障礙物)的計算方法。 該算法初步設(shè)計完成后,筆者編制了一個單機測試軟件,用于檢驗算法設(shè)計是否合理、編寫是否正確。該軟件通過編譯工具Visual Studio、使用C#語言編寫。 筆者對四種本質(zhì)碰撞情況——線碰固定、點碰固定、線碰點、點碰線分別編寫了一個方法。該軟件中包含可能發(fā)生的所有碰撞現(xiàn)象,并對這26種碰撞現(xiàn)象進(jìn)行了編號,每種碰撞現(xiàn)象都可以調(diào)用四個本質(zhì)計算函數(shù)之一判斷出警示級別。 運行時,先對主動設(shè)備進(jìn)行識別,識別后僅調(diào)用與主動設(shè)備相關(guān)的碰撞預(yù)警算法。以中間塔機為例,其需進(jìn)行預(yù)警的現(xiàn)象是1號到10號,那么,調(diào)用中間塔機算法時,依次判斷這十種碰撞現(xiàn)象的警示級別并保留最高級別輸出。 在單機測試版軟件中,將施工現(xiàn)場的設(shè)備位置、塔機外形參數(shù)等固定信息與實際情況保持一致,塔機的運動參數(shù)——回轉(zhuǎn)角度、起升高度、變幅長度等可由用戶通過UI界面設(shè)置。 檢驗發(fā)現(xiàn):(1)無論主動設(shè)備是哪一臺塔機,均可以調(diào)用相應(yīng)的算法、識別出危險情況且提前報警。(2)從現(xiàn)場建立的防碰撞系統(tǒng)界面中觀察運行畫面,當(dāng)作為主動設(shè)備的塔機存在碰撞危險時,界面右側(cè)表示相應(yīng)塔機危險狀態(tài)的警示燈會提前由綠轉(zhuǎn)紅,同時,界面左上角通過文字提示危險碰撞現(xiàn)象和警報級別。(3)隨著碰撞部件由遠(yuǎn)及近運動,從初始的無警報逐次變?yōu)?級/2級/1級警報并發(fā)出警報聲。在此過程中,當(dāng)出現(xiàn)塔機運動狀態(tài)改變或錯過碰撞位置即碰撞危險解除時,警報能夠自動停止。 (1)對塔機群碰撞預(yù)警系統(tǒng)采用了分布式系統(tǒng)構(gòu)架,對各塔機之間獨立進(jìn)行了碰撞危險的計算,通過網(wǎng)絡(luò)協(xié)同互聯(lián),降低了對硬件設(shè)備的性能要求,實現(xiàn)了模塊化,有利于系統(tǒng)的拓展和推廣。 (2)基于分布式系統(tǒng)構(gòu)架制定了碰撞預(yù)警規(guī)則,設(shè)計出一種碰撞預(yù)警算法:將塔機分解為簡單形體的組合,通過遍歷歸納出部件間所有可能的碰撞現(xiàn)象,對碰撞現(xiàn)象合理縮維,再進(jìn)行共性化處理,提取出四個核心計算函數(shù),實現(xiàn)了算法的簡化,同時仍保障了結(jié)果的精確度。 (3)編制了一個單機測試版軟件用于檢驗所設(shè)計的算法,檢驗發(fā)現(xiàn):對于不同設(shè)備、不同部件間的碰撞危險均可以有效識別,預(yù)判和警示功能都得到了較好的實現(xiàn),充分說明所設(shè)計的算法的合理性,可以滿足使用需求。4.2 線碰點計算方法小結(jié)
5 算法驗證
5.1 算法編寫
5.2 單機測試版軟件
6 結(jié) 語