news 2026/4/17 16:21:28

ROS2 Humble + rtabmap + D435i深度相机实现视觉惯性建图(二)—— 地图保存和查看

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ROS2 Humble + rtabmap + D435i深度相机实现视觉惯性建图(二)—— 地图保存和查看
前文:

ROS2 Humble + rtabmap + D435i深度相机实现视觉惯性建图(一)——环境配置

一、RTABMAP建图

1. 建图

深度相机连接上电脑后,打开终端,输入:

ros2 launch rtabmap_examples realsense_d435i_stereo.launch.py

移动深度相机位置,完成建图后:

点击Save保存地图,并在终端Ctrl+C结束建图。

[rtabmap-3] rtabmap: Saving database/long-term memory... (located at /home/robot/.ros/rtabmap.db) [rtabmap-3] rtabmap: Saving database/long-term memory...done! (located at /home/robot/.ros/rtabmap.db, 17 MB) [INFO] [rtabmap-3]: process has finished cleanly [pid 30928]

可以看到保存在home/robot/.ros/rtabmap.db(这里要看自己的)。

2. 地图保存

打开终端,输入:

rtabmap-databaseViewer ~/.ros/rtabmap.db

点击上方工具栏中 View -> 3D View, 然后拖动下方的两个进度栏可以查看建图过程:

点击上方工具栏中 File -> Export 3D Map, 可以保存地图为.ply或者 .pcd格式:

对话框关键选项解释:

区域选项含义
Dense Point CloudFrom RGB-D images从 RGB‑D 图像生成稠密点云(而非激光扫描点云)。推荐勾选,因为你保存的是双目/深度地图。
Reconstruction flavorBinary file输出的 PLY/PCD 文件使用二进制格式(体积小、读取快)。
Assemble clouds/meshes:将多个关键帧的点云/网格合并成一个文件。
Normal estimationK nearest neighbors/search radius用于点云法线估计(后续网格生成用)。设为 0 则禁用。若不需网格,可保持 0。
Flip ground normals0.9 等将接近 -Z 轴的法线翻转向 +Z,用于地面点。
Voxel size体素滤波尺寸(米)。设为 0 禁用,设 >0 可降采样点云。
Number of samples随机采样保留的点数(仅当合并点云时有效)。0 = 禁用。
Nodes filtering按区域/索引筛选要导出的关键帧。
Regenerate clouds重要:重新生成点云,可提高密度(因为在线可视化时为了性能会降采样)。
Cloud filtering如统计离群值移除、半径滤波等。
Cloud smoothing (MLS)移动最小二乘平滑。
Gain compensation校正多张图像的亮度差异。
Camera projection将相机模型用于点云着色;也可导出每个点的相机 ID。
Meshing生成三角网格(而非点云)。需要勾选并设置相关参数(如泊松重建)。
Regenerate Clouds 子区域-Decimation:降采样因子(1,2,4…),负数表示使用 RGB 分辨率。
-Max/Min depth:深度裁剪范围(米)。
-ROI ratios:仅提取图像中指定区域的点。
-Fill depth hole:填充深度图中的空洞。

地图导出步骤:

(1)勾选Dense Point Cloud确保From RGB-D images被选中。

(2)如果点云太密导致文件过大,设置Voxel size= 0.01或 0.02 米。

(3)勾选Assemble clouds/meshes to a single output这样所有关键帧的点云会合并成一个文件,方便后续使用。

(4)勾选Regenerate clouds可以获得比在线地图更密的点云,并调整下方的降采样参数(如Decimation = 1使用原始深度分辨率)。

(5)在对话框底部选择输出文件类型(.ply.pcd),点击Save按钮。

RTAB-Map 会遍历所有关键帧,生成并合并点云,耗时取决于数据库大小:

可以看到保存至位置及名称。

常见问题及解决方法:

问题解决方法
导出后点云很稀疏取消Voxel size(设为 0),并勾选Regenerate clouds,设置Decimation = 1
导出过程卡死或内存不足设置Voxel size = 0.02降采样,或先筛选一部分节点(Nodes filtering)。
网格出现大量孔洞增加法线估计的 KNN 值,或调整泊松重建的深度参数。
左右亮度不一致导致颜色条纹勾选Gain compensation

二、查看地图(三维点云文件)

1. 前提条件

安装MeshLab、pcl_tools:

sudo apt install meshlab
sudo apt install pcl-tools

2. 使用MeshLab查看 .ply 地图

在终端中输入:

meshlab cloud.ply

可以加载.ply 地图,安装鼠标左键可以变化视角,滑动滚轮可以进行缩放,按住并拖动鼠标中键(滚轮)可以移动视角位置。

右边栏中的ShadingColor可以调整阴影亮度和点云颜色:

3. 将 .ply 文件转换为 .pcd 文件

在文件保存目录下打开终端,输入:

pcl_ply2pcd cloud.ply cloud.pcd

robot@ll-Lenovo:~/Desktop$ pcl_ply2pcd cloud.ply cloud.pcd Convert a PLY file to PCD format. For more information, use: pcl_ply2pcd -h PCD output format: binary [pcl::PLYReader] cloud.ply:29: property 'float32 focal' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:30: property 'float32 scalex' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:31: property 'float32 scaley' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:32: property 'float32 centerx' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:33: property 'float32 centery' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:36: property 'float32 k1' of element 'camera' is not handled [pcl::PLYReader] cloud.ply:37: property 'float32 k2' of element 'camera' is not handled > Loading cloud.ply [done, 1393.21 ms : 5352642 points] Available dimensions: x y z rgb normal_x normal_y normal_z curvature > Saving cloud.pcd [done, 87.8349 ms : 5352642 points]

可以得到 .pcd 点云文件,输入:

pcl_viewer cloud.pcd

查看点云地图:

同样可以使用鼠标进行查看。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 16:21:26

LeetCode:438. 找到字符串中所有字母异位词

简介 题目链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/ 解决方式:字符串 暴力枚举 / 滑动窗口、哈希表 / 数组 这是作者学习众多大神的思路进行解题的步骤,很推荐大家解题的时候去看看题解里面大佬们的思…

作者头像 李华
网站建设 2026/4/17 16:18:18

若依WMS仓库管理系统终极指南:10分钟打造企业级智能仓储解决方案

若依WMS仓库管理系统终极指南:10分钟打造企业级智能仓储解决方案 【免费下载链接】RuoYi-WMS-VUE 若依wms是一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单。包括仓库/库区/货架管理,出入库管理,客户/供应商/承…

作者头像 李华
网站建设 2026/4/17 16:16:22

MessagePack - 原理剖析与实战指南

1. MessagePack是什么?为什么比JSON更快更小? 第一次接触MessagePack是在一个高并发的即时通讯项目中,当时我们的JSON序列化成了性能瓶颈。测试数据显示,当消息量达到每秒5000条时,JSON序列化要消耗近40%的CPU资源。换…

作者头像 李华
网站建设 2026/4/17 16:15:26

Lemuroid:如何在Android设备上免费畅玩经典复古游戏的完整指南

Lemuroid:如何在Android设备上免费畅玩经典复古游戏的完整指南 【免费下载链接】Lemuroid All in one emulator on Android! 项目地址: https://gitcode.com/gh_mirrors/le/Lemuroid Lemuroid是一款功能强大的Android游戏模拟器,让您能够在手机和…

作者头像 李华
网站建设 2026/4/17 16:14:16

跨平台Git图形化客户端:为什么SourceGit成为开发者的新宠

跨平台Git图形化客户端:为什么SourceGit成为开发者的新宠 【免费下载链接】sourcegit Windows/macOS/Linux GUI client for GIT users 项目地址: https://gitcode.com/gh_mirrors/so/sourcegit 在版本控制的世界里,Git已经成为事实上的标准&#…

作者头像 李华