☰
InfraVLA:让机器人借助监控摄像头实现上帝视角导航
2026/10/15 10:48:33 网站建设 项目流程

我做机器人导航这些年,被问得最多的一个问题不是“激光雷达该怎么选”,而是“InfraVLA到底能不能落地”。这名字乍一听很唬人,拆开就三块:Infrastructure(基础设施)、Vision-Language-Action(视觉-语言-动作模型)。说白了,就是让机器人“偷看”仓库、车间里早就装好的监控摄像头,用这些俯视全局的固定画面来完成定位、理解和导航决策。

这套思路最颠覆的地方,是把机器人感知从“第一人称”换成了“第三人称”:机器人不再只靠装在脑袋上的传感器摸黑探路,而是直接借用头顶摄像头的眼睛,回答三个灵魂问题——我在哪、目标在哪、中间怎么走。不过大家讨论最凶的其实是一个更接地气的问题:既然机器人轮子上已经有编码器了,为什么还要费劲去“看”监控?光加编码器难道不够吗?今天这篇就把这事彻底掰开揉碎讲清楚。

1. InfraVLA 到底是什么:一场“上帝视角”的导航革命

1.1 从第一人称到第三人称:换个角度看世界

做过实车导航的都懂,车载感知就像打第一人称射击游戏:摄像头装在机器人大概1.2到1.5米高的位置,朝前看,水平视场角一般90到120度,再远一点、高一点的东西基本看不见。走廊里遇到拐角、货架后面来人、地面有个不知道是坑还是纸箱的东西——这种“近身视野”的盲区特别多。为了补盲区,大家惯用的招是加激光雷达、加鱼眼摄像头、加到超声波,但本质上都还是从机器人自己的位置往外看,视角天花板摆在那里。

监控摄像头完全不一样。它装在3到5米高的天花板或者墙上,以一种稳定的俯视角度往下看。一个普通工业仓库里,3米高的监控画面能覆盖大约50到80平方米的地面范围,人、货架、托盘、机器人全都在同一帧里。固定安装意味着参考系稳定:画面里的墙角就是墙角,通道就是通道,不会因为机器人转身而晃动。这种“第三人称视角”对导航来说太宝贵了,因为它天然就是一个全局坐标系——所有东西都在同一张画面里,空间关系一眼就能读出来,不需要靠传感器数据一点点拼。

我习惯打一个比方:自己开车是“第一人称”,视野被引擎盖和A柱挡住;而站在停车场监控室里看到的那块大屏,是“第三人称”。倒车入库的时候,如果你是盲人,给你数脚步的编码器让你知道自己大概走了几步,但真正让你稳妥停进车位线的,是那块俯瞰全景的监控屏。InfraVLA 干的差不多就是这件事:让机器人抬起头,把头顶那块“大屏”当成自己的导航地图。

1.2 InfraVLA 的核心架构:VLA 模型的工作流程

VLA 是 Vision-Language-Action 的缩写,这几年机器人圈最热的端到端路线之一。InfraVLA 就是专门把输入从“机器人身上的摄像头”换成“基础设施监控摄像头”的一类 VLA 系统。它的工作流大致分四步:

第一步,把多路监控画面编码成视觉特征。比如现场有六路摄像头,每一路当前帧都被一个视觉编码器(通常基于ViT或者CNN)转成一组向量。这一步相当于“阅读理解画面”。第二步,把用户指令也编码成文本向量,指令可以是“把货架B顶层的空箱搬到打包台”这种自然语言,也可以是“去坐标(2,5)”这种结构化命令。第三步,视觉特征和指令特征一起送进大语言模型做联合推理。这一步是整个 VLA 的核心,模型需要回答:目标在哪里、当前机器人位置在哪里、中间有没有障碍、路径怎么绕。第四步,模型输出动作,常见有两种形态:直接输出机器人的线速度和角速度,或者输出一段路径点序列,让机器人本地的执行器去跟踪。

传统做法是“感知-建图-定位-规划-控制”一长串模块,每个模块独立调参,误差在模块之间层层放大。InfraVLA 从感知到动作一把梭,好处有两个:一是语义和空间推理可以放在同一个模型里,模型能理解“绕过人群”这种自然语言指令;二是端到端训练让梯度可以直接从动作误差回传到视觉编码器,整个系统是朝着“最终能不能到达目标”来优化的,而不是朝着“地图画得准不准”来优化的。

1.3 这套方案解决的真正痛点

为什么现在大家突然关注 InfraVLA 了?因为传统导航在几个真实场景里卡壳严重。

第一个痛点是语义导航。传统 SLAM 能给你一张几何地图,告诉你“前方2米有墙”,但它不知道“那堵墙是玻璃幕墙还是会反光的镜子”,更不知道“这堆人在搬运货物,我不该穿过他们”。而监控画面天然带视觉语义,大模型又能做常识推理,“穿蓝衣服的人在推车”“这个区域贴了黄色警戒线”这些信息都能被理解成导航约束。

第二个痛点是泛化。传统方案每换一个仓库,就要重新建图、标注、调参数。InfraVLA 如果训练得好,同一套模型换一个相似的场景,只需要更新摄像头标定参数就能跑,不用重新做一遍 SLAM 流程。

第三个痛点是多机调度。仓库里如果有十台机器人和一套覆盖全场的监控网络,监控网络可以同时给十台机器人提供定位和路径参考,而不是每台机器人都背上昂贵的高精度传感器单独建图。这也是“基础设施”这个名字的由来——摄像头这种本来用于安防的设备,被复用成了导航的共享传感器。

当然,这套方案也不是万能的。它对场景有硬性要求:必须预先部署监控覆盖、网络延迟要低、光照要相对稳定。那些完全没有监控、露天、强光直射的场景,目前还是老老实实靠车载传感器更靠谱。

2. 为什么光加编码器没用:从定位到理解的断层

2.1 编码器只回答“走了多少”,不回答“你在哪”

编码器的工作原理说起来很朴素:电机或轮轴上的码盘跟着转动,光电或磁传感器数出脉冲数,再乘以每个脉冲对应的弧长,就得到轮子滚过的距离。公式大概是:

Δd = N × (πd / P)

其中 N 是脉冲数,d 是轮径,P 是每圈分辨率。这是轮式里程计(wheel odometry)的基础。问题在于,这个量本质上是“增量”——它永远在回答“从上次采样到这次采样,轮子转了多少”,而不是“机器人现在在全局坐标系里的绝对位置是多少”。

把增量积分起来确实能得到一条运动轨迹:开机时从零点出发,每次累加前进距离和转向角,就能推算出当前坐标。但这就像一个人闭着眼睛走路,用“左脚跨一步、右脚跨一步”来计数——如果你中间偏了几度,后面每一步都会跟着偏,而且你自己完全不知道。编码器给不了任何外部参照,它不知道地面为什么变滑了,不知道自己其实在原地打滑,更不知道前方的岔路该往哪拐。想要绝对位姿,就必须要一个“绝对基准”:起点坐标、路标、GPS、或者一个外部视觉观测。

2.2 打滑、轮径变化与累积误差

轮式编码器的敌人不是精度,是“假设不成立”。它假设“轮子转一圈,车体就走一个周长”,但现实里这个假设十条路里能崩五次。

最常见的是打滑。仓库地面积水、走廊里的橡胶垫、瓷砖缝、快速启动或者急刹车,都会让轮子空转。轮子转了,车没动,编码器却记下了位移。反过来,过减速带或者门槛的时候,车动了,轮子却有一瞬间是悬空的,编码器又少记了一段。第二种常见问题是轮径变化。轮胎磨损、胎压下降、载重变大导致轮胎形变,都会让“每圈真实走的距离”不等于“标称周长”。这些误差在单次采样里都是小数点后几位的小事,但在时间积分下就变成了大事。

位置误差本质上是一个积分累积的过程。我实测过的轮式机器人,在普通办公室地面上直行10米,累计漂移通常在5到15厘米之间,如果中途多打几个弯,转向角误差会对位置误差成倍放大,跑个几百米下来偏出去一两米是很正常的事。有人会说:那我加 IMU、上卡尔曼滤波不就行了?卡尔曼滤波确实能把编码器和IMU融合得不错,但它的核心逻辑是“用多个传感器的估计互相修正”,它修不了“所有传感器都在同一个错误假设下工作”的系统性漂移。打个比方,自动铅笔削得再好,你拿它当圆规画圆,还是画不出正圆。想治本,必须在系统里引入一个“绝对观测源”,而监控摄像头就是最典型的一种。

2.3 导航不止定位:编码器理解不了“怎么走”

就算编码器足够准,它也只能回答一个维度的问题:位移。但导航这个任务,其实有三个维度:我在哪(全局定位)、目标在哪(语义/坐标)、中间怎么走(路径与避障)。

第一维,编码器勉强能算;第二维,编码器完全无能为力——它不知道“打包台”在哪,不知道“B区3号工位”长什么样,你让它把货物送到“穿蓝色工作服那个人旁边”,它连那个人是什么都理解不了。第三维更不用提,编码器感知不了障碍物,自然谈不上什么避障策略。它只知道“我该走直线了”,但前方三米蹲着一个人、五米有辆叉车正要倒车,它一概不知。

激光雷达能解决感知距离和障碍物轮廓,但激光雷达只给点云,不给语义。点云里的一个人和一捆立柱,在几何上都是“一坨点”,分不出哪个是活的、哪个是死的。而监控摄像头给的每一帧画面里,桌子是桌子、人是人、通道是通道,天然就是带语义的。InfraVLA 之所以敢叫“导航大脑”,就是因为它把第二维和第三维都装进了模型里。

所以“光加编码器没用”的真正含义是:编码器是执行层的部件,不是决策层的部件。它和 InfraVLA 不是替代关系,而是“腿”和“大脑”的关系。大脑决定往哪走,腿负责执行并回报反馈。你见过哪个正常人因为腿能感知步伐,就不长眼睛出门的吗?

3. 核心技术拆解:InfraVLA 落地的四根支柱

3.1 多摄像头覆盖与坐标对齐:先解决“监控画面怎么变成机器人坐标”

InfraVLA 的第一步,就是让机器人知道自己在这片监控网络里的坐标。这不是在图像上框一个框就行,而是要把“画面里的像素位置”换算成“地面上的物理坐标”。

部署上,摄像头一般装在3到5米高的位置,向下倾斜30到60度俯拍地面,相邻摄像头的画面重叠区至少要留20%到30%,方便目标在视野之间切换时不丢失。每路摄像头都需要做一次“地面投影标定”,数学上就是算一个单应性矩阵 H。单应性矩阵是一个3×3的矩阵,它能把图像平面上的像素坐标映射到地面平面上的物理坐标:

[X_ground, Y_ground, 1]^T ≈ H × [u, v, 1]^T

求 H 的方法,落地一般用 OpenCV 的findHomography,在画面里标出至少4个(实际至少8到12个)已知地面坐标的点,再最小二乘拟合。实操里我一般会在目标区域铺满标定点,而不是只在画面中心放几个,因为单应性矩阵在靠近画面边缘的地方外推误差很大,只标中心区域会导致机器人走到画面边缘时位置突然跳变。

坐标对齐完成之后,还需要持续跟踪机器人。最简单实用的做法是在机器人顶部贴一个 ArUco 码。ArUco 码本身就是一个二维码式的姿态标记,摄像头看到它之后可以直接解算出机器人在地面上的 x、y 和朝向角 θ,精度和稳定性比纯 2D 检测要好很多。对于不想贴码的场景,也可以用目标检测模型测机器人的中心点,再通过单应性矩阵投影到地面,但定位精度会受像素分辨率限制,一般在±10到20厘米浮动,动态追踪时容易抖。

3.2 场景理解与语义推理:语言模型在里面干什么

坐标只是骨架,语义才是血肉。InfraVLA 的价值不在于“知道机器人在哪”,而在于“把语言指令翻译成空间任务”。

模型看到的是这样的输入:六路监控当前帧的图像特征、当前所有机器人的地面坐标、加上一句自然语言指令“绕过充电桩,把工具箱送到A区那个蓝色货架边”。大模型要完成的事,是先理解“充电桩在哪”“蓝色货架在哪”这两个语义位置,再结合当前机器人位置规划出一条合理的路径。这个过程叫 joint reasoning,视觉特征和文本特征在模型内部是融合推理的,而不是像传统管线那样“先检测目标,再单独写一段规则让它绕”。

这部分对模型的训练数据要求很高。你没法指望一个没见过仓库的模型凭空理解“货架之间的通道可以走人,但狭窄过道要减速”。实操中,要么用多模态大模型做零样本推理,要么用仓库场景的数据微调一个专用模型。产业界现在比较务实的做法是:用通用大模型做语义理解,输出结构化的任务目标,再用传统规划器做路径平滑。等到 InfraVLA 的端到端模型在特定场景的数据积累够了,再把规划器换成模型直接输出。

3.3 动作输出与控制闭环:别让 AI 直接开电机

有人一听说 VLA 输出动作,就以为是大模型直接输出 PWM 占空比给电机——千万别这么干。实际操作里,模型推理一次要100到300毫秒,而电机控制通常要50到100Hz的更新率。如果让 AI 直接输出底层速度指令,延迟直接体现在响应上,机器人走起来就是一卡一卡的,遇到动态障碍根本来不及反应。

稳妥的做法是:InfraVLA 只输出稀疏的目标点或者路径段(比如“接下来3秒内从(2,3)移动到(4,5)”),机器人本地的控制器负责高频跟踪这个路径段。本地控制器可以用传统的纯跟踪算法或者 DWA 局部规划器,它不需要理解“蓝色货架”是什么,只需要知道“当前位置和目标位置之间的差值”。这样就能把大模型的智能放到决策层,把高频响应放到执行层,两边各干各擅长的事。

同时,闭环反馈不能丢。监控摄像头看到机器人移动到某个位置,把新画面再送回模型重新推理,形成一个大闭环。这个闭环的频率不需要太高,5到10Hz就够用。真正的高频闭环还是靠机器人本地的编码器和 IMU 来做,它们在这个级别上的响应速度是无可替代的。

3.4 坐标标定的一个具体示例

我用 OpenCV 演示一下最核心的单应性矩阵计算,这一段在项目里可以直接抄。

import cv2 import numpy as np # image_points: 图像上标定点的像素坐标,每行格式 (u, v) # ground_points: 对应标定点在地面上的物理坐标,每行格式 (X, Y) # 注意:坐标原点和单位必须统一,建议用米,原点选在场地角落 image_points = np.array([ [120, 240], [340, 260], [180, 480], [400, 500], [300, 300], [150, 350], [380, 380], [220, 420] ], dtype=np.float32) ground_points = np.array([ [0.0, 0.0], [2.0, 0.2], [0.3, 2.0], [2.3, 2.2], [1.2, 0.8], [0.5, 1.5], [2.0, 1.5], [1.0, 2.0] ], dtype=np.float32) # findHomography 会返回3x3的单应性矩阵 H H, _ = cv2.findHomography(image_points, ground_points) # 把机器人图像中心 (u, v) 投影到地面坐标 robot_px = np.array([[[280, 360]]], dtype=np.float64) robot_ground = cv2.perspectiveTransform(robot_px, H) print("机器人地面坐标:", robot_ground[0][0])

这里有个细节很关键:采集标定点时一定要均匀铺满整幅画面,并且尽量覆盖机器人实际活动的区域。如果只在画面中央标了四个点,机器人跑到画面边缘时,外推误差会像橡皮筋一样被拉得很大,定位结果直接飞掉。另外,如果监控摄像头有畸变,尤其是低于2.8mm焦距的广角镜头,必须先做畸变校正,再拿校正后的图像求 H,否则边缘区域的误差能到几十厘米。

4. 实操过程中的关键细节与踩坑实录

4.1 标定与坐标换算:最常见的翻车点

InfraVLA 项目从头到尾,最容易翻车的就是标定。标定这个概念听起来高大上,其实就是在回答一个问题:监控画面里的那个像素点,对应地面上的哪个物理坐标?

实操里我习惯这样做:在地面上铺一张大标定板,或者直接打印几张 ArUco 码贴在地上,用全站仪或者卷尺测出每个二维码中心的地面坐标。然后在监控画面上逐一点出对应的像素坐标,收集至少8到12个点,调用找单应性矩阵。整个过程听起来简单,但坑全藏在细节里。

第一,点不能扎堆。四个点如果集中在画面中央巴掌大的区域,相当于你只用中央一小块区域的数据,去推断整个几十平方米画面的映射关系,边缘必飞。第二,坐标系方向要统一。摄像头画面的 x 方向可能朝东,但你机器人底层坐标系 x 朝北,不统一的话所有输出坐标全乱。第三,摄像头被碰歪了要重新标。安防摄像头为了覆盖范围,经常被人调节角度,哪怕歪了一度,地面投影误差也会放大到几十厘米。项目里最好写一个启动自检,监控摄像头画面和上次标定结果偏差超过阈值时,提醒重新标定。

还有一个容易被忽略的问题:机器人检测精度受监控分辨率限制。普通安防摄像头如果是200万像素,车体在5米外可能只有几十个像素宽,2D检测框中心稍微抖一下,投影到地面就是十几厘米的跳动。如果场景对定位精度要求高,建议要么用更高分辨率的摄像头,要么用 ArUco 码这种自带精确角点检测的标记,能明显改善坐标稳定性。

4.2 延迟、遮挡与动态环境的处理

InfraVLA 的端到端延迟是一笔必须算清的账:摄像头采集约30毫秒,画面传输按网络环境约20到50毫秒,模型推理100到300毫秒,指令下发给机器人再执行约20毫秒。整个链路下来,200到400毫秒是常态。这400毫秒意味着什么?一个以1米/秒速度行驶的机器人,它收到的“当前位置”实际上已经落后了0.4米。如果不做补偿,控制效果会明显震荡。

我的处理策略是:模型不输出连续速度指令,只输出目标点;机器人本地控制器用当前真实编码器反馈去追目标点。这样大模型输出的“来一帧目标点”即使有延迟,也只会让机器人晚一点转向,而不会因为目标点一直在跳导致电机跟着抖。对于移动中的行人、叉车这类动态障碍,还需要在模型之外加一层速度约束,比如“检测到距离障碍物小于0.5米时,本地控制器必须减速停车”,这一条无论如何要写在最底层。

遮挡是监控方案的死穴。货架挡住了、人蹲在地上、机器人刚好被叉车遮住,都会让跟踪丢失。解决思路是冗余:每个区域至少两路摄像头覆盖,跟踪器采用 ByteTrack 这类多目标跟踪算法,即使某一帧丢失,也能靠前后帧的运动预测把 ID 接上。短时间全丢也没关系,机器人本地编码器还能撑一两秒的短时定位,等画面重新出现时再纠正回来。

4.3 常见问题速查表

现象可能原因排查思路
机器人坐标在画面边缘突然跳变单应性矩阵只标了画面中心区域在活动区域边缘多补标定点,重新求 H
定位结果抖动厉害摄像头分辨率低/未做畸变校正换更高分辨率摄像头,或先做畸变校正再标定
机器人直行时路径呈蛇形摆动端到端延迟过大,目标点输出太频繁降低模型推理频率,改成目标点模式,本地控制器平滑跟踪
监控画面里机器人 ID 频繁丢失画面重叠率不够/被货架遮挡增加摄像头覆盖,调整机位,加 ByteTrack 跟踪器
目标坐标总是偏几厘米到几十厘米地面坐标原点没统一/坐标系方向反了检查标定点地面坐标的测量单位,确认坐标系对齐
模型推理太慢,跟不上导航节拍模型太大/边缘算力不足换轻量视觉编码器,或把模型换成蒸馏后的小模型,降到5到10Hz 输出

4.4 适合场景与硬件组合建议

最后说一下什么样的场景适合上 InfraVLA,什么样的场景不要硬上。

适合的场景有这么几个特征:仓库、车间、实验室、医院走廊这类固定室内场景;监控覆盖比较全,能从上往下看到机器人活动的主要区域;场景语义相对稳定,货架位置不频繁挪动;有明确的自然语言任务需求,比如“把物料送到3号工位”“把托盘运到B区”。在这些场景里,InfraVLA 能大幅减少传统 SLAM 的建图维护成本,也能让操作者用语言直接指挥机器人。

不适合的场景:完全没有监控的户外空旷区域,监控摄像头装得很低、拍不到机器人的地方,以及强烈逆光或低纹理地面。这些场景里监控画面的质量根本无法支撑稳定的视觉定位,硬上只会让自己陷入“修标定修到怀疑人生”的循环。

硬件组合我的推荐清单是:监控摄像头用市面常见的200万到400万像素网络摄像头,最好支持 ONVIF 协议,方便统一接入;边缘推理盒子用 NVIDIA Orin Nano 或者更高算力的设备,只跑视觉编码器和大模型推理;机器人本地的控制器保留原有的编码器和 IMU,再配一路激光雷达做近场避障兜底。这套组合里,负责“理解”的是 InfraVLA,负责“稳住”的是本地传感器,两边各有分工,谁也别想替代谁。

我个人在实际项目里的体会是:不要急着把编码器拆了,也不要用 InfraVLA 硬扛所有环节。我最顺手的组合是——InfraVLA 给目标点和语义约束,本地编码器和 IMU 做高频反馈,激光雷达管近场急停。这套系统跑下来,机器人长走廊不再跑偏,跨房间也能听一句中文指令自己导航过去。监控摄像头这东西,装在那里做了这么多年安防,现在让它顺手当一把机器人的“外挂眼睛”,确实是把存量资产用出了新价值。如果你正卡在“加了编码器还是歪”这个问题上,不妨换个思路:腿上的感知再强,也不如让机器人抬头看一眼这个世界。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询