ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

049、3D-VLA三维空间理解VLA:空间推理与动作生成的结合

049、3D-VLA三维空间理解VLA:空间推理与动作生成的结合 049、3D-VLA三维空间理解VLA空间推理与动作生成的结合调试机器人抓取的时候我盯着那个点云可视化窗口看了整整一个下午。机械臂明明已经对准了杯子但抓取成功率就是上不去每次都是差那么两三厘米。后来我把CLIP的特征投影到三维空间里看才发现问题根本不在控制精度上——模型压根就没理解“杯子的把手在哪个方向”。那一刻我意识到二维的视觉语言模型再怎么调到了三维空间里就是个瞎子。今天聊的3D-VLA就是冲着这个痛点去的。先说说为什么二维VLA在机器人上不顶用。你拿一张RGB图给模型看它知道“红色的杯子在桌子上”但你要让它去抓它得知道杯子的三维坐标、朝向、以及机械臂末端执行器该怎么绕过去。二维图像里那个“杯子”只是一个像素集合没有尺度概念没有深度信息更别说物体之间的空间遮挡关系了。我见过不少团队直接把LLaVA的输出接上动作头结果在仿真里跑得欢一到真机上就露馅——因为仿真里的深度图是完美的真机上的点云是带噪声的还有各种反光、透明材质捣乱。3D-VLA的核心改动是把视觉编码器从二维的ViT换成了三维的稀疏卷积网络输入直接吃体素化的点云。别小看这个改动它带来的第一个麻烦就是计算量。一个256分辨率的三维体素网格体素数轻松破百万你要是像处理二维patch那样搞全局注意力显存直接爆炸。3D-VLA的做法是先用稀疏卷积做降采样只在有物体的区域保留特征然后把这些稀疏特征投影到二维平面上和文本特征做交叉注意力。这个设计很聪明既保留了三维几何信息又不至于让Transformer吃不下。代码实现上最坑的是体素化那一步。我一开始用固定分辨率的体素网格结果物体稍微远一点体素就稀疏得跟筛子似的特征全丢了。后来改成自适应分辨率——根据点云包围盒动态调整体素大小效果立竿见影。这里有个细节体素化之前一定要做体素滤波去噪不然那些离群点会在稀疏卷积里产生大量无效计算。我当时偷懒没做训练速度直接慢了三倍还以为是代码写错了。空间推理这块3D-VLA引入了一个叫“空间关系编码器”的模块。它把物体之间的相对位置关系比如“在左边”“在右边”“在正上方”显式编码成向量和视觉特征拼接在一起送进语言模型。这个设计让我想起之前做导航时用的空间记忆网络但3D-VLA做得更彻底——它直接在训练数据里标注了物体间的空间关系让模型学会主动推理。比如你告诉它“把杯子放到盘子的右边”它不只是匹配“右边”这个文本而是真的在三维空间里计算目标位置。动作生成部分3D-VLA没有走端到端的老路而是分成了两步先预测末端执行器的目标位姿再用一个独立的控制器去执行。这个分离设计在工程上特别实用因为你可以单独替换控制器而不影响空间推理部分。我当时在真机上测试发现预测的位姿精度在平移上能到1厘米以内但旋转误差偶尔会到5度以上。后来查了代码发现是旋转表示用了欧拉角遇到万向锁就翻车。换成四元数之后旋转误差降到了2度以内。这个坑你们一定要避开别用欧拉角做回归头。训练数据这块3D-VLA用的是仿真环境生成的大规模三维指令数据。我试过直接用公开数据集但发现里面的物体类别和真实场景差太多迁移效果很差。后来自己搭了一套程序化生成管线随机摆放物体、随机生成指令配合Domain Randomization才勉强在真机上跑通。这里有个经验仿真数据里一定要加入随机光照和相机位姿扰动不然模型会对视角特别敏感换个角度就认不出物体了。调参的时候有个现象特别有意思——学习率对空间推理模块的影响远大于对语言模型部分的影响。我一开始用统一的学习率结果语言模型部分收敛得挺好但空间关系编码器一直学不进去。后来把空间模块的学习率调大三倍效果立竿见影。我猜是因为三维特征和文本特征在梯度尺度上不匹配统一学习率会让空间模块更新太慢。部署到真机上最头疼的是推理延迟。3D-VLA的完整前向传播要跑稀疏卷积加Transformer在Jetson Orin上大概要200毫秒。对于静态抓取还行但要是做动态任务就来不及了。我试过把稀疏卷积换成TensorRT加速能压到120毫秒但精度掉了不少。后来发现可以只在关键帧做完整推理中间帧用线性插值预测位姿这样能把有效控制频率提到10Hz基本够用了。最后说点个人经验。3D-VLA这种架构最适合的场景是那些需要精确空间关系的任务比如装配、堆叠、分拣。但如果你只是做简单的“抓起来放下”二维VLA加个深度估计可能更划算。别盲目追求三维先想清楚你的任务到底需不需要空间推理。另外真机测试前一定要在仿真里做足对抗性测试——故意把物体放到遮挡位置、用透明容器、加各种反光材质这些在仿真里都能模拟但很多人懒得做结果一到真机就崩。还有个小技巧训练的时候把点云的坐标原点放在机械臂基座而不是相机坐标系。这样模型学到的空间关系是机器人本体坐标系下的泛化性会好很多。我一开始用相机坐标系换个相机位置模型就废了改成基座坐标系之后随便挪相机都能正常工作。3D-VLA不是终点但它指了一个明确的方向——让模型真正理解三维空间而不是在二维像素上自欺欺人。如果你正在做VLA相关的项目我建议先别急着上大模型花一周时间把空间特征表示这块想清楚比什么都值。
返回列表