王永涛,王飞飞,郭 群
(平顶山学院 信息工程学院,河南 平顶山 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)
基于树莓派的物流车辆进出库管理系统助力物流仓储实现更快的效率,能够高效地管理车辆进出库秩序,降低仓储物流的运营成本。该系统不仅可以用在物流仓储中,还可以用在航空、火车、水运等运输方式的转场运输上,比如机场、港口等实际应用中。同时,在安全和功能方面还有需要增强的地方,在后台管理系统中应展示更详细的数据以及美化样式,从而提升用户体验度。