- 3
- 0
- 约1.37千字
- 约 2页
- 2021-09-23 发布于广东
- 举报
机器人远程点云分割框架设计与实现
随着3D 点云采集设备的普及,越来越多的机器人采集点云数据,对点云进行分割来获得更加精确的环境信息1 系统框架系统由服务器端和机器人端两部分组成。服务器端包括点云分割算法、RPC 2 系统设计和实现2.1 系统开发环境目前主流的深度学习环境使用Ubuntu 和Python,考虑到配置的灵活性和方便性,进行如下配置。具体开发环境:操作系统为Ubuntu 16.04;服务器端编程语言选择Python;深度学习框架选择TensorFlow2.2 服务器端服务器端是远程点云分割的核心,由数据处理、序列化、通信和数据库模块。1. 数据处理模块:采用PointNet++ 网络对点云分割2. 序列化模块:采用了谷歌的Protocol Buffers序列化框架把点云转成适合网络传输的二进制格式3. 通信模块:采用HTTP/2 进行通信。如图1所示,HTTP/2 支持多路复用,可以在一个TCP 连接上发送多个HTTP 请求而不会被阻塞,从而提升服务端响应能力。同时HTTP/2 还支持首部压缩,可以进一步减少网络传输过程中的带宽消耗4. 数据库模块:采用MySQL数据库来保存数据。服务器处理完一个请求之后,把机器人端IP、请求时间、请求数据、分割结果、处理时间存入数据库,方便以后查询。2.3 机器人端机器人端主要负责采集点云,把点云数据转成Protocol Buffers 格式,调用服务器上的分割算法获取分割结果并解析来完成对环境的感知。机器人端解析Protocol Buffers 定义文件生成函数签名,可以像调用本地方法一样调用服务器端的算法,易于集成到现有框架中。出现网络异常的情况下,机器人端报警并把数据保存到本地,等待网络恢复之后再次分割。3 实验分析本文基于gRPC 搭建的远程调用框架,机器人端无需考虑底层网络传输。目前主流方案是搭建RESTful 接口,机器人把数据发给服务端之后,服务端返回分割结果3.1 运行时间实验中机器人端朝服务器端发送100次请求,每次2000个点,共计20万个点,统计从开始发送到解析完响应花费的时间。本文中利用Nginx 进行反向代理,通过设置Nginx 参数来控制传输带宽如图2所示,带宽从64M 降低到2M gRPC 方案用时从2.558s 缓慢上升到2.842s. RESTful 方案用时从7.994s 上升到16.394s. 在带宽小于2M 时,相比于gRPC 方案,RESTful 方案用时快速上升。目前WIFI 的速度50M左右,依实现标准不同,主流的3G速度在10M以下,4G 速度在100M以下。在网速较低的情况下,gRPC 方案优势更明显。3.2 流量消耗实验中机器人端朝服务器端发送点云数量不同的请求。统计两种方案流量随请求数量的变化。如表1所示,使用Protocol Buffers 序列化的gRPC 方案上传流量是RESTful 方案的22%,大幅度节省了流量。4 结束语本文设计了一个点云远程分割框架,解决了RESTful 框架远程调用速度慢,实时性不足的问题。本文设计的框架在调用时间和流量消耗上都有明显优势,适用于对实时性要求较高的场景。
原创力文档

文档评论(0)