基于树莓派的防疫辅助智能小车的设计
2023-05-30陈欢柯春艳
陈欢 柯春艳
关键词:RTMP;树莓派;C/S架构;流媒体服务
中图分类号:TP368 文献标识码:A
文章编号:1009-3044(2023)03-0012-04
1 引言
自2019年末开始,做好疫情防控工作已经在人们的生活中缺一不可了。为了更好地进行疫情防控工作,可以对人流量进出多的地方进行实时监控和消杀作业。因此能做一个监控和消杀两者结合的智能设计,不仅能实时监控人们佩戴口罩的情况,还能对疫情防控区域进行消杀作业。节省人力的同时,在疫情防控方面的效果也能达到最优化。
随着网络的快速发展,流媒体服务也快速崛起,可以通过客户端例如手机或者PC电脑随时点播服务器端的大量媒体资源,为生活带来了极大的便捷。将流媒体服务[1]和可移动式小车结合在一起组成的智能防疫辅助的设计,不仅在疫情监控方面能达到良好的效果,在疫情防控区域所在的环境下也具有很大的优势。树莓派嵌入式开发板能将两者良好地结合起来[2],它能完成复杂的任务与调度,支持更上层的应用和开发,可以用作数据采集、小型控制、物联网网关和边缘计算机应用等方面,在物联网应用研究上价值深远。
2 总体方案设计
为了实现对疫情防控区域内人流的口罩监控和自动巡逻消杀的功能,利用树莓派4代B型搭建了一个简易的系统。系统主要由视频处理前端、FFmpeg+nginx+RTMP流媒体搭建[2]、云服务器、用户、语音播报和巡逻消杀几部分组成,系统架构图如图1所示。树莓派将摄像头采集到的视频内容进行图像识别处理,采用FFmpeg流媒体音视频处理方法对视频进行编码封装。为了让用户能够观测到所监控疫情防控区域的实时画面采用了C/S架构,关于流媒体的传输协议本设计使用的是RTMP协议,将识别处理后的视频推送至RTMP云服务器上,用户可以通过登录客户端来访问云服务器的地址查看所监控疫情防控区域的视频,同时树莓派本地对检测到没有佩戴口罩的情况进行语音播报提示。在实现了监控功能后,小车也可以切换至地面消杀作业模式,通过利用超声波在较为平坦的地面上进行智能避障完成自动巡逻,同时对该地域喷洒消毒液完成消毒工作。
3 硬件设计
本设计硬件主要包括树莓派4代B型嵌入式开发板、视频图像采集模块和自动避障、消杀模块三部分组成。树莓派4代B型开发板是整个系统的核心模块,一方面需要对采集到的视频进行图像识别处理完成口罩检测的功能;另一方面需要搭建支持流媒体的服务器对处理后的视频流进行编码推送。视频采集模块则是摄像头通过USB接口和树莓派4代B型开发板直接相连,从而完成视频图像采集。自动避障和消杀模块是利用超声波传感器和水泵搭配树莓派4代B型开发板的GPIO口进行工作。硬件结构框图如图2所示。
3.1 核心控制模块
树莓派是一款小型嵌入式开发板,因其能搭载基于Linux的树莓派Debian系统,也被称为微型电脑,扩展性强,开放性好。本設计采用的是树莓派4代B型开发板,它具有多个USB接口多个以太网接口,还具备HDMI高清视频输出接口可以直接连接屏幕进入到操作系统界面,具备所有PC机的基本功能,功能强大。相较于树莓派3代B+型开发板,它拥有更好的CPU构建,采用的是BCM2711型号,包含了性能更好的核散热器,时钟频率更精准的同时能更准确地监控芯片的温度,同时它的宽带吞吐量也是树莓派3代B+的五倍,最大可接近千兆。硬件整体各种性能完善,核心运行速度快,优点非常明显。
3.2 视频采集模块
在本设计中视频图像采集模块直接用的USB免驱动直插式摄像头,能够进行AD智能自动对焦,画面清晰稳定,同时对人脸的捕捉更为精准。内置8米全指向吸音降噪麦克风,拥有720万像素和超大广角,能够上下120度旋转镜头,不仅能呈现出高清画质,还能很容易在疫情防控区域里找到适合的监控角度。这款摄像头性价比很高,和树莓派的Raspbian嵌入式系统兼容性强,对于输出的画面也很流畅清晰。
3.3 避障消杀模块
对于小车的智能避障模块本设计采用了HCSR04超声波传感器来测量距离[3],用其来控制电机。它能感测到的距离范围为2cm-4m,它能测量的最大精度为3mm,对于本设计来说已经绰绰有余。超声波传感器是由超声波发射器、超声波接收器和控制电路三部分组成,支持电压是5V,电流能达到15mA,是一个集成度良好的传感器模块,体积小价格便宜,在市场上以及很多测距项目中经常见其身影。对于消杀模块本设计采用的是微型水泵搭配继电器一块儿来使用,水泵的工作电压范围在3.5~12V,为了让水泵正常工作就加了一个继电器和6V的外接电源单独给其供电,另外再添加一个喷头,就能达到很好的喷水效果。这种小型水泵不仅可以用作喷洒消毒水应用在医疗辅助领域,而且在智能农业灌溉系统上也是很常见的。
超声波模块的TRIG口和ECHO口分别连接的是树莓派23号和24号GPIO引脚口,继电器的信号触发端连接树莓派22号GPIO引脚口,继电器的VCC 和GND则分别连接树莓派的5V和GND GPIO引脚口。而水泵的正极连接到继电器的常开端,负极连接到电源负极,继电器的公共端则连接到电源正极。主要的电路连接示意图如图3所示。
4 软件设计
为了实现口罩检测以及视频监控的功能,软件设计是它们的核心。这里包括了如何对采集到的视频图像进行检测处理,即如何选择人脸识别的核心网络模型能达到最好的效果,能让口罩检测的准确率能保证的同时让视频流每秒传送的帧的数量达到能传输的级别。在此之外,还有流媒体服务器的搭建,能让树莓派和云服务器之间建立联系,从而完成视频图像的采集和传输。同时,对于小车的软件控制主要是对直流电机进行PWM输入来控制它的运动,同时需要搭配超声波传感器模块来对其巡逻路线做一个固定。在此基础上,还会加一个定时喷洒消毒水的程序,主要是对继电器的输入信号引脚进行高低电平的控制,逻辑也比较简单。本设计采用的核心控制器是基于ARM Cortex-A72,树莓派的官网上能下载到基于树莓派的Linux系统,安装简单,操作易懂,与用户的交互性比其他的Linux系统要强很多,优点很多,此处不再过多赘述。
4.1 口罩检测
口罩检测主要分为两部分来执行,一是通过选择适合的人脸检测的深度学习网络模型对摄像头采集到的人脸图像进行人脸检测处理,判断其是否是一张人脸;二是通过对检测后的人脸进行覆盖面积运算来确认其是否戴了口罩。二者均能实时将相应的检测结果显示在屏幕上,能让用户实时观测到检测结果。对于选择人脸识别的深度学习网络模型也做了很多的测试,最开始使用的是深度神经网络DNN 模型,它是一个典型的感知机模型,拥有多个输入但只有一个输出的网络模型,只能用于二元分类,非常符合本设计的要求,判断的结果只有是人脸和非人脸两种。但是由于它的网络算法过于复杂,导致图像检测起来处理速度特别慢,从而影响我们的传输效果,传输帧率特别低。因而又选择了Harr算法[4]来处理采集到的视频图像,它主要是对边缘特征、对角线特征、中心特征和线性特征,多个特征联合进行图像检测处理的。它在CPU上几乎是实时工作的,处理速度很快,能达到传输帧率的要求,但其可调整性很弱,但在本设计中能满足运行要求。除此之外,还尝试过Lbp算法来对图像进行处理,虽然处理运行速度非常快,但对光线和方向信息要求非常高,所以它在处理效果上也并不理想,所以就舍弃了,最终我们在本设计还是选择了Harr算法来进行人脸检测。DNN、Harr、Lbp算法测试对比结果如图4人脸检测模型分析所示。在此说明以上网络模型皆是采用已训练好的网络模型来对采集到的人脸图像进行检测的。
4.2 流媒体服务器监控
流媒体的意思是将连续的音频媒体数据经压缩处理后,通过网络进行分段式发送媒体数据,在网络上实时传输音视频以供客户查看的一种技术和过程,经过了这样处理后的音视频数据包以流的形式进行发送。相较于传统的查看媒体的方式,它不需要把整条音视频下载完毕后才能观看,非常具有实时性,方便快捷。在如今网络快速发展的大环境下,流媒体可以运用到很多场景中,例如医疗、军事、安全和娱乐等方面,现如今大热的直播行业就是个很典型的例子。本设计采用FFmpeg视频服务器,将USB摄像头采集到的视频图像转为视频流,同时采用RTMP协议[5]将获取到并处理后的视频流发送出去。为了不让视频流的传输查看拘于同一局域网之内,我们在此基础上添加了云服务器和nginx反向代理web服务器来作为中间桥梁,让服务器也参与流媒体的搭建之中,从而让我们任何一个网段都可以通过登录客户端来访问服务器地址查看监控视频。
在树莓派4代B型开发板上支持搭建流媒体服务的协议获取USB摄像头采集的图像,并以流的形式将捕获的图像进行口罩检测处理,然后推送至云服务器,整体搭建使用过程如下:
(1) 在树莓派上的Respbian pi系统终端上安装所需要的依赖sudo apt-get install build-essential libp?cre3 libpcre3-dev libssl-dev。
(2) 分别下载nginx和rtmp到树莓派的某一路径下,并将两个包都解压到同一个目录里;
(3) 进入安装nginx 目录下,添加with-http_ssl_module 模块,并进行编译,分别依次执行以下三个命令:
①/configure --with-http_ssl_module --addmodule=../nginx-rtmp-module-master
②make
③sudo make install
(4) 执行sudo nano /usr/local/nginx/conf/nginx.conf修改nginx配置的文件,包括端口号,传输格式和方式等。
(5) 启动nginx和rtmp的流媒体服务器,执行以下命令:
sudo /usr/local/nginx/sbin/nginx
(6) 安装FFmpeg,执行以下命令:
sudo apt install ffmpeg
(7) 进行视频流推流,然后再启动nginx+ffmpeg视频流服务器,推流视频的格式为flv,利用程序将视频流传输至云服务器,分别依次执行以下命令:
①sudo /usr/local/nginx/sbin/nginx
②ffmpeg -ss -i /dev/video0 -f flvrtmp://树莓派IP地址/live/livestream
(8) 客户端在PC电脑上安装VLC视频播放软件,进入软件后顺次点击“媒体”和“打开网络串流”,网络URL输入:rtmp://云服务器IP地址/live/a接收相应的视频流。
启用流媒体服务器在此用到了两个很重要的组件,分别是nginx和FFmpeg。nginx是一个性能比较高的HTTP和反向代理web服务器,而FFmpeg是一个非常好的音视频获取方案,再加上RTMP协议,它们三能组合搭建一个功能比较完备的支持流媒体的服务器。具体的流媒体传输流程图如图5所示。
4.3 小车控制和定时消杀
本设计采用了L298N驱动来驱动电机,L298N的输入用PWM脉宽调制来调整电机运转的速度,通过对速度和时间的测试结果来固定小车巡逻的路线。至于小车避障功能,我们首先需要分别获取到发出超声波和接收到超声波时的时间,再对其进行时间差计算,通过公式计算从而获取距离,最后通过在代码里设置距离阈值来完成超声波避障功能。超声波测距公式如公式(1) 所示。而本设计的消杀功能只需要控制继电器的控制引脚输入端的电平,高电平则水泵运作,低电平时水泵停止运作。
小车控制部分最重要的是PWM脉宽调制的工作原理。它主要是通过调整高电平的占空比大小来控制输入,我们通过这个原理便能控制电机的转速,高电平占空比给的低时转速就慢,反之,给的高时转速就快,因而本设计通过控制PWM也就能让小车进行左转和右转,再搭配上时间给的持续时长的控制就能固定小车的巡逻路线了。
5 测试与结论
5.1 功能测试
整体设计完成之后,需要分为两个部分来进行测试。
(1) 首先是口罩检测模式时,我们在给设計上电后进入测试,在给树莓派连上网络后,执行相应的程序,整个模块便开始运行。首先是树莓派本地在开启视频流服务器后进行实时图像的采集、处理和传输,树莓派本地测试结果如图6所示。客户端电脑VLC软件网络流媒体输入rtmp://180.76.xxxxx/live/a,客户端测试结果如图7所示。其中180.76.xxxxx是云服务器的地址,live表示实时视频流。
(2) 巡逻消杀模式时,将视频采集用到的摄像头从树莓派上拔掉,给小车整体上电,执行程序,小车开始运行。消毒水喷洒测试结果如图8所示。
5.2 结论
防疫辅助机器人,通过人脸检测技术、实时监控技术和嵌入式开发的应用,实现了机器人巡逻执行消杀作业以及实时监控场所人们是否佩戴口罩的功能。此外,任何一个客户端都可以通过访问服务器地址来调取场所实时监控画面,查看当前场所人们佩戴口罩的情况。关于外形设计和价格方面,体积也很小巧方便,成本低廉,集成度高,充分展现了物联网技术的灵活性和多功能性。产品不仅可以应用于医院,还可以应用于学校、商场等人流量密集,需要每天进行场所消杀的地方,充分体现了本设计的灵活性和适用性。