ros - ROS topic velodyne_msgs/VelodynePacket Message 中包含的数据是什么?
问题描述
我正在做一个轻量级程序来监控接收到的激光雷达光束。由于重量轻,我最好不要缓存整个 UDP 数据包或点云数据。
问题是 ROS 消息 velodyne_msgs/VelodynePacket 中包含的数据是什么。此消息包含较小的数据,但我不知道它是否相关。
通过阅读有关此主题的Ros Wiki,但 velodynepackt 的链接没有提供有关内容的有用信息。
解决方案
检查消息定义以查看消息包含哪些字段及其类型。消息文件通常具有不言自明的字段名称或具有## 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
关于创建轻量级应用程序的具体问题,您有几个选择。
- 使用提供的 ROS 消息并订阅它。大多数情况下,如果您没有大量的大数据四处传播,您会没事的,并且能够跟上实时数据。与 ROS 相关的大部分时间通常来自网络传输,因此如果这是一个问题,您不需要通过 ROS 传递数据。
- 将您的代码放入 ROS Nodelet 中。这为您提供了 ROS 数据抽象的优势,同时消除了节点之间发生的网络数据传输。这类似于使用指向数据字段的指针。
- 如果你真的不想要所有的扫描数据,但仍然想使用 ROS,你可以编写自己的驱动节点。这将从 LIDAR 读取您想要的数据并丢弃您不需要的数据。您可以在该节点中进行原始数据处理(无需 ROS 消息)或发布您关心的数据并在另一个节点中进行处理。
推荐阅读
- typescript - DeepMerge<> 泛型不支持深度可选
- spring-boot - 为什么 Infinispan 在 Spring Boot / Java 11 上因 NoClassDefFoundError 而失败?
- authentication - AAD 胖客户端自动登录
- javascript - 无法解析“..\containers\CarForm.js”中的“react/redux”
- html - 如何在不向下移动的情况下使我的文本边距变小?
- c# - 通过反射设置表单的设计模式属性
- scala - 使用 mapN 验证的猫
- autodesk-forge - Forge BIM 360 参数值的 URL
- scala - 在使用 udf 进行操作时,将数据框中的空值保持为空
- javascript - 如何在javascript中分组并检测是否存在