测绘地理信息   2022, Vol. 47 Issue (6): 128-130
0
机器人远程点云分割框架设计与实现[PDF全文]
赵锦杰1, 蒋佳芹1, 姚剑1    
1. 武汉大学遥感信息工程学院,湖北 武汉,430079
摘要: 针对机器人端运算能力有限、难以快速进行3D点云分割的问题, 提出了一种基于远程过程调用(remote procedure call, RPC)的点云远程分割框架, 实现了机器人端快速获取点云分割结果的功能。首先位于机器人端采集点云数据; 然后把点云序列化为Protocol Buffers的格式; 服务端对点云采样、分割并把结果返回至机器人端; 最后机器人端获取服务端结果并反序列化得到点云分割结果。实验表明, 该方法和常用的RESTful接口相比, 在保障实时性的基础上, 能大幅度减少流量消耗, 从而提升了机器人点云分割的作业效率。
关键词: 机器人    点云分割    远程过程调用    序列化    实时性    
Design and Implementation of Robot Remote Point Cloud Segmentation Framework
ZHAO Jin-jie1, JIANG Jia-qin1, YAO Jian1    
1. School of Remote Sensing and Information Engineering, Wuhan University, Wuhan 430079, China
Abstract: To solve the problem that the robot has limited computing resource and the difficulty to quickly perform 3D point cloud segmentation, a remote point cloud segmentation framework based on remote procedure call(RPC)is proposed to realize the function of quickly obtaining the point cloud segmentation result on the robot side. First, the point cloud data is collected on the robot side; then the point cloud is sampled and serialized to the Protocol Buffers format and sent to the server for segmentation; finally, the robot side deserializes the point cloud segmentation results from server. Experiments show that compared with normally used RESTful interfaces, this method can greatly reduce resource consumption and improve the efficiency of robot point cloud segmentation on the basis of ensuring real-time performance.
Key words: robot    point cloud segmentation    RPC    serialization    real-time    

随着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.