APP下载

基于Linux的机器视觉系统的终端小型化设计

2019-01-17王文博

通信电源技术 2018年11期
关键词:下位小型化上位

王文博

(南京理工大学 泰州科技学院,江苏 泰州 225300)

0 引 言

机器视觉属于人工智能领域的前沿技术,它模拟了人的感知功能,通过传感器以及处理器来代替人眼的观察和人脑的判断,广泛应用于工业、军事、航空航天、医疗等领域。而传统意义上的机器视觉系统大多采用集数据采集、分析处理、控制执行功能于一体的设计模式,通过摄像头获取目标图像、视频信息,经过计算机处理后得到被测物体的形状、大小、颜色、位置信息等,以控制执行设备的动作。因此该系统需要处理的视频信号数据量庞大,必须用高性能计算机来提升处理能力,并叠加其他功能部件,导致机器视觉系统的整体体积和重量都比较大,不够灵活,移动稳定性差,机器功耗较大,电池续航时间也相对偏短,使用场合也受到较大的限制。为此结合当今云计算思路,有必要设计一种终端小型化机器视觉系统。

1 机器视觉系统终端小型化的主要原理

终端小型化机器视觉系统设计是将一体化的机器视觉系统拆分成三个部分,将原先负责数据分析处理的部分交由远程计算机完成,把数据采集和控制执行部分交由终端处理,网络通讯部分作为远程计算机和终端数据交流的桥梁。

2 终端小型化机器视觉系统的系统架构

终端小型化机器视觉系统由上位机(远程计算机)、下位机(小型化终端)以及网络通讯三个部分组成(见图1)。

图1 系统组成

2.1 上位机设计

独立出来的上位机完成数据处理工作,具体分为硬件和软件两部分进行设计。

2.1.1 硬件设计

机器视觉系统要对大量的图片和视频进行处理。处理时,图片就是一个多维数组,视觉算法就是对一个庞大的多维数组各元素之间的关系进行处理,视频可以看作无数图片的叠加,因此需要消耗更加庞大的内存资源和计算资源;为此只有使用高性能计算机才能担当此任。

高性能计算机配置上必须满足下列要求:

(1)具有Ryzen 1700及以上处理器;

(2)16GB及以上的内存;

(3)一块或者多块GTX1080及以上显卡;

(4)良好的散热系统。

2.2.2 软件设计

上位机软件由两个程序组成,一个实现数据处理,另一个实现上、下位机间的数据交换。两程序在内部相互协调,并与外部进行通讯。

数据处理程序部分(见图2)是利用python通过opencv3.0以及Tensorflow object detection api库开发的。

图2 数据处理程序

python3.5.2作为高层语言,将OPENCV3.0和Tensorflow object detection api结合,对视频中常见的物体进行识别,为此在上位机上要预先安装好opencv-python、CUDA、CUDNN环境。

在python3.5.2下使用VideoCapTrue类对远程嵌入式终端平台回传的视频进行读取,将每一帧拆解成图片,再进行预处理,作为Tensor输入给Tensorflow object detection api,将返回的图片显示到窗口上,不断的处理每一帧图像,构成实时识别的视频,将识别到的物体的各种信息格式化后写入DAT文件,供人机交互界面读取并将执行指令并返回下位机。

上、下位机间的数据交换通过一个人机交互界面(见图3)完成,该程序在上位机上利用Microsoft VisualStudio通过WindowsForm平台开发的窗体应用程序,程序代码基于C#语言,实现上位机对下位机的控制。

图3 人机交互界面

人机交互界面可以根据需求设置相应的手动控制按钮,以方便对下位机设备的直接控制,也可以自动读取视觉处理软件生成的DAT文件,获取逻辑信息,并自动对下位机需要执行的任务进行调度控制。软件通讯(见图4)时首先通过调用系统API开启套接字监听服务,然后根据客户端的IP以及端口号进行连接,每检测到一个新的连接建立一个新的线程继续监听,原有线程与客户端保持连接。数据交换时使用Encoding.UTF8.GetBytes()方法对其进行编码,下位机下线时关闭本地套接字节约上位机资源。

2.2 下位机设计

分离出来的下位机主要完成数据采集和控制执行功能,实现视频的上传和对GPIO的控制。这是实现机器视觉终端小型化的重点内容。

2.2.1 硬件设计

下位机在整个系统中属于输入/输出端,此部分只需要完成数据的上传(较大数据吞吐量)、逻辑数据的接收和GPIO口的控制,不需要完成数据的逻辑分析,因此本系统选用AR9331作为下位机。此芯片拥有的400 Mhz CPU,64MB DDR2 RAM和8MB ROM内存,可以很好地运行OPENWRT系统及其上的TCP通讯、GPIO控制软件;150 Mbps的WIFI最高传输速度也可以很好地完成数据的传输和逻辑信息的接收,具有小体积、低功耗的特点。

图4 通讯过程

2.2.2 软件设计

在AR9331芯片上烧写OPENWRT系统,使用UVC(USB Video Class)免驱动摄像头与之连接,安装mjpeg streamer工具并在SHELL下执行如下命令:mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640X480 -f 30" -o "output_http.so -p 8082 -w /www/camwww"。完成了摄像头的设置,上位机就可以通过下位机的IP地址和端口号接收到回传的视频了。使用C++编写带有GPIO控制的TCP客户端软件并使用GCC编译,编译完成后运行即建立完成上下位机之间的TCP连接,通过上位机IP地址和程序设置的端口号,下位机可以接收上位机返回的数据,并对此做出响应,通过GPIO控制外围设备。为了方便使用,可以设置mjpeg streamer工具以及TCP客户端开机启动,至此下位机软件编写完成。

2.3 网络通讯设计

网络通讯是上下位机之间数据交换的桥梁,其性能的稳定、可靠是此系统能否正常工作的关键。

2.3.1 硬件设计

整个系统由分体式硬件组成,上、下位机之间通过WIFI进行数据交换,下位机发送实时数据到上位机,上位机发送实时分析出的逻辑数据到下位机,所以对网络的稳定性、传输速率具有较高的要求。由于本系统需要实现远距离的远程通讯,所以要求上位机以及下位机同时至少具有双向10 Mbps以上带宽、100 ms以下延迟、0%丢包率的公网IP环境。

2.3.2 软件设计

由于上、下位机的分体式结构设计,因此上、下位机的数据交流要通过TCP协议来实现(见图5), 网络部分的设置就显得尤为重要。上位机部分需要使用运营商提供的固定IP地址,并且确保80端口的畅通。下位机部分同样需要使用运营商提供的固定IP地址,并且确保8081、8082两个端口的畅通,以实现视频数据到上位机的传输、上位机逻辑数据到下位机的传输。若上、下位机端不能同时处于一个局域网内部,就需要在路由器上设置端口映射,将内网的上位机(下位机)以相同的端口号映射到外网以备下位机(上位机)访问。

3 以家庭服务机器人为例的应用测试

为了测试该视觉系统终端小型化的功能,选取了一台家庭服务机器人进行改造。改造后的机器人采用此终端小型化设计,将原来高性能计算机与机器人进行分离改造(见图6),其体积和重量大大减小,机器人移动的灵活性得到增强,电池的续航时间显著增加。经过测试,此终端小型化机器视觉系统工作正常,完全可实现原来所有的功能。

4 结束语

基于linux系统的机器视觉系统的终端小型化设计,所有软件均由开源软件库实现,并且预留了很多对外接口,可以方便地实现后期的软件升级。硬件部分采用通用芯片组设计,下位机可以运行于大多数ARM架构芯片上,上位机也可以运行于绝大多数X86架构计算机上,具有良好的可移植性。现实中可以通过将此系统和现有产品进行整合,推广到搜索救援、智能交通和智能玩具等领域,具有广阔的发展空间和应用前景。

图5 软件通讯过程

图6 家庭服务机器人

猜你喜欢

下位小型化上位
提高火力发电厂自动电压控制系统投入率的措施
发射机房监控系统之下位机
要攻城略地关键要有好筹码,这匹水产动保“黑马”如何能迅速上位?
特斯拉 风云之老阿姨上位
基于ZigBee和VC上位机的教室智能监测管理系统
围观党“下位”,吐槽帝“登基”
CAN总线并发通信时下位机应用软件设计
家庭规模小型化提前到来
未来汽油机的小型化
Fiat公司极度小型化的2缸汽油机