基于Jetson平台搭载嵌入式GPU的智能服务机器人视觉系统软件总体设计

发布时间:2026/7/23 20:07:38
基于Jetson平台搭载嵌入式GPU的智能服务机器人视觉系统软件总体设计 一、引言随着科学技术的快速发展和人们生活水平的不断提高人们对服务机器人的需求正日益增加。目前服务机器人已逐渐在医疗护理、家庭清洁、娱乐教育等多个领域内发挥重要作用能够有效地帮助人们从枯燥繁琐的日常工作中解放出来。本论文针对家庭和办公场所的应用场景采用英伟达的嵌入式GPU处理器Jetson TX2设计并实现了一款智能服务机器人视觉系统软件。该软件具有目标对象检测、人脸识别、语音识别、语音合成和双目测距等五项功能可以应用在各种智能服务机器人的视觉系统设计中具有良好的实际应用价值。二、软件总体设计2.1 需求分析本文的智能服务机器人视觉系统软件主要针对家庭和办公场景下的机器人应用进行设计设计目的是协助人们完成一些日常的事物。该软件设计涉及到了目标对象检测、人脸识别、人机语音交互和视觉测距等功能。在目标对象检测、人脸识别中涉及到了深度卷积神经网络算法视觉测距中涉及到了 OBR 特征点检测等算法算法的整体复杂度和计算量较大且所有功能都在嵌入式设备上完成对嵌入式处理器的性能要求较高。Jetson TX2 是英伟达公司推出的新一代嵌入式人工智能计算设备由英伟达 Pascal 架构驱动集成了深度学习功能和丰富的I/O接口且外形小巧、功率只有7.5瓦。 卓越的性能、强大的设计和简单的系统集成使得Jetson TX2非常适用于机器人、无人机、智能相机和便携式医疗设备等智能设备满足本文软件开发所需的基本硬件需求。2.1.1 软件功能分析(1) 目标对象检测功能目标对象检测功能需要实现检测和定位图像中的目标对象。目标对象检测需要检测指定的多类对象是否出现在图像中并指出对象的类别和对象在图像中的位置。(2) 人脸识别功能人脸识别功能需要识别检测到的人脸判断检测到人脸是否是人脸库中的人脸。若是人脸库中的人脸则需指出人脸对应的姓名。(3) 人机交互功能人机交互功能要通过语音实现机器人与人的交流该功能中要对交互对象的语音进行识别和理解理解交互对象的语音后执行语音中包含的指令。在交互中将交互信息合成为语音形式传递给交互对象。(4) 测距功能测距功能用来测量指定目标对象到机器人的距离将采用双目测距实现。该功能中结合了目标对象检测功能和人机交互功能通过人机交互功能指定需要测量的目标对象利用目标对象检测功能中得到的目标对象在左图像上的位置预测目标对象在右图像上成像区域提取这两个区域中的目标对象的特征并匹配最后完成测距。2.1.2 软件性能分析(1) 目标对象检测和人脸识别算法性能本论文中将采用深度卷积神经网络对目标对象进行检测和识别。深度卷积神经网络有很多卷积运算和矩阵运算卷积运算和矩阵运算的计算量非常大但是各个运算之间没有相互依赖关系因此可以采用并行计算来提高深度卷积神经网络的计算效率。Jetson TX2开发平台拥有256核的Pascal GPU和支持CUDA框架软件库利用CUDA技术就可以将 256个核串连起来使265个核成为线程处理器去解决并行计算的问题同时每个核间能够交换、同步和共享数据。(2) 语音识别性能智能服务机器人视觉系统软件中涉及到了语音识别功能需要做到识别准确且速度快。由于目标对象检测和人脸识别算法占据了Jetson TX2中大部分的资源本论文中将采用科大讯飞的在线语音识别接口。科大讯飞开放平台拥有领先的语音识别技术核心技术达到国际领先水平语音识别准确率已经超过 98%。Jetson TX2 开发平台中包含了 WiFi 模块使得机器人连接网络的同时移动不受限制。(3) 测距性能本论文中测距的方法与其他传统的匹配方法不同是利用目标对象检测功能得到目标对象位置的基础上进行特征的匹配。Jetson TX2的开发包JetPack中支持OpenCV4TegraOpenCV4Tegra 是基于标准 OpenCV 在 CPU 和 GPU 上的硬件加速版本包含了许多图像处理计算机视觉和机器学习的方法。2.2 软件系统框架设计2.2.1 硬件平台概述Jetson TX2 模块处理组件如图2-1所示Jetson TX2 模块包括以下处理组件(1) 256 核英伟达Pascal GPU。完全支持所有现代图形API统一着色器并支持GPU计算。支持与其他分立英伟达GPU相同的所有功能包括大量的计算API和CUDA在内的库。高度功耗优化可在嵌入式项目中实现最佳性能。(2) ARM Cortex-A57 MPCore(四核2.0GHz和 Denver2(双核2.0GHz)多处理器CPU。 两个CPU集群通过英伟达设计的高性能互连结构连接实现两个CPU集群的同时操作实现真正的异构多核环境。Denver2 CPU 集群针对单线程性能进行了优化ARM Cortex-A57 MPCore CPU 集群更适合多线程应用和更轻负载。(3) 高级高清视频编码器可以录制4K分辨率60fps超高清视频。支持H.265和H.264 BP/MP/HP/MVCVP9和VP8编码。(4) 高级高清视频解码器可以播放4K分辨率60fps超高清视频最高可达12位像素。支持H.265H.264VP9VP8 VC-1MPEG-2和MPEG-4视频标准。(5) 两个多模eDP/DP/HDMI输出和最多8个通道的MIPI-DSI输出。多行像素存储允许更高内存效率的缩放操作和像素提取。还提供硬件显示表面旋转以减少移动应用中的带宽。(5) 128 位存储器控制器128位DRAM接口支持LPDDR4Jetson TX2集成了8GB LPDDR4 和32GB eMMC。(6) 1.4Gpix/s 的先进图像信号处理ISP。(7) 音频处理引擎音频子系统通过多个接口为多声道音频提供硬件支持。Jetson TX 开发板包含如下接口和外围设备(1) HDMI 2.0最高支持分辨3840x216060Hz(2) WiFi最大传输速率867Mbps(3) USB3 接口和USB2接口(4) 蓝牙4.1最大传输速率3MB/s(5) 100M 网口(6) 双路CAN总线(7) SATASDcard 接口综上所述Jetson TX2 集成了嵌入式GPU可用于部署计算机视觉和深度学习同时又具备先进图像信号处理ISP和音频处理引擎基本满足本文软件开发所需的功能与性能需求故而本文选择Jetson TX2作为软件开发的平台。2.2.2 软件框架设计根据软件功能和性能分析同时结合Jetson TX2开发平台的特性智能服务机器人视觉系统软件总体框架设计主要由视觉检测模块、人机交互模块和视觉测距模块三大模块及其子模块组成软件框架如图2-2所示。视觉检测模块主要负责视频采集、目标对象检测和显示识别结果等处理环节。其中检测到的目标对象将发送到视觉测距模块用于视觉测距检测到的人脸将发送到人机交互模块用于人机交互。人机交互模块主要负责人脸识别、语音输入、语音识别、执行相关命令和语音合成等任务。将根据人脸识别的结果决定是否启动人机交互拿物品的命令会将物品的名称发送到视觉测距模块。视觉测距模块主要负责相机标定、图像校正、特征匹配和物品测距等处理任务其中需要测距物品从人机交互模块中获取测距的结果将发送到视觉检测模块用于显示。2.2.3 软件开发方案软件开发方案制定与过程如下(1) 搭建开发环境开发环境搭建包括Jetson TX2开发环境搭建和模型训练的服务器搭建软件开发环境搭建流程介绍详见下一节内容。Jetson TX2在开发前需要安装英伟达JetPack SDK英伟达JetPack SDK 是构建 AI应用程序的解决方案JetPack安装程序使用最新的操作系统映像刷新Jetson TX2为主机和Jetson TX2 安装开发工具并安装开发环境所需的库和API示例和文档。服务器搭建则需要搭建Darknet运行环境Darknet是用来训练YOLOv2网络。Darknet 是一个用C和CUDA编写的开源神经网络框架并支持CPU和GPU计算。(2) 视觉检测模块开发视觉检测模块主要基于深度卷积神经网络。首先将采集检测对象的图片制作成训练集拍摄检测对象的图片制作成测试集。接着针对本论文的识别要求修改神经网络。然后用训练集训练网络得到网络的权值并用测试集验证检测效果。最后利用 TensorRT 推理框架对网络进行优化加速。(3) 人机交互模块开发人机交互模块是通过语音的形式进行交互类似于人与人之间的交流。人机交互模块首先利用深度卷积神经网络对检测到的人脸进行识别若识别到人脸库中的人脸则启动语音交互。然后使用绿联USB外置声卡打开麦克风采集语音采集到的语音通过互联网上传至科大讯飞云服务器进行在线识别理解识别结果可得到相应的指令。最后根据交互对象的指令执行相关操作。在交互过程中将相关信息合成为语音与对象进行交互。(4) 视觉测距模块开发视觉测距模块通过双目测距对指定对象进行测距。双目测距需要对双目相机进行标定利用标定的数据矫正左右图像使图像能够满足双目测距的要求。然后提取两幅图像中对象的特征点匹配特征点就可计算视差值将视差值代入双目测距公式就能得到对象的距离。2.3 开发环境搭建2.3.1 硬件开发环境本文中软件运行在英伟达 Jetson TX2 上通过锐尔威视的双目摄像头 RER-720P2CAM 采集视频画面利用绿联USB外置声卡US205作为拓展口采集和播放音频数据。硬件平台及外接设备如图2-3、2-4、2-5所示各个硬件模块的特点与作用如表2-1所示基本流程包括双目摄像头采集左右图像并传输到 Jetson TX2Jetson TX2 通过YOLOv2网络对左图像进行处理。若识别到人脸则利用绿联USB外置声卡打开麦克风采集音频数据通过对音频数据的识别执行相关指令再利用绿联USB外置声卡打开扬声器播放合成的语音进行交互。若交互对象需要拿物品则需要利用左右图像进行测距。2.3.2 软件开发环境(1) JetPack 软件包安装Jetson TX2 开发板出厂时只安装了ubuntu14.04操作系统没有安装开发需要的环境。因此需要通过英伟达公司提供的JetPack开发工具包对Jetson TX2进行固件升级。本文中采用 JetPack3.2JetPack3.2 中包含了 ubuntu16.04 操作系统CUDA9.0 ToolkitcuDNN7.0 等。具体步骤如下① 在 ubuntu16.04 主机终端上下载 JetPack-L4T-3.2-linux-x64_b196.run并添加 JetPack-L4T-3.2-linux-x64_b196.run 的执行权限。② 在ubuntu16.04 主机终端运行JetPack-L4T-3.2-linux-x64_b196.run进入 JetPack L4T3.2 Components Manage 界面选择需要的组件并下载安装如图2-6所示。③ 设置Network Layout有 Device accesses Internet via router/switch 和 Device accesses Internet via host machine through setting up a new DHCP server configuration on host 两个选择 项本论文中选择前者要求主机和Jetson TX2在同一个网段上即在同一个路由器或者交换机上Jetson TX2升级过程中要求主机和Jetson TX2始终连接互联网。④ 用Micro USB连接Jetson TX2 和主机将Jetson TX2上电之后按住Recovery键不放三秒钟后再按下Reset键松开Recovery后Jetson TX2就进入了Recovery模式。然 后在主机端通过lsusb命令检查是否有Nvidia Corpration若存在则说明Jetson TX2和主机正确连接。⑤ JetPack 会升级Jetson TX2 的系统和安装开发工具。(2) TensorFlow 环境搭建本文中的深度学习网络将在TensorFlow 环境下运行因此将在Jetson TX2 上搭建 TensorFlow 环境。TensorFlow 是一个开源软件库由谷歌公司研发用于进行高性能数值计算。借助其灵活的架构可以轻松地将计算工作部署到多种平台和设备可为机器学习和深度学习提供强 力支持并且其灵活的数值计算核心广泛应用于许多其他科学领域。本文将在Jetson TX2 上搭建TensorFlow1.6需要在L4T28.2CUDA9.0 Toolkit and cuDNN 7.0 环境中编译安装具体步骤如下① 安装相关依赖。包括openjdk、autoconf、libtool、curl、zlib1g-dev 等。② 安装Bazel。需要从github下载并编译bazel-0.11.1。③ 安装TensorFlow。下载Tensorflow 源码导出版本1.6设置8GB的内存交换空间利用Bazel进行编译。④ 编译成功后会得到两个库libtensorflow_cc和libtensorflow_framework用于 C环境下的编译。⑤ 清除内存交换空间。(3) 模型训练服务器搭建本文采用深度卷积神经网络进行目标对象检测其训练过程计算量极大对处理器的性能要求极高。目前深度卷积神经网络的训练主要依赖于 GPU图形处理器。GPU 是一种特殊类型的处理器拥有数百甚至数千个计算核心经过专门优化能够并行处理海量计算任务。尽管 GPU 在游戏领域以 3D 渲染而闻名但其在运行和分析深度学习、机器学习算法方面同样表现出色。因此本论文在服务器端配置了英伟达公司生产的 GPU型号为 TITAN X。服务器端环境搭建步骤如下① 从英伟达官方网站下载与服务器操作系统及显卡型号相匹配的显卡驱动NVIDIA-Linux-x86_64-390.67.run、CUDA 9.0 和 cuDNN 7.0。② 为显卡驱动文件添加执行权限切换到 tty1 控制台并关闭 x-window 服务然后运行驱动安装程序等待安装完成。③ 驱动安装完成后启动 x-window 服务进入图形界面安装 CUDA 和 cuDNN。④ CUDA 和 cuDNN 安装完成后添加相应的环境变量进入 Darknet 文件夹并编译其中的源码。