王永濤,王飛飛,郭 群
(平頂山學院 信息工程學院,河南 平頂山 467000)
隨著互聯網的快速發展,電商產業鏈快速興起,以至于物流行業的時效要求越來越高。物流與倉儲是社會經濟生活必不可少的行業[1],日常生活和社會發展都需要用物流來運送物資,包括電商和實體經濟都離不開物流來維持運轉。這就對物流行業提出了更大的需求。結合現有的傳感器和圖像識別等技術,采用貼近生活化的設計理念,本文設計了物流車輛進出庫管理系統,能夠實現對門前的車輛進行攔截;利用圖像識別技術對門前車輛的車牌號進行識別[2],識別時通過門前地下的傳感器測量車輛的重量;然后將測得重量和車牌號上傳到后端服務,后端服務查詢對比通行證正確且有效后,存儲相關數據記錄;最后返回允許放行的響應,樹莓派接到響應后控制欄桿打開門禁,使車輛可以進出。司機可以通過小程序登記信息申領通行證,管理員可以在管理端進行數據管理。該系統的實現不僅提高了物流倉儲處理效率,同時也降低了管理成本,提高了管理的精準性。
本系統設計實現司機用戶先通過小程序登記申領通行證,利用圖像識別技術對門前車輛的車牌號進行識別;然后與數據庫信息進行比對進而自動控制升降桿,同時門前的重力傳感器會采集車輛重量數據信息,將數據傳到后端服務,存儲相關數據記錄[3],后臺服務管理可以對車輛信息進行查詢的操作。系統的總體架構如圖1所示。

圖1 系統總體架構
系統總體可以分為用戶服務模塊、自動識別控制模塊、數據存儲模塊、后臺服務管理模塊四個部分,司機通過用戶服務端登記信息申領通行證,自動識別控制模塊通過攝像頭識別車牌號后自動控制欄桿升降。數據存儲模塊存儲用戶登記的信息以及車輛信息,后臺管理系統實現對用戶和車輛信息的管理。具體功能設計如圖2所示。

圖2 系統功能設計
本設計用戶服務端通過微信小程序實現,采用React+Taro的技術框架[4]開發,不同于原生小程序開發的是它可以借助React強大的功能和生態實現更便捷的開發,多端部署減少了開發成本。使用Taro框架創建的小程序項目采用了工程化、模塊化的編程思想。該小程序主要實現了通行證的申請功能,申請證所需的信息有司機姓名、車牌號、手機號、性別、公司名、車輛標準載重、貨物名稱、生效起始時間、失效時間。用戶服務頁面如圖3所示。

圖3 用戶服務頁面
項目的構建依賴于Nodejs環境,使用package.json文件管理項目來自npm的依賴程序,依賴程序分為開發環境和生產環境;還包括關于項目調試命令的配置、對瀏覽器版本兼容情況的配置。針對微信小程序的項目配置在project.config.json文件,同樣地針對其他小程序的配置也類似。在輸入完成信息后,點擊提交按鈕,先檢查登錄狀態是否有效,然后執行表單參數檢驗checkParams,通過參數檢驗后調用申請通行證的接口addPermit,申請的結果會通過Toast組件進行提示。在“我的”頁面中,可以看到登錄者名下的所有通行證,將通行證分為生效中、未生效、已過期三種狀態進行展示,在頁面頂部可以看到各個車牌號的所有通行證。
自動識別控制部分主要包括重量傳感器、抬桿、攝像頭三個設備。重量傳感器一秒采集一次數據,然后與設定值對比。如果小于設定值認為無車輛通過,本次檢查就會終止;當大于設定值時,認為此時有車輛經過,控制攝像頭模塊利用see函數[5]捕捉圖像數據并進行圖像識別,判斷返回車牌數據,進而與數據庫比對,如果是登記申領過的車牌號,道閘打開,打開時間為10 s,之后則關閉道閘;并向后端服務發送車牌信息和重量信息存儲在數據庫中。自動識別控制模塊工作流程如圖4所示。

圖4 自動識別控制模塊工作流程
本系統的所有數據都存儲于MySQL數據庫中,數據庫名稱為maizi。MySQL是開源的[6],該系統數據量較小,足夠支撐該系統的數據管理。重量傳感器采集的數據、用戶車輛信息數據和車輛同行記錄數據存放在不同的數據表中,方便對數據進行更好的管理。全局ER圖如圖5所示。

圖5 物流車輛進出庫管理系統全局ER圖
后臺管理系統主要實現對車輛信息的管理。使用Vue框架[7]實現,UI部分采用了ant-design-vue,請求模塊使用Axios庫,首頁的矩形樹圖使用Echarts,滾動表格使用了data-view。后臺管理系統的開發使用了工程化的編程思想,有利于開發管理和后期維護。在構建項目的過程中,在package.json文件中管理項目來自npm的依賴程序,依賴程序分為開發環境和生產環境;還包括關于項目調試命令的配置、對瀏覽器版本兼容情況的配置。管理系統的菜單欄包括首頁、通行證管理、進出入信息管理三個頁面。后臺管理系統首頁如圖6所示。

圖6 后臺管理系統首頁
在首頁的 created生命周期中請求數據,將數據整理成入庫記錄信息、出庫記錄信息、貨物增減情況信息,并將相關數據轉換成易讀的格式,有利于用戶體驗,這三部分數據會渲染成三個輪播表,輪播表的配置為computed中的config、config2、config3,computed會自動收集依賴并在更新時重新計算,將獲取的倉庫儲量信息在initChart函數中運用倉庫信息初始化為矩形樹圖[8]。在通行證管理頁面,使用antd的table組件渲染表格,通過columns屬性對表格進行配置,表格背的特殊樣式和元素通過scopedSlots屬性和插槽進行定制。在mounted周期函數中加載數據,并對數據進行整理,在表格中可以通過handleSearch方法對通行證的車牌號進行篩選。在進出入記錄頁面,同樣使用antd的table組件渲染表格,在mounted周期中請求數據,也可以通過車牌號篩選數據。頁面的渲染流程如圖7所示。

圖7 頁面的渲染流程
至此,物流車輛進出庫管理系統的開發工作已經基本完成,最后要對本平臺中的功能模塊進行一系列測試,以保證功能的完整性和執行的可靠性。功能測試[9-10]主要是測試本系統功能方面的完整性,根據測試后的結果,開發人員能判斷現有功能是否符合系統設計之初設定的功能,有沒有出現未預料到的結果。本章節中的測試,只測試系統中的部分重要功能,并且給出測試結果,其余的功能不再進行測試。
申請通行證測試共5個用例,涵蓋了不同的時間段、不同的車輛信息。測試填寫的字段都為必填字段,申請日期選擇必須為當天或未來日期,每個車牌號的申請區間不得重疊。申請都取得了預期目標并正確地在“我的”頁面顯示出來。通行證申請測試用例見表1所列。

表1 通行證申請測試結果(2022-03-10)
重量傳感器的測試擁有5個用例,這5個用例包含了不同的重量。測試要求當數值大于20時認為有車輛,測量誤差不大于5%,測試結果都達到了預期目標。具體測試結果見表2所列。

表2 重量傳感器測試結果(2022-03-10)
測試系統流程中的車牌識別和通行證檢查,依賴于申請通行證的測試用例,測試中所有的車輛均滿足重量傳感器數值大于20的條件,也就是所有測試用例都會至少進入到車牌識別環節,測試中受拍攝角度問題部分車牌未識別。本次測試結果見表3所列。

表3 車牌識別與通行證檢查測試結果(2022-03-10)
基于樹莓派的物流車輛進出庫管理系統助力物流倉儲實現更快的效率,能夠高效地管理車輛進出庫秩序,降低倉儲物流的運營成本。該系統不僅可以用在物流倉儲中,還可以用在航空、火車、水運等運輸方式的轉場運輸上,比如機場、港口等實際應用中。同時,在安全和功能方面還有需要增強的地方,在后臺管理系統中應展示更詳細的數據以及美化樣式,從而提升用戶體驗度。