激光SLAM使用ros保存点云地图(以A-LOAM为例)

激光SLAM保存点云地图,使用ros工具保存,而不重新编译SLAM程序。

目录

方法

方法一 录制话题保存为rosbag再转为pcd

方法二 直接保存话题为pcd

点云地图查看

pcl_viewer查看

cloudcompare查看

pcd点云地图转ply格式查看


以A-LOAM运行kitti数据集为例

运行A-LOAM程序,打开两个终端,分别运行

roslaunch aloam_velodyne aloam_velodyne_HDL_64.launch
rosbag play  --pause xxx.bag

方法

方法一 录制话题保存为rosbag再转为pcd

将需要录制的地图点云话题topic用rosbag record录制下来,保存为bag文件,再把bag里的相关话题转出为pcd格式。

具体步骤:

1.在即将跑完的时候录制下来,在想要保存的文件夹位置,打开终端,运行

 rosbag record /laser_cloud_map

会显示两条INFO信息:

[ INFO] [......]: Subscribing to /laser_cloud_map
[ INFO] [......]: Recording to 'map.bag'.

运行结束后ctrl+C结束录制,地图文件.bag文件保存在文件夹。
2.将bag转化为pcd文件

切换到map.bag文件所在的目录下

rosrun pcl_ros bag_to_pcd map.bag /laser_cloud_map map.pcd

map.bag转换为map.pcd。rosrun运行结束,可以看到生成了一个pcd文件夹,将里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。

如果 rosbag record保存的文件是以.bag.active为后缀的文件,需要将其恢复成正常的以".bag"为后缀的包。修复过程:

rosbag reindex xxx.bag.active

rosbag fix xxx.bag.active或者rosbag fix xxx.bag result.bag

rosbag reindex 之后和i生成.bag.org.active为后缀的文件,这只是中间文件,不用处理。rosbag fix仍对xxx.bag.active处理,如果fix后面还有result.bag则是将修复文件保存为 result.bag。

方法二 直接保存话题为pcd

使用rosrun pcl_ros工具,直接将需要录制的地图点云话题topic,用rosrun pcl_ros保存为pcd文件。

具体步骤:

 在即将跑完的时候录制,在想要保存的文件夹位置,打开终端,运行

rosrun pcl_ros pointcloud_to_pcd input:=/laser_cloud_map

此时终端出现如下INFO信息

[ INFO] [1683850358.621560685]: Saving as binary PCD
[ INFO] [1683850358.625476468]: Listening for incoming data on topic /laser_cloud_surround
[ INFO] [1683850360.540955903]: Received 7650 data points in frame camera_init with the following fields: x y z intensity
[ INFO] [1683850360.540990020]: Data saved to 1317653847034159.pcd
[ INFO] [1683850361.131458068]: Received 13486 data points in frame camera_init with the following fields: x y z intensity
[ INFO] [1683850361.131489694]: Data saved to 1317653847552311.pcd

。。。。。。

 rosrun pcl_ros pointcloud_to_pcd input:=将/laser_cloud_map话题topic下一系列的点云以pcd格式保存到文件夹中,将文件夹里面的文件按照修改时间排序,最新的就是最后的点云地图pcd文件。


点云地图查看

pcl_viewer查看

pcl_viewer xxx.pcd

没有安装的话需要提前安装

sudo apt-get install pcl-tools

cloudcompare查看

打开cloudcompare

cloudcompare.ccViewer

cloudcompare.CloudCompare

pcd点云地图转ply格式查看

pcl_pcd2ply xxx.pcd xxxxxxx.ply

MatLab/MeshLab等第三方软件对点云地图进行处理时需要将pcd转为ply,其中MeshLab必须使用由pointcloud_to_pcd方法创建pcd转成的ply格式点云!

ROS指令解释,来自GPT

rosrun pcl_ros pointcloud_to_pcd

`rosrun pcl_ros pointcloud_to_pcd` 是一个ROS节点,用于将ROS中的点云数据转换为PCD文件格式。 

在使用 `rosrun pcl_ros pointcloud_to_pcd` 命令时,需要指定输入的点云数据的话题名称,以及输出的PCD文件名称和路径。具体使用方法如下:

```
rosrun pcl_ros pointcloud_to_pcd input:=<input_topic_name> output:=<output_file_path>
```

其中,`<input_topic_name>` 是输入点云数据的ROS话题名称,`<output_file_path>` 是输出的PCD文件路径和名称。例如:

```
rosrun pcl_ros pointcloud_to_pcd input:=/camera/depth/points output:=/home/user/pointcloud.pcd
```

这个例子中,节点将从 `/camera/depth/points` 话题接收点云数据,然后将其转换为 PCD 文件格式,并将其保存到 `/home/user/pointcloud.pcd` 文件中。

需要注意的是,使用 `rosrun pcl_ros pointcloud_to_pcd` 转换点云数据时,需要确保输入的点云数据已经被发布到了指定的 ROS 话题中。此外,还需要确保已经安装了 `pcl_ros` 软件包,否则该命令将无法正常运行。

除了使用命令行工具 `rosrun`,还可以使用 ROS launch 文件来启动 `pointcloud_to_pcd` 节点。在 launch 文件中,需要指定输入和输出参数,以及节点的名称和其他参数。例如下面是一个使用 ROS launch 文件来启动 `pointcloud_to_pcd` 节点的示例:

```xml
<launch>
  <node name="pointcloud_to_pcd" pkg="pcl_ros" type="pointcloud_to_pcd">
    <remap from="input" to="/camera/depth/points"/>
    <param name="filename" value="/home/user/pointcloud.pcd"/>
  </node>
</launch>
```

在这个示例中,首先定义了一个名为 `pointcloud_to_pcd` 的节点,使用 `pcl_ros` 软件包中的 `pointcloud_to_pcd` 类型。然后,使用 `remap` 标签将 `input` 重映射到 `/camera/depth/points`,表示输入点云数据的话题名称。最后,使用 `param` 标签将 `filename` 参数

设置为 `/home/user/pointcloud.pcd`,表示输出的 PCD 文件的路径和名称。

启动该 launch 文件后,将自动启动 `pointcloud_to_pcd` 节点,并将从 `/camera/depth/points` 话题接收点云数据,然后将其转换为 PCD 文件格式,并将其保存到 `/home/user/pointcloud.pcd` 文件中。

需要注意的是,使用 ROS launch 文件启动节点时,需要确保 launch 文件中指定的话题名称与实际发布的话题名称一致。如果话题名称不匹配,节点将无法接收到正确的输入数据,并且转换结果也将不正确。

此外,还需要确保已经将 launch 文件保存在 ROS 环境变量 `$ROS_PACKAGE_PATH` 所包含的路径中,否则 ROS 将无法找到该 launch 文件。

总之,使用 `rosrun pcl_ros pointcloud_to_pcd` 或者 ROS launch 文件中的 `pointcloud_to_pcd` 节点,可以方便地将 ROS 中的点云数据转换为 PCD 文件格式,并进行保存和后续处理。

猜你喜欢

转载自blog.csdn.net/weixin_56337147/article/details/130634169
今日推荐