第一次拿到 HandBot-S2 的时候,我第一反应其实是有点怀疑的。一台手持设备,靠着多传感器融合 + SLAM,在号称能覆盖 100 万平大场景的同时,还能直接给 3DGS 建图管线喂数据——这放在三年前是想都不敢想的事。当时我还在用激光雷达 + 组合导航在园区里一遍一遍补轨迹,最后用 COLMAP 跑稀疏重建累得半死。所以这篇东西我不想写成产品说明书,我想从一个实际折腾过 SLAM、也踩过 3DGS 重建坑的从业者角度,聊聊这种设备背后的技术逻辑、实际干活时的流程,以及那些厂商不会写在宣传页上的经验。
这套东西能做什么?简单说:它把“定位建图”和“三维重建”两件事串成了一条流水线。一方面通过多传感器融合输出高精度轨迹和点云地图;另一方面用建图得到的位姿直接驱动 3DGS 训练,省掉了传统的 SfM 环节。适合谁用?做机器人导航的、做数字孪生的、搞城市级三维重建的,以及研究 SLAM 和神经渲染方向的硕博生,基本都能从这套链路里找到自己需要的部分。
1. 先搞清楚 HandBot-S2 到底解决了什么问题
1.1 大场景 SLAM 的痛点在哪里
我们常规做的室内 SLAM,走一圈走廊,几十米见方,激光雷达 + IMU + 回环检测基本能压住漂移,精度也能做到厘米级。但是一旦把场景放大到 100 万平——差不多是 140 个标准足球场——很多原本“能用”的算法会瞬间失效。
首先是漂移问题。纯惯导 + 激光里程计即使再有回环,在超大范围下也难免累积误差。回环检测需要在场景里转回原点,而园区、矿区、地下停车场这类环境往往存在大量重复结构,回环检测极容易误匹配。其次是数据量,100 万平的点云如果以 1cm 分辨率采集,原始数据量是 TB 级别的,这对存储和后处理都是巨大压力。最后是绝对精度,很多应用场景要求最终地图有全局一致性,不能只是“局部看着不飘”。打比方说,一个小区建模,你把 A 栋楼和 B 栋楼的相对位置搞错了 20 厘米,在图纸上验收就是不合格。
所以 HandBot-S2 这类设备上来就打“100 万平”和“多传感器融合”两张牌,本质是告诉你两件事:第一,我有办法控制大场景下的累积漂移;第二,我除了点云还有一套完整的后处理体系。这个定位非常聪明。
1.2 3DGS 建图不等于“拍拍照就能出模型”
3DGS 也就是 3D Gaussian Splatting,最近两年火得一塌糊涂。它的核心是用一堆三维高斯函数去拟合场景的辐射场,再用实时渲染的方式得到任意视角下的图像。相比 NeRF,3DGS 训练更快、渲染更快、细节也更锐利。
但是有个误区很多人没意识到:3DGS 的输入不是“图像”那么简单,它需要每张图像对应的相机位姿。位姿不准,高斯点云就是糊的,训练出来的模型会出现各种鬼影和漂浮物。传统做法是用 COLMAP 这类 SfM 工具从图像里反算相机位姿,可 COLMAP 对弱纹理、重复纹理、光照剧烈变化的场景非常脆弱,而且大场景跑一次 COLMAP 要数小时甚至数天。
HandBot-S2 这类设备的关键价值就在这里:它用激光 SLAM 实时把相机位姿算好了,然后把这些位姿直接丢给 3DGS 训练管线。相当于把“先拍照、后反算位姿”变成了“边扫边走、位姿随手可得”。这一步省掉的时间,往往能把整个项目周期从两周压缩到两三天。
1.3 这套设备适合谁,不适合谁
说句公道话,HandBot-S2 并不是老少通吃的。如果你只是在一个几十平的房间里做一个桌子级物体的 3DGS 重建,用手机绕一圈进 Polycam 就完事了,没必要上这种工业级扫描设备。你的需求是测量级精度、公里级范围、室外强光、复杂地面环境,这时候多传感器融合扫描仪才有无可替代的优势。
适用人群很清晰:一是做园区/厂区数字孪生的工程师,需要厘米级点云加实景重建;二是搞机器人导航算法的人,需要一个高精度的真值地图来验证自己的定位模块;三是做 SLAM + 神经渲染研究的同学,需要一套够扎实的数据采集方案来支撑论文实验。反过来,预算有限、场景固定、精度要求只有分米级的人,用消费级手持 LiDAR 加手机拍图就够了,没必要为多传感器融合的附加价值买单。
2. 多传感器融合方案的核心思路
2.1 传感器阵容与各自在融合中的角色
要理解这种设备的融合逻辑,先看它的传感器配置主要有哪些:激光雷达、IMU、GNSS/RTK,以及用于 3DGS 建图的高分辨率相机。有人会问,既然激光雷达能测距、IMU 能测姿态,为什么还要加相机和 RTK?这就要说到每种传感器的天然局限。
激光雷达精度高、测距远,但怕雨雾,而且在长走廊、隧道这种几何特征匮乏的场景里,纯点云配准会退化。IMU 高频输出相对位姿,不依赖外部环境,但它的致命弱点是漂移,积分几秒还行,积分几分钟就不知道偏到哪里去了。GNSS/RTK 能提供绝对的经纬度坐标,但高楼峡谷、树荫下信号遮挡严重,尤其室内直接失效。相机呢,信息丰富但深度不可靠,纯视觉 SLAM 在弱纹理场景里特别容易跟丢。
所以融合的本质是取长补短。用 IMU 做高频运动先验,用激光雷达做精确的局部约束,用 RTK 在开阔地带提供全局锚点,再让相机为后续 3DGS 提供纹理和色彩。这套系统之间不是串联关系,而是并联关系:任何单一传感器失效或退化的时侯,其他传感器要能把系统托住。
2.2 松耦合还是紧耦合:融合架构的选择逻辑
多传感器融合大体分两种路线,一种叫松耦合,一种叫紧耦合。
松耦合的意思是,每个传感器各自跑一套估计,最后拿结果去融合。比如视觉 SLAM 出一套位姿,激光 SLAM 出一套位姿,再用卡尔曼滤波做一个加权平均。这种方式实现简单、模块清晰,但问题在于单个传感器已经“确定”了自己的结果,融合环节很难再纠正内部错误。用大白话说,两个人都可能看走眼,你拿着两个错误的答案做平均,得到的还是错误的。
紧耦合则是把不同传感器的原始观测数据丢进同一个优化模型里,统一求解位姿。比如把图像特征的重投影误差、激光点到面的距离残差、IMU 预积分残差放进同一条因子图里,一块儿优化。这种方式精度上限高,容错性强,但对算力和系统设计的要求也高得多。
HandBot-S2 这类设备几乎一定会用紧耦合方案,因为大场景下单一传感器肯定会频繁进入退化场景,松耦合根本扛不住。实际做算法落地的朋友,如果在自研系统里选型,我建议优先考虑 LIO-SAM、FAST-LIO2 这类紧耦合框架做底子,然后把自己需要的视觉和 RTK 约束以因子形式加进去。不要嫌麻烦,紧耦合带来的精度提升在复杂场景下是肉眼可见的。
2.3 为什么大场景必须引入 RTK/PPK 这类绝对约束
SLAM 的本质是一个递推估计问题:当前位置是在上一帧基础上猜出来的。既然每一步都有误差,时间一长误差就会像滚雪球一样越滚越大。回环检测是修正这个问题的核心手段,但 100 万平的大场景不是处处都有条件让你转回原点的。
园区空地上、道路交叉口、屋顶平台,这些位置虽然开阔,却恰恰是激光雷达“无特征可配”的高危区域。这时候 RTK 的价值就体现出来了。RTK 能在开阔地带提供厘米级的绝对定位,虽然它也可能因卫星遮挡而中断,但只要在有效期内拿到足够多的可靠观测,就能在图优化里把这些“绝对约束”塞进去,修正累积漂移。
如果你在做相关项目,又买不起实时 RTK 服务,可以考虑 PPK(Post-Processed Kinematic)后处理差分方案:采集时只记录原始卫星观测数据,回办公室后再结合基站数据做高精度轨迹解算。这么做的好处是现场不需要网络,成本也低,缺点是不能实时看到绝对精度。HandBot-S2 这类设备既然定位在大场景,那大概率同时支持 RTK 和 PPK 两种模式,做数据采集前务必确认好你这趟活该用哪种。
2.4 SLAM 后端优化:因子图与位姿图的关键作用
把多传感器数据融合起来之后,还缺一个“总装车间”,就是 SLAM 后端的图优化部分。现在主流做法是因子图优化。你可以把因子图理解成一张网,网上的节点是不同时刻的机器人位姿,网上的连线是各种约束。
激光里程计给出“相邻帧位姿不能突变”的约束,IMU 预积分给出“速度和旋转必须符合物理规律”的约束,RTK 给出“当前位置应该落在某个经纬度”的约束,回环检测给出“你回到了之前到过的地方”的约束。后端优化要做的,就是调整所有节点的位置,让所有约束的残差总和最小。这就是所谓的最小二乘问题,一般用 GTSAM、g2o 这类库求解。
实际工作中,我这里特别想提醒一点:后端的鲁棒核函数一定要加上。真实数据的传感器噪声并不是高斯分布,RTK 偶尔会有跳变,回环检测偶尔会出错,如果不加 Huber 核或 Cauchy 核,一个异常值就有能力把整张图优化带偏。这是我踩过无数次坑后学会的教训。
3. 实操:从标定到出图的一条龙流程
3.1 出工前的标定环节:相机内参、Lidar-相机外参、IMU
很多人买了设备回来就急着去采集,结果建图稀烂,最后怪设备不行。其实大半问题出在标定上。多传感器融合系统的标定,是所有精度的地基。
第一步是相机内参标定。用棋盘格或 AprilGrid,多角度拍摄几十张,跑 Kalibr 或者 OpenCV 就能输出焦距、主点、畸变系数。这一步看似基础,但直接影响后续图像与点云的投影关系。第二步是 Lidar 和相机之间的外参标定,也就是算出激光雷达坐标系和相机坐标系之间的旋转和平移。这个可以用 Autoware 的标定工具,也可以手工选点做配准,但精度不好保证。我个人的经验是用 kalibr 做相机-IMU 标定,然后用 targetless 方法做雷达-相机标定,全流程在 ROS 环境下跑通,效果一直在可用范围。
然后是最容易被忽略的时间同步。相机出图有曝光延迟,雷达扫描有旋转周期,IMU 有数据发布延迟,哪怕传感器坐标标得再准,如果时间戳对不上,融合出来的位姿也是错位的。HandBot-S2 这类一体设备一般出厂已做过硬件同步和标定,但如果你拿到的是二手或测试机,还是再做一遍较稳。
3.2 采集路线的规划与具体技巧
实测下来,100 万平的大场景,扫描路线规划的优先级甚至比设备参数还高。路线规划的核心目标有两个:一是避免漂移,二是保证 3DGS 重建有足够的视角覆盖。
先说漂移。既然回环是修正全局一致性的关键,那么采集路线就应该有意识地制造回环。我在做园区扫描时,通常会把路径设计成“外圈一圈 + 内部蛇形”,每隔一段再回到主路线上,让轨迹形成多个闭合回路。途中经过开阔区域也不要走直线一条道走到黑,多绕几个弧形,给后端优化更多约束。
再说 3DGS 的视角覆盖。高斯泼溅重建的质量取决于图像之间的视差和重叠度。理想的采集方式是让相机以较慢的速度移动,保证相邻帧重叠度在 80% 以上,同时同一区域至少从两个方向扫描一次。拍天空和大范围纯色墙面的时候,不要停留太久,这些区域特征稀疏,对位姿估计和重建都没有正面帮助。
手持设备还有一个优势,就是可以自由调整高度。低矮的灌木、路沿、车底位置,可以用低角度补扫;建筑物的檐口、挑檐这类结构,可以适当抬高设备,让相机获得更多俯仰视角。这一点比车载扫描灵活得多,也是我为什么更愿意用手持设备而不是车顶支架的原因。
3.3 点云地图的生成与位姿导出
采集完成后,Step 1 是把原始数据送进设备的建图软件或自己的算法框架里,生成全局一致的点云地图。在这个阶段,重点看两个指标:一是轨迹闭合后起点和终点的偏差,二是不同回环路段点云的吻合程度。
如果自己动手做,那我强烈建议把手里的轨迹导出后用 evo 工具评估一下精度。evo 是 SLAM 领域最常用的轨迹评估工具,用法不复杂。在装了 evo 的环境里,一条命令就能算绝对位姿误差(APE):
evo_ape tum groundtruth.txt estimated.txt -a -v如果只有里程计而没有真值,也可以用 evo_rpe 算相对位姿误差,这能看出系统在局部时间窗口内的稳定性。无论结果好坏,都要把 evo 的评估报告存档,这既是验收依据,也是后续调参的对比基准。
点云地图生成后,建议顺手做一步“去畸变”和“降采样”。传感器在大机动和快速转弯时,激光点云会出现运动畸变,这在高斯训练时会产生很严重的伪影。用 VoxelGrid 把点云统一降采样到 1~2cm 分辨率,既能加快后续处理速度,也能在高斯初始化时避免点过于密集导致的重复结构。
3.4 用 SLAM 位姿驱动 3DGS 训练的具体做法
这是 HandBot-S2 这类设备最亮眼的地方:把激光 SLAM 位姿直接喂给 3DGS。相比传统的“COLMAP 先重建稀疏点云再训练”,这条路线省掉了一个巨大的时间黑洞。
具体操作上,你需要先搞清楚设备输出的相机位姿格式,一般是每张图像对应一个 4x4 的变换矩阵,或者一个 quaternion + translation 的组合。然后把它转换成 3DGS 训练框架需要的格式,比较常用的是 Nerfstudio 和 gsplat。在 Nerfstudio 里,用ns-process-data可以同时导入图像和位姿,其中位姿文件支持 COLMAP 格式,也可以直接用 transforms.json。你需要做的,就是写一个脚本,把 SLAM 轨迹出转化为 transforms.json:
{ "fl_x": 1200.0, "fl_y": 1200.0, "cx": 960.0, "cy": 540.0, "w": 1920, "h": 1080, "frames": [ { "file_path": "images/000001.png", "transform_matrix": [...] } ] }这里面的 fl_x、fl_y 就是相机焦距,cx、cy 是主点,全部从前面标定得到的内参里填进去。transform_matrix 是从相机坐标系到世界坐标系的齐次变换矩阵[R|t],注意行列顺序要和框架要求一致。填错了最常见的表现就是训练出来的高斯点云是“炸开”的。
位姿喂进去后,直接用 gsplat 或 Nerfstudio 跑训练。如果效果出现模糊,优先检查位姿精度和图像质量;如果出现分层和重影,多半是时间同步问题;如果训练速度很慢,先降图像分辨率到 1.5K 左右,够用就行。
训练完成之后,可以用 SIBR Viewer 或者 Nerfstudio 自带的 Web Viewer 实时查看重建效果。有一步很多人忽略,就是用训练好的高斯模型导出网格或者点云,再回到 CloudCompare 里和原始激光点云做一次对比,量化高斯表面的几何误差。这样才能真正说清楚“重建效果到底好在哪里”。
4. 常见问题与排查技巧实录
4.1 大场景漂移:回环闭合不上怎么办
先说最常见的情况:轨迹在同一条路上来回走了两遍,但建图软件认为这是两条不同的路,回环检测就是闭不上。原因通常有三种:一是两遍数据采集时视角和高度差异太大,点云或图像特征都对不上;二是这条路本身太“素”,没有标志物;三是采集过程中传感器时间同步出现了跳动。
排查思路也按这个顺序来。第一,看采集日志,确认传感器时间戳是否连续;第二,检查两条轨迹经过同一路段时设备的姿态角差异,如果超过 30 度,回来后要想办法手工添加回环约束;第三,如果场景实在没特征,就在关键路口放几个有明显几何特征的标定板,再走一遍补采。别指望纯后端优化能解决所有特征缺失问题,现场没采好,就是没采好。
4.2 相机图像模糊:建图能过但 3DGS 效果差
我遇过不少次,点云地图建得漂漂亮亮,可 3DGS 训练出来全是“糊的”。把训练日志翻出来一看,PSNR 数值也不差,但视觉观感就是不对。这时候十有八九是相机图像本身出了质量问题。
手持设备扫描时,人走路会有自然晃动,快门速度不够的话画面就是拖影的。建议把快门时间固定在一个比较短的值,比如 1/250s 以上,同时把 ISO 上限压低,避免夜景噪点。另外采集中尽量走稳,不要边走边左右摇头看手机。高频抖动对激光 SLAM 影响不大,但对图像序列的模糊影响是致命的。
还有一个容易踩的坑是自动曝光。3DGS 训练假定所有图像的曝光是基本一致的,如果户外场景阳光强弱变化剧烈,自动曝光会导致同一面墙在图像里一会儿亮一会儿暗,训练出来的高斯就会学出一层“半透明滤镜”。解决办法是固定曝光参数,或者在后处理时先做一下亮度均衡。
4.3 数据量爆炸:磁盘和内存被瞬间占满
100 万平的大场景,传感器全开的状态下,每小时的原始数据量可以轻松飙到几十 GB。如果不做规划,一张 512GB 的 SD 卡,半天就满了。而且后处理时点云加图像同时加载,内存稍小一点的机器直接卡死。
我的经验是:采集端的存储要按“图像、点云、IMU/GNSS”分目录存放,现场每隔一小时拷贝一次,不要等收工再拷。同时按里程或时间给数据分段,比如每 500 米一个文件夹,这样后处理可以分块建图,再在全局优化里拼接。3DGS 训练的时候也建议用分块策略:先按区域把场景切成 20 米见方的 tile,分别训练高斯模型,最后再合并。不要尝试一次把所有 Tile 塞进显存,4090 也扛不住。
注意:大场景 3DGS 合并不是简单地把两个点云文件拼起来,要做连接处的重叠区域裁切和密度归一化,否则会出现明显的接缝。
4.4 融合精度反复评估与验收建议
做项目就要有交付标准。我在项目里通常采用三档验收:粗验范围、中验几何、精验细节。
粗验范围就是把建好的点云导入 CloudCompare,和现场已知的建筑物边界、道路边线做肉眼比对,看整体轮廓有没有大的扭曲。中验几何是用 RTK 在现场测几个控制点,把这些控制点和点云上的对应位置做误差统计,算出 RMSE,业余级项目允许 5cm 以内,严格一些的要在 2cm 以内。精验细节是挑一个复杂结构,比如厂房的钢架节点、设备管道法兰,查看点云模糊度和重影程度,这个没有量化指标,主要靠经验判断。
这套验收流程同样适用于评估 3DGS 结果。尤其做科研工作的时候,不要只看渲染图像好不好看,一定要把高斯模型中心点导出来和激光点云做一次 ICP 或 C2C 距离计算,用数字说话。审稿人和甲方都吃这一套。
4.5 环境因素:恶劣天气和光照怎么办
多传感器融合设备也不是万能的。大雨天激光雷达点云会被雨滴打散,图像也会被雨线干扰;大风天手持设备的晃动频率会异常,IMU 数据可能出现零偏漂移。我通常的做法是:避开雨雪天气,选择阴天或多云的日子采集,因为阴天的光照均匀,既不会有过曝光问题,也能减少硬阴影对图像特征的影响。
逆光场景要小心。如果太阳在视线正前方,图像的动态范围会急剧下降,暗部细节全部丢失。这时候要么调整路线方向,要么选在早晨或傍晚日照角度低的时候采集。干这行时间长了你会明白:数据采集是一场“看天吃饭”的活,做好规划和预案比设备堆料更重要。
5. 这份工作带来的习惯和一点实在建议
做了一段时间大场景 SLAM + 3DGS 之后,我的一个强烈感受是:整个行业的门槛正在被这类“一体化设备”大幅拉低。以前要自己攒传感器、写融合代码、调标定参数的活,现在出厂就给你整合好了,你要关心的重点从“怎么把位姿算出来”变成了“怎么把数据采好、把模型验好”。这对于行业来说是好事,能把大量精力从重复造轮子中解放出来。
但我还是想说一句掏心窝的话:工具再聪明,也别把基本功丢掉。我见过不少人拿到了高精度轨迹和点云,就完全放弃理解 SLAM 的原理,一旦设备在复杂环境里给出一个错误的“高置信度”结果,他根本意识不到哪里出了问题。HandBot-S2 给了你一条捷径,但你仍然需要知道这条路底下埋着什么。
如果你准备开始接触这套东西,我的建议是把第一个项目定得小一点,比如先扫一个 2000 平的街区,完整跑通“标定 → 采集 → 建图 → 3DGS → 精度评估”全流程,再逐步放大场景。踩过一次坑之后,你才能真正体会大场景融合建图的每一处细节有多关键。到时候,100 万平的大场景,对你来说也不会是难事了。