录制 PointCloud2 到 rosbag 文件
雷达获取到的点云数据, 如何录制到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版本要求:
不要指望在搜索引擎上找到关于此库什么, 请仔细阅读文档. 同时Rosbags的issues中搜索相关PointCloud的issues, 这是重要的参考! (不要问我走了多少弯路才到这里)
示例代码
参考 issues/27, 我个人就不献丑了. , issues/27写很全面了. 我走了非常多的弯路才到这里.
https://gitlab.com/ternaris/rosbags/-/issues/27