实时点云处理和延迟

2024-06-13 06:06:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我们的项目是将激光雷达系统集成到虚拟现实(unity)中。 我可以实现与ROS bridge的集成。 下一步是在将点云数据发送到unity系统之前对其进行处理

  • 激光雷达传感器velodyne VLP-16
  • Ubuntu 18.4
  • IDE:Pycharm(python)
  • 点云处理:带有ROS的python点云库
  • 具有统一系统的ros桥

问题 如果不进行处理,从传感器到unity可视化只有1秒的延迟。但在ROS(pycharm)中处理点云数据会导致显著的延迟(约5秒)

  • 我使用velodyne驱动器将原始数据转换为pointcloud2格式。在处理代码中,我订阅了这个pointcloud2消息,并将其转换为PointXYZRGB格式以应用pcl库
  • 我首先测试了这个数据类型转换序列,没有应用PCL

原始数据->;发布pointcloud2消息->;订阅点云2->;pointXYZRGB->;(处理)——>; pointcloud2消息->;发布它。

  • 如果不进行处理,我会有超过5秒的延迟

我理解,从传感器接收原始数据而不转换为pointcloud2消息会更好。 但对我来说,用python来做这件事是非常有挑战性的。 我在C++中找到了一个抓取例子。 https://medium.com/@yohei.kajiwara/vlp16-c-quick-example-35b9ceea2059

但我不确定什么是最可靠的方法。 请在这个问题上给我一个建议

致意

郑素彬


Tags: 数据项目gt消息原始数据系统格式ros
1条回答
网友
1楼 · 发布于 2024-06-13 06:06:42

如果你关心速度,有几件事

Velodyne drivers有能力接收数据包&;使用nodelets组合成具有zerocopy访问权限的点云。ROS节点与节点类似,但复制更少,对大数据更有效Ex velodyne_driverEx velodyne_pointcloud。您可以通过启动文件^{}调用它,该文件演示了如何像这样组合节点元素。代码可读性很强,因此您可以了解他们如何设置代码以供参考。如果您还没有尝试过这种方法,然后通过管道进入Unity,这是您的最低基线。那么瓶颈就在统一方面

最快的方法可能是用C++编写一个NoDeleT,使用PCL,由同一个NoDelET管理器处理(就像上次的启动文件一样)。最好是你不需要自己写。{a5}包有几个转换节点;如果这些组合能够满足您的需求,那将是最有效的&;轻松的方式。否则,您仍然可以在C++ NoDelET中使用^ {CD3}}头,并且将在用户和发布服务器上用ROS作为^ {< CD5> }消息来解释^ {CD4}}。如果您还需要转换,^{}包有一些方便的转换

(这有点牵强。如果超出这一点的瓶颈是Ros#用于与rosbridge#服务器通信的websocket-y接口,rosbridge#服务器支持UDP协议,如果在同一台机器上,该协议应该非常快,但Ros#目前不支持该协议,或者在他们的路线图上没有该协议,因为他们的大多数用例都不是来自it在同一台机器上运行。)

相关问题 更多 >