| 机器人远程点云分割框架设计与实现 |
随着3D点云采集设备的普及,越来越多的机器人采集点云数据,对点云进行分割来获得更加精确的环境信息[1]。随着深度学习[2]的发展,主流的点云分割算法通常采用深度神经网络来提升分割精度[3]。然而,机器人运算能力有限,在机器人端运行深度学习框架无法保证点云分割的效率,同时也影响机器人对其他任务的处理。目前通信技术快速发展,网络带宽日益提升[4],可以把分割算法放到服务器端,机器人端负责调用。主流的RESTful框架对传输控制协议(transmission control protocol, TCP)数据连接利用率低,带宽消耗高。为此,本文设计一种基于远程过程调用(remote procedure call, RPC)的点云远程分割框架,在节省机器人端运算资源的同时,也保障了点云分割的实时性。
1 系统设计和实现 1.1 系统框架如图 1所示,系统由服务器端和机器人端两部分组成。服务器端包括点云分割算法、RPC[5]以及数据库模块。机器人端包括数据采集、RPC模块以及运动控制模块。服务器和机器人的过程调用基于g RPC框架,服务器通过Python实现点云分割算法,可以让机器人端像调用本地方法一样调用服务器端算法。具体流程为机器人端采集点云数据之后,把数据转成numpy数组,调用服务端的算法获取分割结果。服务端接收点云数据之后计算各个点的类别返回给机器人端,同时把分割结果存到数据库中。
![]() |
| 图 1 系统框架 Fig.1 System Framework |
1.2 系统开发环境
目前主流的深度学习环境使用Ubuntu和Python系统,考虑到配置的灵活性和方便性,可进行如下配置。具体开发环境:操作系统为Ubuntu 16.04;服务器端编程语言选择Python;深度学习框架选择Tensor Flow[6]; RPC框架选择g RPC;数据库选择My SQL[7];开发工具为Py Charm。
1.3 服务器端服务器端是远程点云分割的核心,由数据处理、序列化、通信和数据库模块组成。
1)数据处理模块:采用Point Net++网络对点云分割[8]。首先对数据进行最远点采样,每次选择距离已选点集中最远的一个点。该方法一方面减少了点云处理数量,另一方面也保证了采样能够覆盖空间所有点,以避免稀疏点被遗漏。然后根据欧氏距离对点云聚类,计算每个类别局部的特征并组合,得到各个类的点云特征。最后进行点采样,计算原始点云中每个点所属的类别。
2)序列化模块:采用了谷歌的Protocol Buffers序列化框架把点云转成适合网络传输的二进制格式[9],和常用的XML(extensible markuo language)和JSON(Javs Cript object notation)相比,Protocol Buffers把数据转成二进制而非文本,因此序列化得到的目标文件在空间利用上占有优势,而且序列化的速度更快。
3)通信模块:采用HTTP/2进行通信。如图 2所示,HTTP/2支持多路复用,可以在一个TCP连接上发送多个HTTP请求而不会被阻塞,从而提升服务端响应能力。同时HTTP/2还支持首部压缩,可以进一步减少网络传输过程中的带宽消耗[10]。通信具体流程为:服务器端创建线程池,设置端口号之后服务器监听端口,等待机器人端的连接。服务器端对点云进行分割并把结果返回给机器人端。
![]() |
| 图 2 HTTP/2多路复用 Fig.2 HTTP/2 Multiplexing |
4)数据库模块:采用My SQL数据库来保存数据。服务器处理完一个请求之后,把机器人端IP、请求时间、请求数据、分割结果、处理时间存入数据库,方便以后查询。
1.4 机器人端如图 3所示,机器人端主要负责采集点云,把点云数据转成Protocol Buffers格式,调用服务器上的分割算法获取分割结果并解析来完成对环境的感知。机器人端解析Protocol Buffers定义文件生成函数签名,可以像调用本地方法一样调用服务器端的算法,易于集成到现有框架中。在网络异常的情况下,机器人端报警并把数据保存到本地,等待网络恢复之后再次分割。
![]() |
| 图 3 机器人工作流程 Fig.3 Robotic Workflow |
2 实验分析
本文基于g RPC搭建的远程调用框架,机器人端无需考虑底层网络传输。目前主流方案是搭建RESTful接口,机器人把数据发给服务端之后,服务端返回分割结果[11],机器人端需要考虑数据发送接收的过程。本文分割算法采用Point Net++,分割精度达到84.5%,本文主要比较了两种方案的运行时间以及传输消耗流量。
2.1 运行时间如图 4所示,实验中机器人端朝服务器端发送100次请求,每次2 000个点,共计20万个点,统计从开始发送到解析完响应花费的时间。本文中利用Nginx进行反向代理,通过设置Nginx参数来控制传输带宽[12]。
![]() |
| 图 4 不同方案用时图 Fig.4 Time Chart for Different Scenarios |
由图 4可知,带宽从64 MB降低到2 MB时,g RPC方案用时从2.558 s缓慢上升到2.842 s, RESTful方案用时从7.994 s上升到16.394 s。在带宽小于2 MB时,相比于g RPC方案,RESTful方案用时快速上升。目前Wi Fi的速度约50 MB,因实现标准不同,主流的3 GB速度在10 MB以下,4 GB速度在100 MB以下。在网速较低的情况下,g RPC方案优势更明显。
2.2 流量消耗实验中机器人端朝服务器端发送点云数量不同的请求。实验统计了两种方案流量随请求数量的变化,如表 1所示。由表 1可知使用Protocol Buffers序列化的g RPC方案上传流量是RESTful方案的22%,大幅度节省了流量。
| 表 1 不同方案上传下载流量表 Tab.1 Upload and Download Traffic Table for Different Scenarios |
![]() |
3 结束语
本文设计了一个点云远程分割框架,解决了RESTful框架远程调用速度慢、实时性不足的问题。实验表明,该方法和常用的RESTful接口相比,在保障实时性的基础上,能大幅度减少流量消耗,从而提升了机器人点云分割的作业效率。并且在调用时间和流量消耗上都有明显优势,适用于对实时性要求较高的场景。
| [1] |
激光SLAM导航移动机器人定位算法研究综述[J]. 机器人技术与应用, 2019(5): 25-28. |
| [2] |
LeCun Y, Bengio Y, Hinton G. Deep Learning[J]. Nature, 2015, 521(7553): 436-444. DOI:10.1038/nature14539 |
| [3] |
Nguyen A, Le B. 3D Point Cloud Segmentation: A Survey[C]. 2013 6th IEEE conference on Robotics, Automation and Mechatronics(RAM), IEEE, Manila, Philippines, 2013.
|
| [4] |
全球5G发展现状概览[J]. 全球科技经济瞭望, 2014, 29(7): 59-67. |
| [5] |
基于空间上下文关联的车载点云聚类方法[J]. 测绘地理信息, 2019, 44(4): 116-121. |
| [6] |
TensorFlow实战[M]. 北京: 电子工业出版社, 2017.
|
| [7] |
施瓦茨. 高性能MySQL[M]. 王小东, 李军, 康建勋, 译. 北京: 电子工业出版社, 2010.
|
| [8] |
Qi C R, Yi L, Su H, et al. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space[J]. Advances in Neural Information Processing Systems, 2017, 5099-5108. |
| [9] |
基于Google Protocol Buffer的即时通讯系统设计[J]. 电子科技, 2017(1): 119-122. |
| [10] |
Gourley D, Totty B. HTTP权威指南[M]. 陈涓, 赵振平, 译. 北京: 人民邮电出版社, 2012.
|
| [11] |
Fielding R T, Taylor R N. Architectural Styles and the Design of Network-Based Software Architectures[D]. Irvine: University of California, 2000.
|
| [12] |
Nedelcu C. Nginx HTTP Server: Adopt Nginx for Your Web Applications to Make the Most of Your Infrastructure and Serve Pages Faster than Ever[M]. Birmingham, UK: Packt Publishing, 2010.
|
2022, Vol. 47







