王永濤,王飛飛,郭 群
(平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467000)
隨著互聯(lián)網(wǎng)的快速發(fā)展,電商產(chǎn)業(yè)鏈快速興起,以至于物流行業(yè)的時(shí)效要求越來(lái)越高。物流與倉(cāng)儲(chǔ)是社會(huì)經(jīng)濟(jì)生活必不可少的行業(yè)[1],日常生活和社會(huì)發(fā)展都需要用物流來(lái)運(yùn)送物資,包括電商和實(shí)體經(jīng)濟(jì)都離不開(kāi)物流來(lái)維持運(yùn)轉(zhuǎn)。這就對(duì)物流行業(yè)提出了更大的需求。結(jié)合現(xiàn)有的傳感器和圖像識(shí)別等技術(shù),采用貼近生活化的設(shè)計(jì)理念,本文設(shè)計(jì)了物流車(chē)輛進(jìn)出庫(kù)管理系統(tǒng),能夠?qū)崿F(xiàn)對(duì)門(mén)前的車(chē)輛進(jìn)行攔截;利用圖像識(shí)別技術(shù)對(duì)門(mén)前車(chē)輛的車(chē)牌號(hào)進(jìn)行識(shí)別[2],識(shí)別時(shí)通過(guò)門(mén)前地下的傳感器測(cè)量車(chē)輛的重量;然后將測(cè)得重量和車(chē)牌號(hào)上傳到后端服務(wù),后端服務(wù)查詢對(duì)比通行證正確且有效后,存儲(chǔ)相關(guān)數(shù)據(jù)記錄;最后返回允許放行的響應(yīng),樹(shù)莓派接到響應(yīng)后控制欄桿打開(kāi)門(mén)禁,使車(chē)輛可以進(jìn)出。司機(jī)可以通過(guò)小程序登記信息申領(lǐng)通行證,管理員可以在管理端進(jìn)行數(shù)據(jù)管理。該系統(tǒng)的實(shí)現(xiàn)不僅提高了物流倉(cāng)儲(chǔ)處理效率,同時(shí)也降低了管理成本,提高了管理的精準(zhǔn)性。
本系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)司機(jī)用戶先通過(guò)小程序登記申領(lǐng)通行證,利用圖像識(shí)別技術(shù)對(duì)門(mén)前車(chē)輛的車(chē)牌號(hào)進(jìn)行識(shí)別;然后與數(shù)據(jù)庫(kù)信息進(jìn)行比對(duì)進(jìn)而自動(dòng)控制升降桿,同時(shí)門(mén)前的重力傳感器會(huì)采集車(chē)輛重量數(shù)據(jù)信息,將數(shù)據(jù)傳到后端服務(wù),存儲(chǔ)相關(guān)數(shù)據(jù)記錄[3],后臺(tái)服務(wù)管理可以對(duì)車(chē)輛信息進(jìn)行查詢的操作。系統(tǒng)的總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
系統(tǒng)總體可以分為用戶服務(wù)模塊、自動(dòng)識(shí)別控制模塊、數(shù)據(jù)存儲(chǔ)模塊、后臺(tái)服務(wù)管理模塊四個(gè)部分,司機(jī)通過(guò)用戶服務(wù)端登記信息申領(lǐng)通行證,自動(dòng)識(shí)別控制模塊通過(guò)攝像頭識(shí)別車(chē)牌號(hào)后自動(dòng)控制欄桿升降。數(shù)據(jù)存儲(chǔ)模塊存儲(chǔ)用戶登記的信息以及車(chē)輛信息,后臺(tái)管理系統(tǒng)實(shí)現(xiàn)對(duì)用戶和車(chē)輛信息的管理。具體功能設(shè)計(jì)如圖2所示。
圖2 系統(tǒng)功能設(shè)計(jì)
本設(shè)計(jì)用戶服務(wù)端通過(guò)微信小程序?qū)崿F(xiàn),采用React+Taro的技術(shù)框架[4]開(kāi)發(fā),不同于原生小程序開(kāi)發(fā)的是它可以借助React強(qiáng)大的功能和生態(tài)實(shí)現(xiàn)更便捷的開(kāi)發(fā),多端部署減少了開(kāi)發(fā)成本。使用Taro框架創(chuàng)建的小程序項(xiàng)目采用了工程化、模塊化的編程思想。該小程序主要實(shí)現(xiàn)了通行證的申請(qǐng)功能,申請(qǐng)證所需的信息有司機(jī)姓名、車(chē)牌號(hào)、手機(jī)號(hào)、性別、公司名、車(chē)輛標(biāo)準(zhǔn)載重、貨物名稱、生效起始時(shí)間、失效時(shí)間。用戶服務(wù)頁(yè)面如圖3所示。
圖3 用戶服務(wù)頁(yè)面
項(xiàng)目的構(gòu)建依賴于Nodejs環(huán)境,使用package.json文件管理項(xiàng)目來(lái)自npm的依賴程序,依賴程序分為開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境;還包括關(guān)于項(xiàng)目調(diào)試命令的配置、對(duì)瀏覽器版本兼容情況的配置。針對(duì)微信小程序的項(xiàng)目配置在project.config.json文件,同樣地針對(duì)其他小程序的配置也類(lèi)似。在輸入完成信息后,點(diǎn)擊提交按鈕,先檢查登錄狀態(tài)是否有效,然后執(zhí)行表單參數(shù)檢驗(yàn)checkParams,通過(guò)參數(shù)檢驗(yàn)后調(diào)用申請(qǐng)通行證的接口addPermit,申請(qǐng)的結(jié)果會(huì)通過(guò)Toast組件進(jìn)行提示。在“我的”頁(yè)面中,可以看到登錄者名下的所有通行證,將通行證分為生效中、未生效、已過(guò)期三種狀態(tài)進(jìn)行展示,在頁(yè)面頂部可以看到各個(gè)車(chē)牌號(hào)的所有通行證。
自動(dòng)識(shí)別控制部分主要包括重量傳感器、抬桿、攝像頭三個(gè)設(shè)備。重量傳感器一秒采集一次數(shù)據(jù),然后與設(shè)定值對(duì)比。如果小于設(shè)定值認(rèn)為無(wú)車(chē)輛通過(guò),本次檢查就會(huì)終止;當(dāng)大于設(shè)定值時(shí),認(rèn)為此時(shí)有車(chē)輛經(jīng)過(guò),控制攝像頭模塊利用see函數(shù)[5]捕捉圖像數(shù)據(jù)并進(jìn)行圖像識(shí)別,判斷返回車(chē)牌數(shù)據(jù),進(jìn)而與數(shù)據(jù)庫(kù)比對(duì),如果是登記申領(lǐng)過(guò)的車(chē)牌號(hào),道閘打開(kāi),打開(kāi)時(shí)間為10 s,之后則關(guān)閉道閘;并向后端服務(wù)發(fā)送車(chē)牌信息和重量信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。自動(dòng)識(shí)別控制模塊工作流程如圖4所示。
圖4 自動(dòng)識(shí)別控制模塊工作流程
本系統(tǒng)的所有數(shù)據(jù)都存儲(chǔ)于MySQL數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)名稱為maizi。MySQL是開(kāi)源的[6],該系統(tǒng)數(shù)據(jù)量較小,足夠支撐該系統(tǒng)的數(shù)據(jù)管理。重量傳感器采集的數(shù)據(jù)、用戶車(chē)輛信息數(shù)據(jù)和車(chē)輛同行記錄數(shù)據(jù)存放在不同的數(shù)據(jù)表中,方便對(duì)數(shù)據(jù)進(jìn)行更好的管理。全局ER圖如圖5所示。
圖5 物流車(chē)輛進(jìn)出庫(kù)管理系統(tǒng)全局ER圖
后臺(tái)管理系統(tǒng)主要實(shí)現(xiàn)對(duì)車(chē)輛信息的管理。使用Vue框架[7]實(shí)現(xiàn),UI部分采用了ant-design-vue,請(qǐng)求模塊使用Axios庫(kù),首頁(yè)的矩形樹(shù)圖使用Echarts,滾動(dòng)表格使用了data-view。后臺(tái)管理系統(tǒng)的開(kāi)發(fā)使用了工程化的編程思想,有利于開(kāi)發(fā)管理和后期維護(hù)。在構(gòu)建項(xiàng)目的過(guò)程中,在package.json文件中管理項(xiàng)目來(lái)自npm的依賴程序,依賴程序分為開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境;還包括關(guān)于項(xiàng)目調(diào)試命令的配置、對(duì)瀏覽器版本兼容情況的配置。管理系統(tǒng)的菜單欄包括首頁(yè)、通行證管理、進(jìn)出入信息管理三個(gè)頁(yè)面。后臺(tái)管理系統(tǒng)首頁(yè)如圖6所示。
圖6 后臺(tái)管理系統(tǒng)首頁(yè)
在首頁(yè)的 created生命周期中請(qǐng)求數(shù)據(jù),將數(shù)據(jù)整理成入庫(kù)記錄信息、出庫(kù)記錄信息、貨物增減情況信息,并將相關(guān)數(shù)據(jù)轉(zhuǎn)換成易讀的格式,有利于用戶體驗(yàn),這三部分?jǐn)?shù)據(jù)會(huì)渲染成三個(gè)輪播表,輪播表的配置為computed中的config、config2、config3,computed會(huì)自動(dòng)收集依賴并在更新時(shí)重新計(jì)算,將獲取的倉(cāng)庫(kù)儲(chǔ)量信息在initChart函數(shù)中運(yùn)用倉(cāng)庫(kù)信息初始化為矩形樹(shù)圖[8]。在通行證管理頁(yè)面,使用antd的table組件渲染表格,通過(guò)columns屬性對(duì)表格進(jìn)行配置,表格背的特殊樣式和元素通過(guò)scopedSlots屬性和插槽進(jìn)行定制。在mounted周期函數(shù)中加載數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行整理,在表格中可以通過(guò)handleSearch方法對(duì)通行證的車(chē)牌號(hào)進(jìn)行篩選。在進(jìn)出入記錄頁(yè)面,同樣使用antd的table組件渲染表格,在mounted周期中請(qǐng)求數(shù)據(jù),也可以通過(guò)車(chē)牌號(hào)篩選數(shù)據(jù)。頁(yè)面的渲染流程如圖7所示。
圖7 頁(yè)面的渲染流程
至此,物流車(chē)輛進(jìn)出庫(kù)管理系統(tǒng)的開(kāi)發(fā)工作已經(jīng)基本完成,最后要對(duì)本平臺(tái)中的功能模塊進(jìn)行一系列測(cè)試,以保證功能的完整性和執(zhí)行的可靠性。功能測(cè)試[9-10]主要是測(cè)試本系統(tǒng)功能方面的完整性,根據(jù)測(cè)試后的結(jié)果,開(kāi)發(fā)人員能判斷現(xiàn)有功能是否符合系統(tǒng)設(shè)計(jì)之初設(shè)定的功能,有沒(méi)有出現(xiàn)未預(yù)料到的結(jié)果。本章節(jié)中的測(cè)試,只測(cè)試系統(tǒng)中的部分重要功能,并且給出測(cè)試結(jié)果,其余的功能不再進(jìn)行測(cè)試。
申請(qǐng)通行證測(cè)試共5個(gè)用例,涵蓋了不同的時(shí)間段、不同的車(chē)輛信息。測(cè)試填寫(xiě)的字段都為必填字段,申請(qǐng)日期選擇必須為當(dāng)天或未來(lái)日期,每個(gè)車(chē)牌號(hào)的申請(qǐng)區(qū)間不得重疊。申請(qǐng)都取得了預(yù)期目標(biāo)并正確地在“我的”頁(yè)面顯示出來(lái)。通行證申請(qǐng)測(cè)試用例見(jiàn)表1所列。
表1 通行證申請(qǐng)測(cè)試結(jié)果(2022-03-10)
重量傳感器的測(cè)試擁有5個(gè)用例,這5個(gè)用例包含了不同的重量。測(cè)試要求當(dāng)數(shù)值大于20時(shí)認(rèn)為有車(chē)輛,測(cè)量誤差不大于5%,測(cè)試結(jié)果都達(dá)到了預(yù)期目標(biāo)。具體測(cè)試結(jié)果見(jiàn)表2所列。
表2 重量傳感器測(cè)試結(jié)果(2022-03-10)
測(cè)試系統(tǒng)流程中的車(chē)牌識(shí)別和通行證檢查,依賴于申請(qǐng)通行證的測(cè)試用例,測(cè)試中所有的車(chē)輛均滿足重量傳感器數(shù)值大于20的條件,也就是所有測(cè)試用例都會(huì)至少進(jìn)入到車(chē)牌識(shí)別環(huán)節(jié),測(cè)試中受拍攝角度問(wèn)題部分車(chē)牌未識(shí)別。本次測(cè)試結(jié)果見(jiàn)表3所列。
表3 車(chē)牌識(shí)別與通行證檢查測(cè)試結(jié)果(2022-03-10)
基于樹(shù)莓派的物流車(chē)輛進(jìn)出庫(kù)管理系統(tǒng)助力物流倉(cāng)儲(chǔ)實(shí)現(xiàn)更快的效率,能夠高效地管理車(chē)輛進(jìn)出庫(kù)秩序,降低倉(cāng)儲(chǔ)物流的運(yùn)營(yíng)成本。該系統(tǒng)不僅可以用在物流倉(cāng)儲(chǔ)中,還可以用在航空、火車(chē)、水運(yùn)等運(yùn)輸方式的轉(zhuǎn)場(chǎng)運(yùn)輸上,比如機(jī)場(chǎng)、港口等實(shí)際應(yīng)用中。同時(shí),在安全和功能方面還有需要增強(qiáng)的地方,在后臺(tái)管理系統(tǒng)中應(yīng)展示更詳細(xì)的數(shù)據(jù)以及美化樣式,從而提升用戶體驗(yàn)度。