一、介绍

Mesh 是SLAM从“看见世界”到“理解世界”的关键一步!

SLAM不仅要“定位”和“建图”,还越来越追求从几何到语义的重建。而在这一演进中,Mesh(网格化重建)成为连接稠密建图与真实三维世界的重要桥梁。

1. Mesh 是什么?

Mesh(网格) 是三维空间中用来表示物体表面的一种结构形式。

在 SLAM 中,我们通常使用点云(Point Cloud)表示环境。每个点都记录了三维坐标,但点云之间没有拓扑关系,无法反映物体表面的连续性。

Mesh则在此基础上建立“点与点之间的面”连接关系。

简单来说:

点云是“离散的点”, Mesh是“连续的面”。

打开今日头条查看图片详情

最常见的是 三角网格(Triangle Mesh),由以下三个基本元素构成:

  • 顶点(Vertex):点的三维坐标 (x, y, z)。

  • 边(Edge):连接两个顶点的线段。

  • 面(Face):由若干边围成的平面,一般为三角形或四边形。

数学上,一个 Mesh 可以表示为:

打开今日头条查看图片详情

说明:

打开今日头条查看图片详情

Mesh 基本结构示意图:

打开今日头条查看图片详情

说明:由顶点 (v0, v1, v2) 组成的三角面是 Mesh 的最小单元。

2. 为什么在 SLAM 中需要 Mesh?

点云虽直观,但存在几个问题:

  • 数据量大、难以渲染;

  • 结构信息缺失,难以表达墙体、地面、物体边界;

  • 无法进行物理或仿真计算。

而将点云转化为 Mesh,可以带来一系列好处:

  • 可视化更真实(表面连续、可贴纹理);

  • 用于仿真或渲染(可导入Unity、Gazebo等引擎);

  • 可用于路径规划与碰撞检测;

  • 支持语义分割、场景理解。

而 Mesh 重建 则提供了更高层次的几何表达:

打开今日头条查看图片详情

打开今日头条查看图片详情

3. 从点云到 Mesh 的过程

Mesh 通常基于两类数据生成:

(1)基于深度图 / TSDF 的体素重建

  • 代表方法:KinectFusion, Voxblox, Open3D Scalable TSDF

  • 流程:深度图 → 融合为TSDF体素 → Marching Cubes算法提取等值面 → 得到Mesh

  • 优点:表面光滑、拓扑连续

  • 缺点:内存占用较高

(2)基于点云的直接重建

  • 代表方法:Poisson Surface Reconstruction, Ball Pivoting Algorithm (BPA)

  • 流程:点云(带法向量) → 估计邻域关系 → 拟合曲面 → 生成三角网格

  • 优点:输入灵活,可处理非结构化点云

    SLAM学习–Mesh初探
  • 缺点:对噪声敏感、易出现孔洞

在实际SLAM中,许多系统会采用混合策略:先用TSDF进行全局建模,再用Poisson或Marching Cubes生成Mesh。

4. Mesh 在 SLAM 系统中的位置

打开今日头条查看图片详情

在实际系统中:

  • Kimera

    :在后端融合稠密深度信息形成实时 Mesh。

  • Voxblox

    :通过 TSDF 体素融合生成可更新 Mesh。

5. 常用开源工具与代码实现

打开今日头条查看图片详情

6. Mesh 的优化与精简

重建的 Mesh 往往包含冗余三角形与噪声,需要优化:

  1. 法向一致化 保证法向朝向一致,防止渲染伪影。

  2. 简化 Quadric Decimation 算法在减少面数的同时保持几何特征。

  3. 平滑 消除噪声导致的尖锐突变。

  4. 纹理映射 将 RGB 图像映射到网格表面,提升真实感。

7. Mesh 在 SLAM 应用中的价值

Mesh 是SLAM从“看见世界”到“理解世界”的关键一步

打开今日头条查看图片详情

Mesh

是连接“稠密点云”与“可理解环境”的关键桥梁。 在 SLAM 体系中,它承担了从几何感知到语义理解的过渡角色。

未来方向包括:

  • 实时可更新的 Mesh 重建(Online TSDF/Fusion)

  • 语义 + 拓扑级别的混合 Mesh 表示

  • 基于神经场(Neural Implicit)的连续表面表达

9. 实践

我们通过一个脚本代码,用fast livo2生成的pcd文件,来转为Mesh文件,

打开今日头条查看图片详情

使用reconstruct_vdbfusion.py脚本,直接将含RGB信息的pcd格式的点云文件,转换为ply格式的Mesh文件。

这段脚本的功能是一个完整的 点云 → TSDF 融合 → Mesh 重建与上色 → 保存与可视化 流程,基于 vdbfusion 和 Open3D。

最后输出两份文件:

  • mesh.ply:未上色原始网格

  • textured_mesh.ply:带颜色的网格

打开今日头条查看图片详情

打开今日头条查看图片详情

打开今日头条查看图片详情

从上面的图中可以看出由PCD文件转为Mesh文件后的效果,墙面和柱子,地面等 有很强的连续性和面片化效果

打开今日头条查看图片详情

查看Mesh的工具:

Meshlab

特点

  • 可视化友好

  • 可做法向估计、重采样、Poisson重建等

  • SLAM研究者使用最广泛

打开今日头条查看图片详情