对于任何从事 ROS 工作的人来说,这是一个理想的解决方案。所以我将解决方案分为两部分 - 第一,将其存储为 ROS bag 文件(用于存储来自 ros 主题的任何类型数据的便捷工具),第二,将 rosbag 文件写入 pcd 文件。现在这真的很简单。
(参考:http://wiki.ros.org/Bags)
A) 将数据存储在 BAG 文件中。 (ROS文件类型)
首先将数据(可以存储任何类型的数据)存储为ROSBAG。 ROSBAG 只记录来自主题的数据。
1.要开始使用kinect,打开终端并运行
$roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true
这将使 ROS 系统开始从 kinect 获取数据。您应该会看到系统以“等待客户端连接”启动和停止。
2.要查看点云,请打开一个新终端。运行
$ rosrun kinect2_viewer kinect2_viewer sd cloud
然后您将看到一个带有点云视图的新窗口弹出。这里是解释kinect2_viewer函数参数的链接:https://github.com/code-iai/iai_kinect2/tree/master/kinect2_viewer
3.要记录数据,在新的终端运行
$ rosbag record -O pcl_sample1.bag -a
这里的“-a”表示您将订阅所有可用的 ros 主题并从中记录数据。在您认为数据足够之后,您可以通过 ctrl-C 停止它。数据将存储在 .bag 文件中,此处为 name.bag。更多设置可以在这里找到:http://wiki.ros.org/rosbag/Commandline#record
现在拔下 kinect。 bag 文件包含通过启动 kinect2_bridge 运行的所有主题的数据。现在您可以像实际插入 kinect 一样使用来自主题的数据。
4.要回放数据,你需要在第一个终端(启动文件)中停止程序。然后你运行
$ roscore
这将启动一个 ROS 服务器。然后在另一个终端中,运行
-
播放包文件:
$ rosbag play pcl_sample1.bag
这将使 ROS 系统播放您刚刚记录的数据,就好像设备仍在工作一样。然后您可以使用 kinect2_viewer 查看数据,即:
-
运行 Kinect 实际插入的任何命令。
$ rosrun kinect2_viewer kinect2_viewer sd cloud
注意:如果您想记录特定主题,请访问http://wiki.ros.org/Bags。
B) 将 BAG 转换为 PCD 文件:(现在只是一个命令。)
将适当的主题写入相应的文件夹:
rosrun pcl_ros bag_to_pcd pcl_sample1.bag /kinect2/sd/image_color_rect src/
rosrun pcl_ros bag_to_pcd pcl_sample1.bag /kinect2/sd/image_depth_rect src/PCD\ Files/