地图的构建方式
地图类型维度存储结构核心信息优点缺点典型应用2D均匀网格占据概率简单、成熟、高效仅限2D平面室内机器人导航2.5D均匀网格高度值比2D多地形信息无法表示悬空物无人车、野外机器人3D点列表3D点坐标构建简单、信息完整无结构、数据量大离线重建、可视化OctoMap3D八叉树占据概率稀疏、高效、带概率分辨率固定、不够精细无人机避障、机械臂3D哈希表+体素块SDF/颜色内存效率极高、实时实现复杂实时AR/
环境地图构建

地图的构建核心包括:数据结构和融合方法。
地图数据结构
主要用于表示环境,分为两大类:
-
度量地图
- 思想:用精确的坐标来描述环境。
- 常见类型:
- 栅格地图:将环境划分为均匀的网格(栅格),每个栅格存储一个值(如占用概率、代价)。简单高效,是路径规划最常用的格式。
- 特征地图:用一系列抽象的特征点(如墙角、门框、线)来表示环境。存储效率高,但不够直观。
- 点云地图:由大量3D点组成,能非常精细地还原环境外貌,但数据量大,常用于激光SLAM。
-
拓扑地图
- 思想:强调地点之间的连通关系,而非精确的几何位置。像一张图,用节点表示重要地点(如房间、路口),用边表示连接路径及其代价。
- 特点:抽象程度高,存储空间小,非常适合于高层任务规划和导航,但缺乏精确的几何信息。
实践中常采用分层或融合的策略,例如用精细的栅格地图做局部避障,用拓扑地图做全局路径规划。
地图融合方法
主要指在建图过程中,如何将新的传感器观测数据与现有地图进行融合更新。
-
贝叶斯更新(用于栅格地图)
- 核心:每个栅格都是一个独立的二值贝叶斯滤波器。根据新的观测(激光扫描),使用反观测模型计算当前观测下该栅格被占用的概率,并与先验概率进行融合。
- 经典算法:占据栅格地图 就使用此方法。公式简化为:
P_new = ...(基于观测更新概率)。它能有效地处理噪声和多次观测,逐步构建出稳定可靠的地图。
-
图优化(用于位姿图与地图)
- 核心:SLAM不仅建图,还要估计机器人自身轨迹(位姿)。将机器人的位姿和观测到的地标(或约束)作为节点,将观测数据、里程计数据等作为连接节点的边(约束),形成一个图。
- 融合过程:当获得新的约束时(如回环检测),将其加入图中。通过求解一个大规模非线性最小二乘问题,一次性调整所有节点(位姿和地图),使它们最大程度地满足所有约束。这种方法能有效纠正累积误差,是现代SLAM的主流方法。
-
表面重建与融合(用于3D点云/体素地图)
- 核心:在3D SLAM(如KinectFusion)中,常用截断符号距离函数(TSDF)。
- 融合过程:将空间划分为体素网格,每个体素存储到最近物体表面的距离(TSDF值)和权重。新的深度帧数据通过ICP配准后,其TSDF值会与体素中存储的值进行加权平均融合。通过不断融合多帧数据,生成精确、平滑的3D表面模型。
一、地图构建方法分类与演进
环境地图构建方法可通过表示维度和核心思想两大维度分类,其演进关系如下,帮助建立宏观认知:
二、主流地图构建技术详解
按“2D→2.5D→3D”的维度递进顺序,逐一解析各类地图的核心特性:
1. 占据栅格地图(Occupancy Grid Map)- 2D
最经典的基础地图形式,由SLAM奠基人之一Sebastian Thrun普及,适用于二维平面场景。
- 存储结构:均匀2D网格(矩阵),每个网格单元(cell)存储“占据概率”(0.0~1.0),常用概率对数形式(Log-Odds) 存储,便于贝叶斯公式加法计算。
- 核心原理:
- 传感器模型:基于激光雷达等测距设备,射线区域(机器人到测量点)标记为“空闲”,测量点标记为“占据”;
- 概率融合:通过贝叶斯公式更新网格概率,多次观测后从“未知(0.5)”收敛到“空闲(0)”或“占据(1)”。
- 应用场景:
- 室内机器人导航(扫地机器人、服务机器人路径规划);
- 2D SLAM(定位与建图);
- 计算资源敏感、环境以二维平面为主的场景。

2. 2.5D地图(Elevation Map / Height Map)
2D与3D的折中方案,记录二维坐标(x,y)对应的高度(z),但单个(x,y)仅对应一个z值,无法表示悬空物(如吊灯)或多层结构(如桥梁)。
- 存储结构:2D网格,每个cell存储高度值(或高度统计信息,如均值、方差),而非占据概率。
- 核心原理:通过RGB-D相机、3D激光雷达等设备采集点云,统计每个(x,y)网格内点的高度(取最高点或平均值)。
- 应用场景:
- 野外/崎岖地形导航(无人车、救援机器人,判断地面可通行性);
- 无人机复杂表面降落。

3. 占用地图 3D
如下图所示,占用内存,3D推荐使用Octomap、(Voxel Hashing)
3. 点云地图(Point Cloud Map)- 3D
最直接的3D地图表示,仅记录传感器采集的3D点坐标集合。
- 存储结构:点列表(格式如
.pcd、.ply),每个点含(x,y,z)坐标,可附加颜色(r,g,b)或反射强度。 - 核心原理:无需复杂概率推理,仅通过SLAM估计的机器人位姿,将不同时刻的点云转换到全局坐标系后拼接。
- 优缺点:
- 优点:构建简单,保留原始几何与外观细节;
- 缺点:数据量大(稠密/RGB-D或稀疏/LiDAR)、无拓扑结构、无法直接判断空间占据状态,不适合实时导航。
- 应用场景:
- 离线建图与重建(建筑扫描、考古测量、高精度环境档案);
- 环境可视化(为人类提供直观展示);
- 作为TSDF等高级地图的输入数据。

4. 八叉树地图(OctoMap)- 3D
解决点云地图“无结构、数据量大”的问题,结合2D占据栅格思想与八叉树(Octree)层次化结构。
- 存储结构:八叉树,每个节点代表立方体体素(Voxel):
- 全空闲/全占据的节点无需展开;
- 含“占据-空闲”边界的节点,递归细分为8个子节点,直至最高分辨率。
- 核心原理:
- 继承Occupancy Grid的概率更新模型,体素存储占据概率;
- 利用树形结构的“层次性”与“稀疏性”压缩存储空间,避免为空白区域分配内存。
- 应用场景:
- 无人机导航与避障(3D路径规划);
- 机械臂抓取(感知工作区域障碍物3D位置);
- 需高效3D占据概率信息的机器人应用。

5. 体素哈希地图- 3D
(Voxel Hashing)由NIESSNER et al. 提出,专为高效、稠密的实时3D重建设计,解决均匀体素网格内存消耗大、八叉树稠密场景访问效率低的问题。
- 存储结构:
- 稀疏体素块:仅存储靠近物体表面的体素块(如8×8×8),而非整个空间或单个体素;
- 哈希表:键(Key)为体素块空间坐标(x,y,z),值(Value)为体素块数据指针。
在三维重建中,一种常见的方法是将空间划分为无数个小立方体(称为 体素,Voxel),每个体素存储一个信息(如是否被表面占据、到表面的距离等)。这就是所谓的 TSDF(Truncated Signed Distance Function,截断符号距离函数) 体积表示法。
- 传统方法(密集存储):为整个感兴趣的空间预先分配一个巨大的、均匀的三维数组。缺点是内存消耗巨大,且大部分内存被空的或未观察到的区域浪费了。无法用于大规模场景。
- 需求:我们希望在消费级GPU上,实时重建一个房间甚至一栋大楼,但GPU内存是有限的(通常几个GB到几十个GB)。
Voxel Hashing 就是为了解决这个“有限内存 vs. 无限空间”的矛盾而诞生的。
核心思想:稀疏化与哈希索引
- 哈希表实现O(1)访问效率,快速定位体素块;
- 内存仅与重建表面积成正比,大幅节省资源。
Voxel Hashing 的解决方案非常巧妙,它借鉴了计算机科学中经典的 哈希表(Hash Table) 概念。
-
只分配看到的体素:我们不为整个世界的每一个可能体素都分配内存,而是只为那些被传感器数据(如深度相机)观察到的、靠近物体表面的体素分配内存。这极大地减少了需要管理的数据量,实现了“稀疏存储”。
-
用哈希表来索引体素:如何高效地管理和访问这些稀疏分布的体素块呢?答案是使用哈希表。
- 键(Key):每个体素在世界空间中的三维坐标
(x, y, z)被转换成一个唯一的哈希键(Hash Key)。通常,这个键是通过一个简单的哈希函数计算得到的(例如,对坐标进行位运算并取模)。 - 值(Value):哈希表中存储的值是一个指针,指向该体素在GPU内存(显存)中实际存储数据的位置。这个数据就是该体素的TSDF值、权重、颜色等信息。
- 键(Key):每个体素在世界空间中的三维坐标
-
体素块(Voxel Blocks):为了进一步提升效率,通常不是对单个体素进行哈希,而是将
8x8x8或16x16x16的体素组成一个块(Block)。哈希表索引的是这些块的世界坐标。这样做的优点是:- 减少了哈希表的大小(条目数更少)。
- 提高了内存访问的局部性(Coalesced Memory Access),对GPU并行计算非常友好。
- 压缩了指针开销。
工作流程(Pipeline)
在一个典型的实时重建循环中(例如处理来自Kinect的每一帧深度图),Voxel Hashing 的工作流程如下:
第一步:数据关联(Data Association) - 当前帧 vs. 全局模型
- 从深度相机获取当前帧的深度图
D_t和颜色图C_t。 - 根据相机的位姿
T_t(通过传感器或ICP算法获取),将当前深度图反向投影到世界坐标系中,得到一堆三维点云。 - 对于这些三维点,找到它们所对应的体素块(即它们落在哪个
8x8x8的块里)。 - 计算这些体素块的世界坐标,并通过哈希函数快速查找哈希表,看这些块是否已经存在。
- 如果存在:则取出该块在显存中的指针,准备更新其中的体素数据。
- 如果不存在:则在哈希表中创建一个新条目,并在显存中为这个新的体素块分配内存,初始化其TSDF值和权重(通常为0),然后将指针存入哈希表。
第二步:TSDF融合(TSDF Fusion)
- 对于当前帧观察到的每一个体素
v,计算其TSDF值:- 将体素
v从世界坐标转换到当前相机坐标系。 - 投影到当前深度图上,找到对应的深度值
d。 - TSDF值
s=d - z(其中z是体素在相机坐标系下的Z值)。 - 如果
|s|大于一个截断距离μ,则忽略它(因为它离表面太远或太近,信息不可靠)。
- 将体素
- 加权平均融合:将当前帧计算出的TSDF值与全局模型中存储的历史值进行融合。
TSDF_new = (W_old * TSDF_old + w * s) / (W_old + w)W_new = W_old + w- 其中
w是当前帧的权重,通常与相机角度、测量噪声等有关,简单情况下可以设为1。
第三步:循环与维护(Looping and Maintenance)
- 哈希冲突处理:不同的坐标可能哈希到同一个键上,这就是哈希冲突。Niessner 的方案采用了一种“惰性”策略:在融合时如果发现冲突(两个不同的块争抢同一个哈希桶),则简单地丢弃较旧或不活跃的块,或者将其交换出去。这保证了速度,但牺牲了一点精度。
- 内存管理:随着相机移动,会不断分配新的体素块。系统需要一种策略来回收不再被观察到的体素块的内存(例如,基于LRU策略),防止内存被耗尽。
- 流程不断重复,新的帧不断被融合到全局的哈希表中,模型也就逐渐被重建出来。

6. 截断符号距离函数地图(TSDF)- 3D
存储隐式表面的地图形式,是高质量表面重建的核心技术,不直接记录占据信息。
- 存储结构:3D网格(均匀网格、体素哈希块等),每个体素存储两类信息:
- SDF值:体素中心到最近物体表面的“符号距离”(内部负、外部正);
- 权重:融合信息的置信度权重。
- 核心原理:
- 距离融合:每帧深度图计算射线体素的SDF值(体素到观测表面(障碍物曲面)的距离);
- 加权平均:新SDF值与历史值融合,多次观测后物体表面SDF值收敛到0(零等值面即物体精确表面)。
- 应用场景:
- 高精度3D重建(生成3D打印、影视特效的水密网格模型);
- RGB-D SLAM(如KinectFusion、ElasticFusion的后端优化与地图表示)。

7. 欧氏符号距离场地图(ESDF)- 3D
TSDF的“近亲”,专为导航与规划设计,计算“体素到最近障碍物的欧几里得距离”,而非TSDF的“表面重建距离”。
- 存储结构:3D网格,每个体素存储“距离值(恒正)”与最近障碍物坐标。
- 核心原理:
- 构建占据地图:通过Occupancy Grid或OctoMap生成二值化占据地图(空闲/占据);
- 距离变换:运行欧几里得距离变换(EDT) 算法,为每个空闲体素计算到最近占据体素的距离。
- 应用场景:
- 运动规划(无人机、机械臂轨迹优化,如CHOMP、FIESTA算法,利用梯度信息保证轨迹远离障碍物);
- 实时避障(机器人感知周围障碍物距离并快速反应)。

- Voronoi Diagram Map

TSDF vs ESDF
- TSDF
核心特点:距离表面超过截断阈值(±2)后,数值固定为截断值(不再随距离变化),表面仍为0。
🔵2 🔵2 🔵2 🔵2 🔵1 🔵1 🔵2 🔵2 🔵2 🔵2
🔵2 🔵2 🔵2 🔵1 🔵1 🔵1 🔵1 🔵2 🔵2 🔵2
🔵2 🔵2 🔴1 🔴1 🔴1 🔴1 🔴1 🔴1 🔵2 🔵2
----------------
🔵2 🔵1 🔴1 |🟠0 🟠0 🟠0| 🔴1 🔵1 🔵2 🔵2
🔵1 🔵1 🔴1 |🟠0 🔴-1 🟠0| 🔴1 🔵1 🔵1 🔵1
🔵1 🔵1 🔴1 |🟠0 🟠0 🟠0| 🔴1 🔵1 🔵1 🔵1
----------------
🔵2 🔵1 🔴1 🔴1 🔴1 🔴1 🔴1 🔵1 🔵2 🔵2
🔵2 🔵2 🔴1 🔴1 🔴1 🔴1 🔴1 🔵2 🔵2 🔵2
🔵2 🔵2 🔵2 🔵1 🔵1 🔵1 🔵1 🔵2 🔵2 🔵2
🔵2 🔵2 🔵2 🔵2 🔵1 🔵1 🔵2 🔵2 🔵2 🔵2
- ESDF
核心特点:物体内外均为真实欧氏距离,数值连续变化(无截断),物体内为负、外为正、表面为0。
🔵3 🔵3 🔵2 🔵2 🔵1 🔵1 🔵2 🔵2 🔵3 🔵3
🔵3 🔵2 🔵2 🔵1 🔵1 🔵1 🔵1 🔵2 🔵2 🔵3
🔵2 🔵2 🔴1 🔴1 🔴1 🔴1 🔴1 🔴1 🔵2 🔵2
----------------
🔵2 🔵1 🔴1 |🟠0 🟠0 🟠0| 🔴1 🔵1 🔵2 🔵2
🔵1 🔵1 🔴1 |🟠0 🟠0 🟠0| 🔴1 🔵1 🔵1 🔵1
🔵1 🔵1 🔴1 |🟠0 🟠0 🟠0| 🔴1 🔵1 🔵1 🔵1
----------------
🔵2 🔵1 🔴1 🔴1 🔴1 🔴1 🔴1 🔵1 🔵2 🔵2
🔵2 🔵2 🔴1 🔴1 🔴1 🔴1 🔴1 🔵2 🔵2 🔵2
🔵3 🔵2 🔵2 🔵1 🔵1 🔵1 🔵1 🔵2 🔵2 🔵3
🔵3 🔵3 🔵2 🔵2 🔵1 🔵1 🔵2 🔵2 🔵3 🔵3
| 对比维度 | ESDF(欧氏符号距离场) | TSDF(截断符号距离场) |
|---|---|---|
| 数值本质 | 真实欧氏距离,连续无截断 | 截断距离,超出阈值后固定数值 |
| 数值范围 | 无限制(随距离无限递增/递减) | 限定在[-截断阈值, 截断阈值](如±2) |
| 存储开销 | 较大(需存储所有距离值) | 较小(仅存储截断范围内的值,其余固定) |
| 表面表示 | 精确(0值严格对应物体表面) | 同样精确(0值对应表面,不受截断影响) |
| 适用场景 | 需精确距离计算(如路径规划、碰撞检测) | 实时建图(如RGB-D相机稠密建图) |
三、主流地图技术对比总结
| 地图类型 | 维度 | 存储结构 | 核心信息 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|---|---|---|
| Occupancy Grid | 2D | 均匀网格 | 占据概率 | 简单、成熟、高效 | 仅限2D平面 | 室内机器人导航 |
| Elevation Map | 2.5D | 均匀网格 | 高度值 | 比2D多地形信息 | 无法表示悬空物 | 无人车、野外机器人 |
| Point Cloud | 3D | 点列表 | 3D点坐标 | 构建简单、信息完整 | 无结构、数据量大 | 离线重建、可视化 |
| OctoMap | 3D | 八叉树 | 占据概率 | 稀疏、高效、带概率 | 分辨率固定、不够精细 | 无人机避障、机械臂 |
| Voxel Hashing | 3D | 哈希表+体素块 | SDF/颜色 | 内存效率极高、实时 | 实现复杂 | 实时AR/VR重建 |
| TSDF | 3D | 网格/体素块 | 截断符号距离 | 表面重建质量极高 | 计算量大、需GPU | 高精度3D重建 |
| ESDF | 3D | 网格 | 欧氏距离场 | 适合梯度规划 | 距离变换耗时 | 无人机/机器人运动规划 |
四、开源项目与链接验证
以下为各类地图技术对应的代表性开源项目,均已验证GitHub链接可正常访问:
| 地图类型 | 代表性开源项目 | GitHub链接(已验证) | 简介 |
|---|---|---|---|
| 2D Occupancy Grid | Google Cartographer | https://github.com/cartographer-project/cartographer | Google工业级激光SLAM,支持2D/3D占据栅格地图生成 |
| ROS Navigation Stack | https://github.com/ros-planning/navigation | ROS标准导航栈,map_server包加载/发布2D地图 |
|
| Hector SLAM | https://github.com/tu-darmstadt-ros-pkg/hector_slam | 无需里程计的激光SLAM,适配高速/不平坦地面 | |
| 2.5D Elevation Map | Grid Map | https://github.com/anybotics/grid_map | 通用网格地图库,支持海拔、方差等多图层,专为2.5D地形设计 |
| ROS Elevation Mapping | https://github.com/leggedrobotics/elevation_mapping | ETH为四足机器人ANYmal开发的实时高程映射包,基于Grid Map | |
| 3D Point Cloud | LOAM | https://github.com/laboshinl/loam_velodyne | 开创性激光里程计与建图方案,直接生成点云地图,效率高 |
| A-LOAM | https://github.com/HKUST-Aerial-Robotics/A-LOAM | LOAM进阶版,代码清晰,依赖Ceres Solver优化 | |
| OctoMap | OctoMap(官方库) | https://github.com/OctoMap/octomap | 完整C++实现,含地图类、概率更新、射线投射等核心功能 |
| OctoMap ROS | https://github.com/OctoMap/octomap_mapping | OctoMap与ROS的接口包,支持点云转OctoMap | |
| Voxel Hashing | Voxblox | https://github.com/ethz-asl/voxblox | 核心库,基于体素哈希实现TSDF与ESDF增量构建,适配机器人在线应用 |
| Voxel Hashing | https://github.com/niessner/VoxelHashing | 只分配看到的体素; 用哈希表来索引体素块; | |
| InfiniTAM | https://github.com/victorprad/InfiniTAM | 跨平台实时TSDF重建库,基于体素哈希 | |
| TSDF(Dense) | KinectFusion(开源实现) | https://github.com/Nerei/kinfu_remake | 微软KinectFusion非官方实现,用均匀体素网格,是TSDF领域开创性工作 |
| OpenChisel | https://github.com/personalrobotics/OpenChisel | 开源TSDF重建系统,实现类似KinectFusion的算法 | |
| ElasticFusion | https://github.com/mp3guy/ElasticFusion | 经典稠密SLAM,用面元(Surfel)表示地图,重建效果极佳 | |
| ESDF | Voxblox(ESDF模块) | https://github.com/ethz-asl/voxblox | 从TSDF层增量构建ESDF的高效算法,集成于Voxblox |
| esdf_server(Voxblox ROS) | 含于Voxblox的ROS包中 | 订阅点云/OctoMap,发布构建好的ESDF | |
| FIESTA | https://github.com/hku-mars/FIESTA | 港大火星实验室开源,直接从点云构建ESDF,速度快,适配规划场景 | |
| 其他 | Teach-Repeat-Replan | https://github.com/HKUST-Aerial-Robotics/Teach-Repeat-Replan | TRR’s Local Map |
| Voronoi Diagram Map | https://github.com/ethz-asl/mav_voxblox_planning | 拓扑地图; 用节点(关键位置)和边(连通关系)表示环境,适用于大场景路径规划 |
五、技术选型与实践建议
1. 入门与2D场景验证
- 优先选择 ROS Navigation Stack + Hector SLAM,仅需一台激光雷达即可快速实现2D建图与导航,降低入门门槛。
2. 3D占据感知(无人机/机械臂)
- 核心选型 OctoMap:通过SLAM前端(如A-LOAM)生成点云,再用
pointcloud_to_octomap节点转换为OctoMap,直接用于3D避障与空间感知。
3. 高质量3D重建
- 若需精细模型(如3D打印、影视),研究 InfiniTAM 或 OpenChisel,输入设备选择RGB-D相机(如Realsense、Kinect)。
4. 高级导航与运动规划
- 首选 FIESTA:专为规划设计,直接从点云构建ESDF,速度快,适配无人机高速飞行等场景;
- 次选 Voxblox:若系统已基于TSDF(需同时实现重建与规划),可一站式解决TSDF与ESDF构建。
5. pcd & ply
-
.pcd(Point Cloud Data)
是由 PCL(Point Cloud Library,点云处理最主流的库)专门为点云处理量身设计的原生格式,所有设计都围绕点云的特性优化,没有兼顾其他3D数据类型。.pcd 结构(点云专属)
头部会精准定义点云的核心元数据,结构紧凑且针对性强,示例:
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7 # 格式版本
FIELDS x y z rgb # 点的字段(坐标+颜色)
SIZE 4 4 4 4 # 每个字段的字节数
TYPE F F F U # 字段类型(F=浮点型,U=无符号整型)
COUNT 1 1 1 1 # 每个字段的元素数
WIDTH 10000 # 点云宽度(点数量,有序点云为列数)
HEIGHT 1 # 点云高度(1=无序点云,>1=有序点云)
VIEWPOINT 0 0 0 1 0 0 0 # 采集视角(传感器位姿)
POINTS 10000 # 总点数
DATA binary # 数据存储方式(binary/ascii)
- .ply(Polygon File Format)
也叫“斯坦福多边形格式”,最初设计用于存储多边形网格(3D模型),后来扩展支持点云,是通用的3D几何文件格式(可同时存点和面)。
.ply 结构(通用3D)
头部定义“元素类型”(顶点/面),支持同时存储点和网格,示例:
ply
format ascii 1.0 # 格式版本+存储方式
element vertex 10000 # 顶点(点云)数量
property float x # 顶点字段定义
property float y
property float z
property uchar red # 颜色字段
property uchar green
property uchar blue
element face 0 # 面(网格)数量(0=无网格)
end_header # 头部结束
关键能力对比
| 维度 | .pcd | .ply |
|---|---|---|
| 元数据支持 | 支持点云专属元数据(传感器、视角、时间戳) | 通用元数据,无点云专属字段 |
| 数据类型 | 专为点云优化,解析效率高 | 通用字段定义,需手动映射解析 |
| 兼容数据类型 | 仅点云(支持有序/稀疏点云) | 点云 + 网格(多边形) |
| 工具兼容性 | 仅PCL、CloudCompare等点云工具原生支持 | Blender、MeshLab、MATLAB、Python等几乎所有3D工具原生支持 |
| 跨平台/跨软件 | 差(需插件) | 优(通用格式) |
| 适用场景 | PCL开发、激光雷达点云处理、需传感器元数据 | 跨工具分享、点云+网格结合、通用3D场景 |
实用选择建议
- 如果你用 PCL库做算法开发、处理激光雷达/深度相机的点云(需要记录传感器信息、有序点云)→ 选
.pcd; - 如果你需要 跨软件分享点云(比如Blender建模、MeshLab可视化)、或点云附带网格信息 → 选
.ply; - 二进制版本的两者文件大小接近,ASCII版本
.pcd更紧凑,.ply可读性更强。
总结
- 核心定位:
.pcd是点云专用格式(PCL生态首选),.ply是通用3D格式(支持点+面); - 兼容性:
.ply跨软件/平台兼容性远优于.pcd,.pcd仅在PCL开发中优势明显; - 场景选择:需传感器元数据/PCL开发选
.pcd,需跨工具分享/含网格选.ply。
主要参考
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)