[ROS] 录制 PointCloud2 到 rosbag 文件

in 工作记录 with 0 comment

雷达获取到的点云数据, 如何录制到 Rosbag 文件?

作为一个 Javaer 我对这个问题进行了搜索,却很难找到答案。
我只好对自己的需求先进行整理。

啥是 ROS?

ROS 作为一个机器人操作系统(Robot Operating System),有一套自己的生态。

啥是 PointCloud?

ROS 中定义的一种数据格式,每个点都有基本的 xyz 坐标,很多点就能构成类似图像的效果。

PointCloud 和 PointCloud2 什么区别?

PointCloud2 是 PointCloud 格式的升级版,PointCloud 很多播放软件直接不做支持了,PointCloud2 格式才支持,优先使用 PointCloud2。
(别问我怎么知道 PointCloud 播放支持不好的!)

.bag 文件?

一种文件格式,可以持久化 ROS 中各种结构的数据。

我的问题变成了:

用代码的方式写数据进 ".bag" 文件,应该用那个库?

这里有答案: http://wiki.ros.org/rosbag

The rosbag package provides a command-line tool for working with bags as well as code APIs for reading/writing bags in C++ and Python.

不能指望我会 C++,只能用 Python 了。

Python 库 Writing 示例:

https://ternaris.gitlab.io/rosbags/topics/rosbag1.html#writing-rosbag1

Rosbags,托管在 Gitlab 上,只有 37 个 Star,调试成功之路几乎必然是艰辛的。

Python 版本要求: image.png

不要指望在搜索引擎上找到关于此库什么,请仔细阅读文档。同时 Rosbags 的Issues 中搜索相关 PointCloud 的 Issues,这是重要的参考!

示例代码

参考 Issues/27

https://gitlab.com/ternaris/rosbags/-/issues/27

Issues/27 写很全面了,花了很多时间才走到这里,却发现只是完成了一件普通的事。

Java 的库实在太丰富了,调这种用的人少的库,还是按以前的思维,总想着利用搜索引擎走捷径,结果反而花了大量的时间,收获却很少,越是人少的库,就越应该认真读文档,查阅 Issues,必要的时候甚至向作者提问。

即使是 Java 的很多库,都应该仔细阅读文档,一些稍微复杂的问题,花上几个小时在文档上,往往比直接到处乱搜有效。