我们的项目是将激光雷达系统集成到虚拟现实(unity)中。 我可以实现与ROS bridge的集成。 下一步是在将点云数据发送到unity系统之前对其进行处理
问题 如果不进行处理,从传感器到unity可视化只有1秒的延迟。但在ROS(pycharm)中处理点云数据会导致显著的延迟(约5秒)
原始数据->;发布pointcloud2消息->;订阅点云2->;pointXYZRGB->;(处理)——>; pointcloud2消息->;发布它。
我理解,从传感器接收原始数据而不转换为pointcloud2消息会更好。 但对我来说,用python来做这件事是非常有挑战性的。 我在C++中找到了一个抓取例子。 https://medium.com/@yohei.kajiwara/vlp16-c-quick-example-35b9ceea2059
但我不确定什么是最可靠的方法。 请在这个问题上给我一个建议
致意
郑素彬
如果你关心速度,有几件事
Velodyne drivers有能力接收数据包&;使用nodelets组合成具有zerocopy访问权限的点云。ROS节点与节点类似,但复制更少,对大数据更有效Ex velodyne_driver和Ex velodyne_pointcloud。您可以通过启动文件^{} 调用它,该文件演示了如何像这样组合节点元素。代码可读性很强,因此您可以了解他们如何设置代码以供参考。如果您还没有尝试过这种方法,然后通过管道进入Unity,这是您的最低基线。那么瓶颈就在统一方面
最快的方法可能是用C++编写一个NoDeleT,使用PCL,由同一个NoDelET管理器处理(就像上次的启动文件一样)。最好是你不需要自己写。{a5}包有几个转换节点;如果这些组合能够满足您的需求,那将是最有效的&;轻松的方式。否则,您仍然可以在C++ NoDelET中使用^ {CD3}}头,并且将在用户和发布服务器上用ROS作为^ {< CD5> }消息来解释^ {CD4}}。如果您还需要转换,^{} 包有一些方便的转换
(这有点牵强。如果超出这一点的瓶颈是Ros#用于与rosbridge#服务器通信的websocket-y接口,rosbridge#服务器支持UDP协议,如果在同一台机器上,该协议应该非常快,但Ros#目前不支持该协议,或者在他们的路线图上没有该协议,因为他们的大多数用例都不是来自it在同一台机器上运行。)
相关问题 更多 >
编程相关推荐