張丹丹, 趙宏偉, 宋云峰
1(長安大學(xué) 電子與控制工程學(xué)院, 西安 710064)
2(渭南市交通工程質(zhì)量監(jiān)督站, 渭南 714000)
隨著交通運(yùn)輸業(yè)的發(fā)展, 橋梁管理養(yǎng)護(hù)工作日益繁重, 而且由于受氣候、氧化和施工等因素影響, 致使橋梁強(qiáng)度和剛度日益降低, 這不僅僅減小了橋梁使用的安全性, 更會縮短橋梁的使用壽命[1]. 由于橋梁在交通運(yùn)輸中所起到了關(guān)鍵性作用, 所以不僅要在建設(shè)環(huán)節(jié)保障好橋梁的設(shè)計與質(zhì)量, 更要在橋梁建成后對其健康做好監(jiān)測工作, 保障其在交通運(yùn)輸中繼續(xù)發(fā)揮好它的關(guān)鍵性作用.
在移動互聯(lián)網(wǎng)技術(shù)不斷革新且移動通信網(wǎng)絡(luò)高速發(fā)展的今天, 各個領(lǐng)域都緊跟這股浪潮, 開發(fā)出各自領(lǐng)域所需的應(yīng)用. 因此, 將基于硬件部分的激光光斑中心定位結(jié)果和Android應(yīng)用結(jié)合起來, 建立網(wǎng)絡(luò)化橋梁撓度監(jiān)測、預(yù)測平臺, 使用多種算法對監(jiān)測內(nèi)容進(jìn)行測評, 對于提高對橋梁的的實時監(jiān)測有重要的意義[2].
硬件系統(tǒng)通過TMS320C6748核心處理器控制CMOS鏡頭進(jìn)行靶標(biāo)圖像采集, 對采集到的圖片進(jìn)行激光圖像算法處理[3], 求出激光光斑中心的坐標(biāo)信息.
在求取待測點撓度變化值時, 首先在橋梁未加載前對待測點進(jìn)行測量, 得到激光光斑在標(biāo)靶上的初始坐標(biāo)(x0,y0), 然后在橋梁加載之后測得激光光斑的位置坐標(biāo)(x1,y1), 最后由此得出待測點的橋梁撓度值△x=x1-x0, △y=y1-y0. 經(jīng)過檢測平臺驗證, 系統(tǒng)位移變化量的精準(zhǔn)度檢測數(shù)據(jù)如表1所示.
表1 硬件系統(tǒng)檢測位移數(shù)據(jù)對比
硬件系統(tǒng)求出待測點橋梁撓度數(shù)據(jù)之后, 通過Dtu傳輸模塊和Socket服務(wù)器建立通信, 將橋梁撓度信息上傳至Socket服務(wù)器, 進(jìn)行撓度數(shù)據(jù)的顯示和處理. 硬件系統(tǒng)圖如圖1所示.
圖1 硬件系統(tǒng)圖
本平臺結(jié)合橋梁管理者及普通用戶對橋梁實時管理或監(jiān)督的需求, 通過多種模塊的相互結(jié)合共同作用,提供了一種方便可行的監(jiān)管橋梁的途徑. 主要通過Socket服務(wù)器模塊接收來自單片機(jī)的實時撓度數(shù)據(jù),判斷并進(jìn)行多種數(shù)據(jù)庫操作. 使用百度地圖和具體橋梁撓度變化信息為核心的Android端, 進(jìn)行與Web服務(wù)器模塊的信息交互, 隨時隨地為用戶提供實時的橋梁信息, 軟件系統(tǒng)結(jié)構(gòu)如圖2所示.
圖2 軟件系統(tǒng)結(jié)構(gòu)圖
Socket服務(wù)器模塊主要實現(xiàn)和單片機(jī)通信, 以IP地址和固定端口號和單片機(jī)端進(jìn)行Socket通信, 按照自定義的數(shù)據(jù)格式接收數(shù)據(jù), 并對接收到的數(shù)據(jù)使用CRC進(jìn)行校驗, 判斷接收到的數(shù)據(jù)類型, 進(jìn)行相應(yīng)的數(shù)據(jù)庫操作[4]. 具體的Socket通信流程圖如圖3所示.
在進(jìn)行數(shù)據(jù)庫操作時, 考慮到用戶并發(fā)量的問題,本系統(tǒng)采用自定義的數(shù)據(jù)庫連接池[5]. 編寫數(shù)據(jù)庫配置文件, 設(shè)置初始連接數(shù)為 10, 并發(fā)訪問量超過 10 時, 自動往連接池中添加10條連接. 在連接池中添加獲取數(shù)據(jù)庫連接、獲取數(shù)據(jù)源及歸還連接和語句執(zhí)行者的方法.
數(shù)據(jù)庫操作共有兩種, 如果單片機(jī)第一次與Socket服務(wù)器進(jìn)行連接, 則需發(fā)送該單片機(jī)對應(yīng)橋梁的注冊信息, 在數(shù)據(jù)庫bridgemap中創(chuàng)建橋梁對應(yīng)的表, 如果不是第一次連接, 需要發(fā)送橋梁身份識別碼, Socket服務(wù)器端組拼橋梁表名, 接收數(shù)據(jù)并進(jìn)行數(shù)據(jù)庫中表的填充. 其中數(shù)據(jù)庫表結(jié)構(gòu)如圖4所示.
圖3 Socket通信流程圖
圖4 數(shù)據(jù)庫表結(jié)構(gòu)
Web平臺主要實現(xiàn)搭建數(shù)據(jù)庫服務(wù)器平臺[6], 接收并判斷用戶的多種聯(lián)網(wǎng)操作, 進(jìn)行對應(yīng)的數(shù)據(jù)庫操作, 封裝并返回應(yīng)用程序數(shù)據(jù). 本系統(tǒng)使用Tomcat服務(wù)器端來進(jìn)行Web服務(wù), JSON作為網(wǎng)絡(luò)傳輸協(xié)議, MySql作為數(shù)據(jù)庫存儲橋梁數(shù)據(jù).
Web服務(wù)器模塊在進(jìn)行和Android平臺的通信傳輸中, 使用JSON進(jìn)行數(shù)據(jù)封裝, 創(chuàng)建Java Bean對象,通過對象中的Object.setXXX()方法將數(shù)據(jù)填充進(jìn)對象, 把對象添進(jìn)集合, 再將集合轉(zhuǎn)成字符串, 進(jìn)行傳輸.
Android模塊下主要包含5個子模塊: 橋梁注冊模塊、橋梁搜索模塊、地圖環(huán)境搭建模塊、橋梁圖標(biāo)管理模塊和橋梁撓度顯示模塊. 各個模塊共同實現(xiàn)注冊、顯示百度地圖、標(biāo)志注冊、橋梁搜索、橋梁撓度曲線顯示和橋梁圖標(biāo)變更的功能[7-9].
橋梁注冊模塊主要實現(xiàn)客戶只有在第一次打開應(yīng)用時需要注冊的功能. 使用Android中的存儲類Shared Preferences, 對是否是第一次打開應(yīng)用的標(biāo)志位isFirst進(jìn)行存儲, 標(biāo)志位的初始設(shè)置為true, 在第一次打開后,修改標(biāo)志位為false, 以此實現(xiàn)判斷邏輯.
橋梁搜索模塊功能通過AutoCompleteTextView控件實現(xiàn). 在輸入首字母出現(xiàn)聯(lián)想橋梁, 并對每個聯(lián)想橋梁設(shè)置item點擊事件. 點擊聯(lián)想橋梁, 應(yīng)用由搜索頁面轉(zhuǎn)入地圖頁面, 顯示選擇對話框, 詢問用戶是否改變地圖默認(rèn)顯示中心位置. 其中橋梁注冊模塊圖和橋梁搜索模塊圖如圖5和圖6所示.
圖5 橋梁注冊模塊圖
圖6 橋梁搜索模塊圖
地圖環(huán)境搭建模塊主要實現(xiàn)地圖的配置顯示. 使用百度地圖SDK搭建地圖環(huán)境, 通過百度地圖提供的API進(jìn)行地圖的初始化設(shè)置, 設(shè)置地圖顯示中心、初始比例尺大小、隱藏指南針和設(shè)置文本標(biāo)志點擊事件等功能. 為了應(yīng)用的美觀性, 使用自定義縮放控件ZoomControlView, 完成地圖縮放功能. 地圖環(huán)境搭建模塊圖如圖7所示.
圖7 地圖環(huán)境搭建模塊圖
圖標(biāo)管理模塊包括橋梁標(biāo)志的創(chuàng)建和變更兩部分.橋梁標(biāo)志的創(chuàng)建在獲取到全部注冊橋梁信息之后, 封裝注冊圖標(biāo)類TextMarker, 循環(huán)創(chuàng)建該類對象, 調(diào)用方法, 進(jìn)行圖標(biāo)的創(chuàng)建. 在預(yù)測完橋梁狀態(tài)之后需要根據(jù)預(yù)測結(jié)果進(jìn)行橋梁標(biāo)志的變更. 橋梁共有三種標(biāo)志: 綠色、黃色和紅色并閃爍, 分別對應(yīng)橋梁的狀態(tài)是安全、危險和警戒. 圖標(biāo)管理模塊圖如圖8所示.
橋梁撓度實時顯示模塊主要實現(xiàn)顯示最新?lián)隙葦?shù)據(jù)和繪制具體橋梁實時撓度數(shù)據(jù)折線圖的功能. 在地圖顯示頁面點擊橋梁圖標(biāo)進(jìn)入橋梁撓度實時顯示頁面,執(zhí)行顯示邏輯, 橋梁名稱從本地Sqlite數(shù)據(jù)庫中獲取并顯示, 橋梁撓度實時變化曲線圖通過聯(lián)網(wǎng)訪問Web服務(wù)器數(shù)據(jù)庫, 使用AChartEngine包進(jìn)行繪制撓度實時曲線圖, 并采用計時器每3 s重新進(jìn)行聯(lián)網(wǎng)取數(shù)據(jù)的操作, 重繪撓度曲線. 橋梁撓度實時顯示模塊如圖9所示.
橋梁健康狀態(tài)的預(yù)測和評價對于橋梁的長期使用來說具有重要的意義, 目前國內(nèi)外對橋梁健康狀態(tài)的評價算法大多是獲取橋梁信息之后, 再使用多種軟件進(jìn)行評估, 且獲取橋梁信息和評價結(jié)果之間通常都存在一定的時間差, 只能起到判斷取到的數(shù)據(jù)所對應(yīng)的橋梁狀態(tài), 實時性差, 且評價算法針對性強(qiáng), 不適用于大多數(shù)橋梁. 本系統(tǒng)選取綜合評分法和優(yōu)化馬爾可夫鏈算法對橋梁健康狀態(tài)進(jìn)行每2分鐘一次評價, 最后選取其中最優(yōu)的算法.
圖8 圖標(biāo)管理模塊圖
圖9 橋梁撓度實時顯示模塊
綜合評分法是建立在對數(shù)據(jù)進(jìn)行定量和定性分析的基礎(chǔ)之上, 對待評價數(shù)據(jù)進(jìn)行打分的一種評價算法.本系統(tǒng)對全部橋梁的撓度數(shù)據(jù)進(jìn)行評價打分, 根據(jù)得分確定橋梁的損傷級別, 進(jìn)行橋梁短期健康狀態(tài)的預(yù)測[10,11]. 綜合評分法流程圖如圖10所示.
圖10 綜合評分法流程圖
Android模塊在地圖顯示頁面時, 每隔2分鐘進(jìn)行定時提取全部橋梁的最新300組撓度數(shù)據(jù)的操作, 對取回來的全部數(shù)據(jù)進(jìn)行具體橋梁的全部撓度數(shù)據(jù)的遍歷, 統(tǒng)計其對應(yīng)的損傷級別的次數(shù). 撓度損傷級別從一級到五級共分為五級, 對應(yīng)撓度變化范圍從初始撓度f0≤l/4800 到最大撓度fm≥l/600, 其中l(wèi)是橋梁的單跨長度.
不同的損傷級別對應(yīng)不同的得分和權(quán)重, 通過乘積因子、次數(shù)、得分和權(quán)重的乘積和計算得出該橋梁的得分, 對應(yīng)回橋梁狀態(tài)參照表, 得出橋梁預(yù)期狀態(tài)如下:
其中,S是得分,ni(i=1, 2, 3, 4, 5)為 300 組撓度數(shù)據(jù)分別在五種損傷級別下的次數(shù),wi,sxi(i=1, 2, 3, 4, 5)為五種不同損傷級別對應(yīng)的權(quán)重和得分,f=6.184為乘積因子. 其中損傷級別、級別得分與權(quán)重對照表和得分與損傷程度對照表分別如表2和表3所示.
表2 損傷級別、級別得分與權(quán)重對照表
表3 得分與損傷程度對照表
根據(jù)不同狀態(tài)更改橋梁圖標(biāo)為安全、危險或者警戒, 其中第一、二種損傷程度下設(shè)置橋梁圖標(biāo)為安全,第三種損傷程度下設(shè)置橋梁圖標(biāo)為危險, 第四、五種損傷程度下對應(yīng)橋梁圖標(biāo)為警戒狀態(tài). 對全部橋梁數(shù)據(jù)執(zhí)行上述操作, 從而更新全部橋梁的短期預(yù)期狀態(tài).
馬爾可夫鏈?zhǔn)蔷哂旭R爾可夫性質(zhì)的隨機(jī)過程, 在給定當(dāng)前數(shù)據(jù)的情況下, 系統(tǒng)可以從一個狀態(tài)變化到另一個狀態(tài), 也可保持當(dāng)前狀態(tài), 這些狀態(tài)改變的相關(guān)概率就叫轉(zhuǎn)移概率[12]. 經(jīng)過一次狀態(tài)轉(zhuǎn)移之后得到的概率轉(zhuǎn)移矩陣就是一步轉(zhuǎn)移概率矩陣P(1), 此時n步轉(zhuǎn)移概率矩陣的計算如下:
但是在實際的應(yīng)用中, 數(shù)據(jù)變化靈敏, 靠一次求出的一步轉(zhuǎn)移概率矩陣來計算之后的n步轉(zhuǎn)移概率矩陣,并且分析橋梁的實際狀態(tài), 會產(chǎn)生很大誤差, 因此需要對算法進(jìn)行改進(jìn)[13,14].
本系統(tǒng)使用優(yōu)化的馬爾可夫鏈對橋梁預(yù)期撓度狀態(tài)進(jìn)行預(yù)測. 首先, 連網(wǎng)獲取300組橋梁撓度數(shù)據(jù), 將取回的數(shù)據(jù)均分成2組, 將第一組數(shù)據(jù)對比狀態(tài)分成5組, 創(chuàng)建數(shù)組c1記錄所有數(shù)據(jù)中5種狀態(tài)各自出現(xiàn)的次數(shù)c1[i](i=0, 1, 2, 3, 4), 使用 ArrayList集合順序記錄所有數(shù)據(jù)對應(yīng)的狀態(tài)編號. 輪詢集合中所有數(shù)據(jù)編號從初始狀態(tài) 0→0, 1, 2, 3, 4 各自出現(xiàn)的次數(shù)nij其中i為初始狀態(tài)j為轉(zhuǎn)移狀態(tài), 分別將其除以c1[0], 得到從初始狀態(tài)0至5種狀態(tài)的轉(zhuǎn)移概率. 輪詢剩下的所有初始狀態(tài), 得到全部初始狀態(tài)下的轉(zhuǎn)移概率, 從而得到前150組數(shù)據(jù)下的一步轉(zhuǎn)移概率矩陣P1, 計算如下所示:
按此方法計算后150組數(shù)據(jù)的一步轉(zhuǎn)移概率矩陣P1', 此時兩步轉(zhuǎn)移概率矩陣的計算如下:
在分別求得x和y方向的兩步轉(zhuǎn)移概率矩陣之后,就可對最后一條撓度數(shù)據(jù)預(yù)測出其將來狀態(tài).
綜合打分法, 算法較為簡單, 處理速度很快, 橋梁數(shù)量很多時也能迅速給出處理結(jié)果, 但其需要進(jìn)行人工評定的方面很多, 對于橋梁狀態(tài)判定的準(zhǔn)確性方面還需一定的改進(jìn). 優(yōu)化的馬爾可夫鏈在處理精度和適用度上都優(yōu)于前者, 對于多種橋梁的處理結(jié)果都比較理想, 橋梁數(shù)量很多時, 理論處理速度在海量云數(shù)據(jù)下可能會相對較慢, 但是出于對CPU處理速度的考量,處理結(jié)果不會出現(xiàn)明顯降低. 進(jìn)行經(jīng)過多次的實際測量、計算和算法的比對, 針對橋梁狀態(tài)的評價問題, 最終選取優(yōu)化的馬爾可夫鏈對橋梁的狀態(tài)進(jìn)行短期內(nèi)的預(yù)測.
針對測得的一組橋梁撓度應(yīng)用優(yōu)化馬爾可夫鏈算法, 求得的一步轉(zhuǎn)移概率矩陣和兩步轉(zhuǎn)移概率矩陣結(jié)果圖如圖11所示.
圖11 算法處理結(jié)果圖
針對模擬橋梁進(jìn)行算法結(jié)果準(zhǔn)確性檢驗, 檢驗結(jié)果如表4所示.
表4 算法檢驗結(jié)果
基于Android的橋梁撓度監(jiān)測及預(yù)測系統(tǒng)能夠?qū)崿F(xiàn)設(shè)計之初對實時性、準(zhǔn)確性和實用性的設(shè)計要求.其中在整個軟件系統(tǒng)運(yùn)行時間中, Socket服務(wù)器模塊接收數(shù)據(jù)時間為每秒3至4組數(shù)據(jù), Android App主界面加載百度地圖和獲取并標(biāo)注全部注冊信息時間為2至3 s, 橋梁撓度顯示模塊更新折線圖時間固定每3 s重新獲取最新?lián)隙葦?shù)據(jù), 其中獲取最新?lián)隙葥隙刃畔r間為2至3 s. 不考慮人員操作和網(wǎng)速影響, 系統(tǒng)完整運(yùn)行一次時間為4至6 s(僅包括會有時間差的數(shù)據(jù)接收、標(biāo)志標(biāo)記和橋梁撓度顯示, 不包括幾乎不存在時間差或固定時間運(yùn)行的其他功能) . 且在運(yùn)行時間范圍內(nèi), 通過對圖1中模擬橋梁的多次模擬應(yīng)用檢測,其撓度預(yù)測結(jié)果符合實際模擬橋梁的變化情況, 多次檢測結(jié)果中準(zhǔn)確率可達(dá)98%. 系統(tǒng)的實時性和運(yùn)行的準(zhǔn)確性保證了系統(tǒng)的實用性.
在移動互聯(lián)時代, 將互聯(lián)網(wǎng)技術(shù)運(yùn)用于橋梁安全的實時監(jiān)測中, 并通過使用多種算法對橋梁狀態(tài)進(jìn)行預(yù)測, 為橋梁撓度實時變化的監(jiān)測技術(shù)注入了新的活力也為管理部門和普通用戶提供了一種監(jiān)測橋梁的新途徑[15]. 橋梁撓度變化監(jiān)測平臺, 實時性高、運(yùn)營成本低且操作方便. 可建立橋梁運(yùn)營實時監(jiān)測, 預(yù)測其短期變化, 對于用戶監(jiān)測橋梁并根據(jù)變化制定合理且有效性的養(yǎng)護(hù)措施、節(jié)約養(yǎng)護(hù)成本有很大的幫助, 達(dá)到了延長橋梁使用壽命和確保橋梁安全性的目的.