首页 > 解决方案 > ROS topic velodyne_msgs/VelodynePacket Message 中包含的数据是什么?

问题描述

我正在做一个轻量级程序来监控接收到的激光雷达光束。由于重量轻,我最好不要缓存整个 UDP 数据包或点云数据。

问题是 ROS 消息 velodyne_msgs/VelodynePacket 中包含的数据是什么。此消息包含较小的数据,但我不知道它是否相关。

通过阅读有关此主题的Ros Wiki,但 velodynepackt 的链接没有提供有关内容的有用信息。

标签: rosroboticslidar

解决方案


检查消息定义以查看消息包含哪些字段及其类型。消息文件通常具有不言自明的字段名称或具有## text描述字段的注释 ( )。您可以在线或本地查看消息定义。要在本地查看它们,请使用roscd进入包目录roscd <package_name>/msg,然后使用cat查看消息文件的内容。在您的情况下,这将是:

roscd velodyne_msgs/msg cat VelodynePacket.msg cat VelodyneScan.msg

相关消息文件可从您链接到的页面在线获取:http: //docs.ros.org/api/velodyne_msgs/html/msg/VelodyneScan.html http://docs.ros.org/api/velodyne_msgs/html /msg/VelodynePacket.html

关于创建轻量级应用程序的具体问题,您有几个选择。

  1. 使用提供的 ROS 消息并订阅它。大多数情况下,如果您没有大量的大数据四处传播,您会没事的,并且能够跟上实时数据。与 ROS 相关的大部分时间通常来自网络传输,因此如果这是一个问题,您不需要通过 ROS 传递数据。
  2. 将您的代码放入 ROS Nodelet 中。这为您提供了 ROS 数据抽象的优势,同时消除了节点之间发生的网络数据传输。这类似于使用指向数据字段的指针。
  3. 如果你真的不想要所有的扫描数据,但仍然想使用 ROS,你可以编写自己的驱动节点。这将从 LIDAR 读取您想要的数据并丢弃您不需要的数据。您可以在该节点中进行原始数据处理(无需 ROS 消息)或发布您关心的数据并在另一个节点中进行处理。

推荐阅读