文献阅读

本文仅作为本人阅读文献时的随记,充斥着和ai交流的产物以及个人粗浅的想法。

简而言之,RoboSplat 的技术流程主要包括重建预处理、自动化编辑增强和策略训练三个阶段。

alt text

高保真重建与帧对齐

基于3DGS的场景重建

  • input:一组多视角RGB图像
  • Layer1(COLMAP):基于特征点匹配计算拍摄时的相机位姿,生成一个稀疏的3D点云
  • Layer2(Depth Anything):基于RGB图像预测其深度图效果
  • Layer3(3DGS):将经过前面步骤得到点云和深度图数据作为3DGS算法输入,迭代得到由一组3D高斯椭球组成的3D场景,本质上地,输出了一系列球谐函数的列表,用球谐函数定义了高斯椭球的大小、位姿、颜色、透明度信息
  • Layer4(ICP):由于 3DGS 生成的坐标系是随机的,需要将其与真实世界坐标系对齐。先用ICP算法即迭代最近点算法进行粗对齐,大意就是比较机器人URDF模型和3DGS点云数据,让两坨点尽可能靠近
  • Layer5(可微对齐):3DGS 像神经网络一样,支持反向传播。此处准备基于URDF的标准影和基于3DGS的重建影,定义损失函数[L{align} = \frac{1}{N} \sum{i=1}^{N} (I{URDF,i} - I{Gaussian,i})^2],在迭代中尽量消除差值使得坐标系精密对齐
    alt text
    -Layer6(Grounded-SAM):场景分解,把一个死板的 3D 快照变成了一个可交互的 3D 积木箱,每个零件都可以被独立控制和替换

六维度的自动化增强

  • 物体位姿(Object Pose):通过等变变换(Equivariant Transformations)调整物体位置,并同步更新关键帧的末端执行器位姿。
    物体种类(Object Type):结合 GPT-4 生成物体名称,利用 3D 内容生成模型创建新物体,并使用 AnyGrasp 生成抓取位姿。
  • 相机视角(Camera View):利用 3DGS 的新视角合成能力,在球坐标系内随机化相机位置。
  • 机器人本体(Embodiment Type):将演示中的机器人高斯模型替换为其他型号(如从 Franka 切换到 UR5e),实现跨本体泛化。
  • 场景外观(Scene Appearance):使用 COCO 数据集图像或重建的其他 3D 场景替换背景。
  • 光照条件Lighting Condition:通过对每个高斯球的漫反射颜色进行随机缩放、偏移和添加噪声来模拟不同的光照。

策略训练

采用基于 Transformer 的架构,以 RGB 图像和机器人状态作为输入,通过行为克隆(BC)端到端预测动作序列,这一点还有待后续的阅读和理解。

环境配置踩坑记录

官方README的步骤已经足够详细,下面只记录关于平台、镜像、install时注意构建隔离等自己踩过的坑。
1. 平台选择
放弃 WSL (Windows Subsystem for Linux),转用原生 Linux 服务器。WSL 在涉及 CUDA 底层编译及 GPU 驱动调用时存在兼容性问题,原生 Linux 环境更稳定。

2. 代码获取
针对 GitHub 连接超时问题,使用镜像源配合 git clone --depth 1 命令,仅拉取最新 commit,显著减少下载体积并提高成功率。

3. 核心编译(关键)

  • 依赖配置:编译 PyTorch3D 前,需手动下载 NVIDIA CUB 库并设置 export CUB_HOME=/path/to/cub 环境变量。
  • 构建隔离:安装 diff-gaussian-rasterization 等 CUDA 扩展库时,必须添加 --no-build-isolation 参数。
    • 原因:pip 默认开启构建隔离,会创建临时的虚拟环境,导致无法调用当前环境中已安装的 GPU 版 PyTorch,从而引发编译失败。该参数强制使用当前环境依赖。

4. 数据准备
鉴于服务器无法直接访问 Google Drive,采用“本地下载 + SCP/FTP 传输”至服务器的方案。