基于Linux 的矿用搜救机器人音视频系统
2020-03-16李文峰白俊涛
李文峰,白俊涛
(西安科技大学 通信与信息工程学院,陕西 西安 710054)
矿用搜救机器人主要用于矿难发生后,先行进入井下事故现场进行灾害情况探测和现场数据采集,保障救援队员生命安全并为制定救援计划提供依据。国内外主要集中于救援机器人移动平台、控制系统及通信方面的研究,在气体参数采集、音视频感知方面研究较少。音视频感知大多采用以红外LED 阵列充当补光光源的监控摄像头外部添加笨重隔爆外壳来满足低照度视频采集和防爆要求。该方案操作起来简单,但采用众多LED 组成的阵列补光以及隔爆形式防爆使得音视频系统整体功耗上升、体积增大、质量增加(3~20 kg)、费用高[1],直接导致搜救机器人行走困难,同等电池容量下工作时长变短,而且难以进行二次开发。考虑到使用2 个红外光源功率较小以及本质安全设备具有安全性好、不用隔爆外壳及其他复杂结构、质量轻、尺寸小、成本低等优点,采用模块化思想,利用本质安全与嵌入式相关技术,以Cortex-A8 微处理器S5PV210 为核心设计了一款搭载于搜救机器人本体之上的本安型低照度音视频系统,用于井下高清音视频数据的采集、压缩、存储、播放以及传输。
1 系统总体方案
以重庆多朋科技有限公司的ZRK 矿用机器人为载体进行了音视频系统的开发,系统主要包括主处理器模块、低照度视频采集模块、音频采集模块、存储显示模块以及通信接口模块。
系统工作流程:USB 摄像头和拾音器产生模拟视音频信号,分别经过TVP5150 和WM8960 视音频编解码芯片生成符合ITU-BT656 标准的数字视频信号和I2S 准的数字音频信号,再经过S5PV210 处理器进行压缩编码后获得 H.264 视频数据流和WAV 音频数据流,压缩后的音视频数据用于本地存储以及通过网口发送至机器人,经由机器人更为强大的通信模块传送至远端。
2 系统硬件
矿用搜救机器人视音频系统包含主控模块和外围模块。主控模块是S5PV210 ARM 控制平台[2];外围模块包括视频模块、音频模块、存储与显示模块、通信接口模块和本安电源适配模块。其中本安电源适配模块为各芯片提供相应电压;视频模块用于低照度环境视频的采集、解码、压缩与传输;音频模块用于声音的采集、编码、播放与传输;存储模块用于存储音视频数据;通信接口模块实现与机器人本体之间的数据传输以及系统调试。
2.1 电源适配模块
系统采用机器人本体提供的6~8.4 V 电源供电,由于该系统内部资源主要用到5、3.3 V 电压,因此需要通过电压转换电路实现降压。本安电源适配模块采用DC/DC 变换器的方案设计,利用TPS62143、TPS621422 种 芯 片 实 现 DC-DC 5 V 和3.3 V 电源转换。
基于TPS62143 设计的电压转换电路如图1,输入电压 VDDBAT 的范围为 6~8.4 V,C43为输入滤波电容,C45连接至SS/TR 引脚是实现芯片的软启动功能,通过调节C45的容值大小来改变软启动时间;通过FSW 引脚进行工作频率选择。由于Buck 变换器的工作频率降低,效率得到提高,但电感值增加,对本质安全设计不利,因此将FSW 引脚拉低[3-4],芯片工作在2.5 MHz 的频率,输出滤波电容C44为22 μF,电感大小为 2.2 μH,满足本质安全要求。
2.2 视频模块
视频模块由 1/2.7 inch CMOS USB 摄像头、2 个850 nm 红外LED 辅助光源以及BH1750 光强传感器组成。BH1750 光照度采集电路与处理器相连,通过I2C 总线将采集到的光照强度数据传送给处理器。考虑到电压驱动型电路电压微弱变化会引起电流的巨变,严重影响半导体二极管使用寿命,所以采用。PT4115 恒流源驱动电路[5]用于驱动补光光源,
处理器根据获取的光照强度数据来改变自身输出PWM 波的占空比来改变恒流源驱动电路的输出电流值,从而改变补光光源功率。照度采集和补光电路原理图如图2。
图1 TPS62143 电压转换原理Fig.1 TPS62143 voltage conversion principle
图2 照度采集和补光电路原理图Fig.2 Schematic diagram of illumination acquisition and lighting circuit
摄像头产生PAL 格式的模拟视频信号,经过TVP5150 视音频编解码芯片生成符合ITU-BT656 标准 的 8 位 4:2:2 YUV 数 字 视 频 信 号 , 再 经 过S5PV210 处理器内部的MFC 硬件编解码器进行压缩编码后获得H.264 视频数据流,压缩后的音视频数据用于本地存储以及传送至远端,通过I2C 总线对视频解码芯片进行配置,完成对输出数据格式、对比度、饱和度等参数选择。视频采集方案如图3。
2.3 音频模块
音频模块采用“MIC+音频编解码器+扬声器”的方法实现音频的采集和播放。以WM8960 音频编解码芯片为核心设计音频电路,I2S 总线用于编码后数据传输,I2 C 总线用于音频控制。WM8960 音频编解码芯片内置24 bit 的A/D 和D/A 转换器实现高精度数模和模数转换,且WM8960 内置的D 类功率放大器,比一般的A、B 类功放效率提高40%[6],具有体积小、信噪比高的优点。设计采用灵敏度为-52 dB 的电容式驻极体作为声电转换器件和8 Ω、1 W的喇叭电声转换器件,实现声电和电声的转换。210_Xi2sCDCLK0、210_Xi2sSCLK0、210_Xi2LRCK0、210_Xi2sSDO0_0 和 210_Xi2sSDI0 构成 I2S 接口,用于音频信号的传输,210_I2C_SDA0 和210_I2C_SCL0构成I2C 总线接口用于控制信号的传输,通过I2C总线配置内部的相关寄存器进而控制音频音量、关闭内部未使用的模块电源等操作。
图3 视频采集方案Fig.3 Video capture solution
2.4 通信接口模块
通信接口模块负责音视频及其他数据的传输,系统采用有线/无线的方式实现通信。有线通信中S5PV210 处理器通过快速以太网 MAC 控制器DM9000 将数据发送给网络变压器,再通过RJ45 将数据转发出去;无线通信中直接通过LBWA18HEPZ无线模块进行数据的收发。
DM9000 网络控制器,CMD 引脚与 S5PV210 的ADDR2 连接,决定传输的是数据还是指令(为低时数据总线上传输地址信号,为高时传输数据信号)。CS 是片选信号,与 S5PV210 的 CSn1 连接,CSn1 的基地址为:0x88000000,而DM9000 的IO 基地址为0x300,结合CMD 引脚的连接情况,因此DM9000 的数据地址接口为0x88000304,命令接口地址为0x88000300,S5PV210 通过数据口和地址口,并结合读写信号线可以对DM9000 进行读写操作。HR911105 是自带网络变压器的RJ45 接口,其主要作用是信号传输、阻抗匹配、波形修复、信号杂波抑制和电压隔离等。
2.5 存储和显示模块
存储模块采用闪迪公司生产的存储密度较高的32G TF 卡,系统图像传感器采集的640×480 分辨率的彩色画面,其每帧图像大小为4 KB,按每秒25 帧计算,2 路视频则每小时需要720 MB 的空间,连续工作4 h,需要3 GB 的空间,所选内存足够存储机器人连续工作4 h 所产生的数据。
显示器件是功率消耗较大的器件,选择低功耗的显示器件可以降低整体功耗。TFT 显示屏由于其低功耗、体积小、可触摸操控等优点成为可移动设备的首选方案,系统显示模块采用统宝光电设计生产的TD035STEE1 LTPS TFT-LCD 显示屏,屏幕尺寸大小为3.5 英寸、分辨率为640×480,采用 6S1P WLED 作为背光源,功耗仅为430 mW。
3 系统软件
3.1 嵌入式操作系统和硬件驱动程序
1)嵌入式操作系统。系统采用内核为Linux3.0.8的Linux 操作系统。Linux 因具开源、免费、内核可裁剪、资源占用少、可移植、稳定性高、安全性强等特点而被广泛应用于嵌入式设计开发当中[7-8]。
2)硬件驱动程序。选用的Linux 的内核中带有CMOS 传感器的 USB 控制器 OV511 和 Framebuffer设备的驱动程序,可以缩短开发周期。在Linux 内核基础上进行BH1750、WM8960、无线网卡、显示屏等外为设备的驱动移植与修改,并进行内核裁剪。
3.2 应用软件
1)视频采集。系统视频采集应用层程序的开发主要利用Video4linux2(V4L2)驱动框架为上层应用提供的一套通用的API 接口函数来访问底层视频设备[9]。V4L2 对上层应用屏蔽了底层硬件的差异,用户空间对视频设备的操作只需要通过ioctl()、open()等函数就可以实现。利用V4L2 完成USB 摄像头图像采集应用程序,打开设备,获取视频设备能力并设置参数,申请帧缓冲,申请物理内存,开始采集,结束并关闭设备。视频采集流程图如图4。
2)视频播放。视频显示模块应用层程序利用Framebuffer(帧缓冲)接口来实现视频显示。Framebuffer 是Linux 系统为显示设备提供的1 个接口[10],用于从包含完整的帧数据的1 个内存缓冲区中来驱动1 个视频显示设备,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,供用户态进程实现直接写屏的抽象对象,可以被看做是显存的1 个映像,用户只需要通过应用程序直接读写Framebuffer 内容就可以完成对屏幕的显示控制。视频播放流程图如图5。
图4 视频采集流程图Fig.4 Video capture flow chart
图5 视频播放流程图Fig.5 Video playback flow chart
3)音频采集与编码。音频采集利用ALSA 声卡体系所提供的API 函数实现,它是高级的Linux 音频系统接口,其拥有的alsa-lib 开发库为应用层程序的设计提供了方便。利用接口采集来的是模拟音频信号,经过WM8960 芯片转化后,成为需要的数字音频原始信息,清晰度较高。音频采集流程分4 步:打开1 个录音接口,设置音频流的硬件参数,从麦克风读取数据,关闭录音接口。从接口读出来的RAW格式数据由于数据量较大,所以采用G711 算法进行压缩。
4)TCP 数据通信。考虑到获取连续、稳定、可靠的音视频数据对井下救援工作的重要性,系统选用TCP 协议来传输经过压缩的音视频数据。TCP 是一种提供面向连接的、可靠的字节流服务的传输控制协议[11-12],收发双方需要经过3 次“握手”成功建立1个TCP 连接后,才能进行数据流的传输。系统与机器人本体路由器之间使用工业以太网作为主连接,WiFi 做为备用连接,设置系统与机器人路由器在同一网段的IP 地址,进行音视频的实时传输,使数据传输的稳定性和可靠性得到了保障。
4 结 语
设计了一款基于嵌入式Linux 的矿用搜救机器人音视频系统,系统通过红外LED 补光实现了井下低照度环境下高清音视频的采集,并经过压缩编码进行本地存储和传送。介绍了系统工作流程和软硬件设计,系统采用了成熟的嵌入式平台和较少的补光光源,利用了linux 可裁剪性,具有成本低、构造简单、方便维护、通用性强、可二次开发等特点。