
机器人初创公司 Generalist 估值达到 30 亿美元这条新闻标题在行业里引发了不少讨论。相比“又一家公司变贵了”这种资本视角更值得技术人关注的是它背后那条路线判断通用机器人generalist robot正在从实验室叙事走向可定价的工程方向。本文不替任何公司背书也不重复新闻稿而是从技术视角拆解一条完整的主线——通用机器人到底难在哪如果你想在这个方向动手实践应该从哪套技术栈入手又该如何验证一个机器人是不是真的具备“通用”潜力。这里先把概念锚定清楚所谓通用机器人指的不是某种固定机械臂而是能够在不完全预定义的场景中面对多个任务、多种物体、多次交互都能通过感知和决策完成操作的一类机器人系统。它和传统工业机械臂的核心区别不在于机械结构而在于“任务集合是否开放”。传统机械臂做点焊路径都是示教好的通用机器人做“把杯子放进洗碗机”对象位置、餐具种类、摆放姿态都要实时理解。理解这个区别之后才能看懂估值叙事背后真正需要突破的技术链条。1. 通用机器人的“通用”到底指什么1.1 专用机器人与通用机器人的本质差异很多人会把“通用”理解为“多几个自由度”“多装几个传感器”这是最常见的误解。自由度多只能说明机械结构灵活传感器多只能说明感知模态丰富都不等于任务泛化。真正的差异在系统设计目标上。对比维度专用机器人通用机器人任务集合预先定义数量少、边界清晰开放数量多、边界模糊环境假设固定工位、固定光照、固定工具场景变化光照、遮挡、布局不固定交互方式按固定轨迹动作根据视觉和状态实时调整核心指标节拍、精度、重复性多任务成功率、泛化能力、闭环稳定性技术重点运动控制、轨迹规划感知理解、策略学习、数据闭环失败处理停机报警重试、调整、绕行、求助从这张表可以看出通用机器人更像一个“持续做决策的系统”而不是“执行固定轨迹的机构”。它的问题域更接近自动驾驶感知层要理解场景决策层要选择动作控制层要保证执行稳定而且整个过程是闭环的。1.2 Generalist 这个名称对应的三层通用性“Generalist”作为公司名和“通用机器人”在英文里是同一个词。这个词放到机器人领域通常包含三层含义。第一层是任务通用性。同一个模型或同一套系统能够做抓取、放置、开门、插拔、整理桌面等多个操作而不是只完成一个工序。任务通用性要求训练数据覆盖多任务而且模型不能过拟合到单一动作模式。第二层是场景通用性。同一个模型换到不同的桌子、不同的光照、不同的相机角度仍然能工作。场景通用性考验的是感知特征是否真正理解物体和空间关系而不是记背景。第三层是交互通用性。机器人面对的不是固定摆放的零件而是人递过来的物体、倾斜的杯子、压在一起的餐具。它需要在动作过程中根据反馈修正。标签里的“通用”如果只停留在“能演示多个任务”那是做演示如果到了“同一套权重不用重新训练就能处理新环境”才算碰到了通用机器人真正的技术门槛。1.3 为什么资本会为“通用”这个方向定价从工程回报角度看专用机器人的天花板很明确每做一个新工序就要重新做一遍夹具、轨迹和调试。通用机器人一旦具备跨任务迁移能力边际成本会大幅下降。投资人愿意给出高估值的逻辑不是“现在所有任务都能干”而是“通用数据、通用模型、通用硬件三者形成飞轮之后扩展成本趋近于零”。但技术人要清醒估值反映的是预期不是当前能力。30 亿美元定价背后至少包含三个还未完全解决的工程问题——数据从哪来、泛化如何验证、真机部署如何保证安全。这三个问题才是本文后面要展开的重点。2. 想做通用机器人先拆解这套技术栈2.1 硬件本体自由度、末端执行器与传感配置通用机器人对硬件的要求和专用机器人不一样。专用的目标是刚性和重复精度通用的要求是灵活性、可维护性和安全性。常见的桌面级研究平台一般配置 6 到 7 自由度机械臂末端可以换夹爪或灵巧手腕部或头顶安装 RGB-D 相机。这里要解释一个容易混淆的点自由度越高动作空间越大但策略学习的难度也越大。7 自由度机械臂动作空间可能包含位置、姿态、夹爪开合再加上末端速度或力矩动作维度可能超过 20。在行为克隆训练里动作维度越高分布覆盖越难训练数据也越难采集。所以入门时不建议一开始就上灵巧手先把手部动作简化成夹爪开合把核心问题聚焦在“看得到、想得对、动得准”上。2.2 感知与空间理解从像素到动作的桥梁通用机器人的感知不是单纯的图像分类。机械臂要拿一个物体必须知道物体在三维空间中的位置而且要把相机坐标系下的坐标转换到机械臂坐标系下。整个链路是RGB-D 相机采集彩色图和对齐后的深度图。视觉模型识别目标物体得到像素区域或分割掩码。根据深度图和相机内参把像素坐标投影到相机坐标系下的三维点。根据手眼标定得到的变换矩阵把相机坐标转换到机械臂基座坐标系。策略模型基于当前状态选择目标动作。这里面最容易被低估的是坐标转换。很多初学项目里机械臂看起来能识别物体却在抓取时偏到一侧原因不是模型差而是相机到机械臂的外参标定不准。最常见的标定方法是手眼标定标定结果是得到相机坐标系到机械臂基座坐标系的齐次变换矩阵 (T_{cam}^{base})。2.3 策略学习为什么大模型不能直接指挥机械臂机器人圈讨论大模型时常出现一个误区让大语言模型直接输出“抓手向左”就能控制机器人。实际上不成立。大语言模型擅长的是文本语义而机械臂控制需要的是高频、低延迟、数值化的动作序列。比如 30 赫兹控制频率下完成一个 3 秒动作需要输出 90 个动作帧每个动作帧可能是几十维向量。这种输出不是大模型擅长的格式。当前更常用的技术路线是模仿学习里的行为克隆核心思想是让模型学习“给定观测输出动作”的映射。近年来效果比较突出的方法之一是扩散策略Diffusion Policy它把动作生成建模成去噪过程能更稳定地拟合多峰分布。用一句通俗的话解释如果训练数据里既有“从上方抓杯子”也有“从侧面抓杯子”普通回归模型会学到一个中间态可能哪个都不像扩散模型则会根据观测去采样出两种合理动作之一更符合真实操作习惯。2.4 数据闭环比模型更稀缺的环节通用机器人技术链里当前最稀缺的不是模型结构而是高质量数据。工业机械臂的数据可以靠 CAD 和示教生成但通用操作的数据主体来自真机遥操作。一个常见流程是操作员握住机械臂的示教手柄控制机械臂完成“拿起杯子放到托盘”的动作同时保存每一帧相机图像和关节状态。数据采集过程中最要注意的是“同一任务不同姿态的多样性”。很多团队采集了 500 条数据训练后发现机械臂只会从固定位置抓换个摆放角度就失败原因是采集时操作员每次都把杯子放在同一位置模型学到的是“看到杯子在那里就伸到那里”而不是“看到杯子在任意位置都能推理出抓取点”。数据规模也不是单纯追求多。1000 条高度相似的数据不如 300 条包含不同位置、不同光照、不同遮挡的数据。通用性的基础不是数据量而是数据分布覆盖度。3. 用开源项目搭建一条最小验证链路3.1 学习环境如何选型理解通用机器人不能只看文章需要亲手跑通一个最小闭环。建议的学习环境是一个桌面级 6 自由度机械臂一台 RGB-D 深度相机一台带 NVIDIA GPU 的电脑加上一个开源模仿学习框架。这套组合的好处是成本可控、资料多、训练到真机部署路径短。环境要求可以按下面的清单检查项目最低要求推荐要求机械臂6 自由度支持位置控制7 自由度支持速度控制末端执行器二指平行夹爪可换夹爪支持力矩反馈相机RGB-D640x4801280x720深度对齐稳定GPU显存 8 GB显存 16 GB 以上控制频率10 Hz 以上30 Hz 以上操作系统Ubuntu 20.04Ubuntu 22.04学习阶段不要追求真实的通用机器人硬件第一目标是跑通“采集数据 - 训练模型 - 真机推理”的完整闭环理解数据格式、标定流程和部署链路。这个闭环跑通了才算真正进入通用机器人的工程世界。3.2 数据采集先保证每一帧都是可用的数据采集通常使用遥操作。机械臂记录的是关节角度、夹爪状态、末端位姿相机记录的是彩色图和深度图。整个过程要保证相机采集和机械臂状态在时间上对齐否则训练出来的模型会看到“图像和动作错位”的数据。一个常见的数据集结构如下dataset/ episode_000/ observation_images/ cam_front_0.jpg cam_front_1.jpg observation_state.npz action_sequence.npy episode_001/ ... meta.json其中observation_state.npz保存当前相机帧对应的机械臂状态action_sequence.npy保存未来一段时间的动作序列。为什么动作要保存未来一段时间而不是只保存当前动作因为在模仿学习里模型需要看到“目标轨迹”只保存当前动作会让模型缺乏前向规划能力。采集时至少有 3 个检查点每个 episode 都要记录成功结果失败轨迹单独标记。物体摆放位置要随机化避免模型记忆位置。操作员要控制每次操作速度过快会导致动作抖动。3.3 模型训练以扩散策略为例下面用一个简化的训练入口说明一般套路实际项目以你使用的开源框架为准。训练流程通常分三步加载数据集、构造训练集、迭代模型参数。import torch from torch.utils.data import DataLoader from dataset import RobotDemoDataset from policy import DiffusionPolicy # 读取数据集 dataset RobotDemoDataset( data_dirdataset, camera_keys[cam_front], action_horizon16, prediction_horizon16, ) train_loader DataLoader(dataset, batch_size64, shuffleTrue) policy DiffusionPolicy( obs_dim128, action_dim7, horizon16, ) optimizer torch.optim.AdamW(policy.parameters(), lr1e-4) for epoch in range(500): for batch in train_loader: obs_image batch[obs_image] obs_state batch[obs_state] action batch[action] loss policy.compute_loss(obs_image, obs_state, action) optimizer.zero_grad() loss.backward() optimizer.step() if epoch % 50 0: print(fepoch {epoch}, loss: {loss.item():.4f})代码里有两个需要理解的参数action_horizon和prediction_horizon。action_horizon表示训练时模型能看到未来多少步动作prediction_horizon表示部署时模型一次预测多少步动作。设置过小模型只能看到短期目标动作会短视设置过大预测误差累积训练难度增加。常见做法是训练和预测窗口保持一致先设为 16 步再根据任务调节。3.4 部署推理模型发布后如何驱动机械臂模型训练完成后部署阶段顺序不能颠倒。第一步加载模型权重第二步把相机图像归一化到训练时的范围第三步推理得到动作序列第四步把动作转换到机械臂控制接口。import cv2 import numpy as np import torch policy.load_state_dict(torch.load(checkpoints/policy_500.pt)) policy.eval() def normalize_image(image): image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image cv2.resize(image, (640, 480)) image image.astype(np.float32) / 255.0 # 将图像从 HWC 转为 CHW并增加 batch 维度 return torch.from_numpy(image).permute(2, 0, 1).unsqueeze(0) while True: rgb, depth get_camera_frame() obs_image normalize_image(rgb) obs_state get_joint_state() with torch.no_grad(): action_seq policy.predict_action(obs_image, obs_state) # 动作序列中的第一步真正下发给机械臂 execute_action(action_seq[0])部署时要特别注意“只执行第一个动作帧”。扩散策略一次预测了未来 16 步动作但真实控制不会一次执行完因为环境会变化。比较稳妥的做法是每 1 步或每 2 步重新采集图像、重新推理让控制保持闭环。推理速度如果达不到控制频率需要先用缓存机制保证动作不中断再考虑优化模型结构。4. 决定通用性上限的关键参数4.1 动作空间与控制频率必须匹配任务通用机器人训练里动作空间不是拍脑袋定的。它由三部分组成机械臂关节角度或末端位姿夹爪开合状态以及可选的末端速度。不同任务对动作空间要求不同。参数默认参考值影响调错的表现末端位姿维度6位置姿态决定操作空间表达维度不够复杂姿势抓不到夹爪状态0~1 连续值决定抓取力度表达离散值会导致半开状态丢失控制频率10~30 Hz决定动作平滑度频率太低动作卡顿、跟踪失败预测窗口8~32 步决定前向规划的远见太短短视太长误差累积动作缩放系数0.5~1.0决定动作输出幅值太大抖动太小动作缓慢一个值得记住的原则控制频率越高动作越平滑但推理成本越高预测窗口越长模型越有规划性但训练难度越高。调试时先固定控制频率再调整预测窗口不要同时改多个参数。4.2 视觉输入与归一化影响泛化能力视觉输入是感知的基础。分辨率太低会丢失物体细节太高会拖慢训练。以桌面机械臂为例640x480 的 RGB 和深度图已经足够完成大多数抓取任务。关键是深度图和彩色图要严格对齐否则模型会发现颜色和距离对不上。归一化是新手最常忽略的问题。训练时输入图像若被除以 255 归一化到 [0, 1]部署时也必须做同样处理。机械臂关节状态通常数值范围差异很大比如角度在 [-3.14, 3.14]但夹爪开合在 [0, 1]如果不做归一化模型会把注意力集中在数值更大的维度上。推荐做法是为每个状态维度保存训练集的均值和标准差推理时复用。4.3 训练超参对行为克隆效果的影响行为克隆本质上是监督学习所以学习率、batch size、epoch 直接影响最终策略质量。超参常见范围调大影响调小影响学习率1e-4 ~ 1e-3收敛快但容易震荡收敛慢但更稳定batch size32 ~ 128梯度稳定、吃显存梯度噪声大训练轮数100 ~ 1000拟合训练数据但可能过拟合欠拟合训练数据量每条任务 100~500覆盖更多场景泛化不足这里要解释一个通用机器人特有的问题行为克隆的评估不能只看训练集 loss。loss 低只能说明模型记住了训练数据不能说明它在新场景上能成功。真正有效的验证方法是每次训练后做一组真机测试统计成功率。4.4 参数调试顺序建议很多调试失败是因为同时调了相机角度、动作维度、预测窗口和学习率最后出了问题不知道怪谁。推荐调试顺序是固定相机位置和标定不变量检测。固定动作空间表达先验证单任务成功率。调整预测窗口观察动作平滑度。调整学习率解决训练震荡问题。最后增加场景多样性提升泛化能力。按这个顺序每个阶段只有一个变量出问题时能快速定位。5. 怎么评估一个机器人是否具备“通用”能力5.1 多任务成功率是最基础指标评估通用能力不能只看单个任务。至少准备三个难度递进的任务比如“抓取放托盘”“打开抽屉”“叠毛巾”。每个任务执行 20 到 50 次统计成功率。成功率要达到多少才算合格这取决于任务风险。学习环境里 80% 可以接受生产环境一般需要 95% 以上且失败不能导致安全事故。评估时要把任务分成两类seen训练时见过的场景和 unseen训练时没见过的摆放、光照或物体。一个真正通用的模型unseen 任务的成功率不会断崖式下降。5.2 闭环稳定性测试通用机器人和静态模型不同它处在持续闭环里。常见的问题是初始几步成功到中途动作开始漂移最后失败。这类问题在离线评估里完全发现不了因为训练时没有真实环境反馈。闭环稳定性测试建议记录几个维度执行时长、末端漂移量、动作抖动幅度、重试次数。连续执行 100 次任务如果成功率不下降说明闭环稳定如果后面 50 次明显变差要考虑关节温升、相机漂移或模型退化。5.3 泛化能力测试泛化测试是全套评估里最接近“通用”定义的部分。建议至少覆盖 5 类扰动扰动类型测试样例位置扰动物体放在左、中、右不同位置姿态扰动杯子正放、侧放、倒放光照扰动强光、暗光、侧光视觉干扰桌面出现额外物体或广告纸机械扰动夹爪磨损、关节轻微老化每类扰动至少测试 10 次计算成功率和失败模式。如果失败集中在某一类扰动说明模型在该维度没有真正泛化。比如位置扰动成功率很高光照扰动成功率很低说明模型学到了颜色纹理但没有学到稳定的几何特征。5.4 从实验评估到生产评估要加什么实验室评估只看成功率生产评估还要看安全、可恢复性和可观测性。生产环境至少要记录完整操作日志、失败时的图像和关节状态、模型置信度、人工接管频率。没有日志一次失败就是黑盒有日志才能判断是感知错、决策错还是控制错。注意不要只验证程序能启动还要验证输入、输出、异常分支和日志是否符合预期。机器人项目里“能跑起来”和“能稳定完成任务”之间隔着一条完整的评估体系。6. 工程落地阶段最常踩的五个坑6.1 数据时间戳错位导致动作抖动现象模型在离线评估里 loss 很低真机推理时动作不断抖动甚至画面和动作明显对不上。原因数据采集时相机帧和机械臂状态没有在同一时刻采样模型学到的输入输出是错位的。比如图像是 0ms 拍的关节状态是 100ms 后读的训练时模型学会了“看到 100ms 前的画面输出 100ms 后的动作”。检查方式在采集数据时给图像和关节状态打上统一时间戳回放时检查同一时间戳下物体位置和机械臂末端是否一致。解决方式使用时间同步模块或降低采集频率以容忍延迟。预防方式是在数据采集脚本里封装一个同步接口不允许相机和状态分开读取。6.2 手眼标定错误导致抓取偏差现象视觉上识别到了物体算法也觉得能抓到但机械臂末端始终和物体隔着几厘米。原因相机坐标系到机械臂基座坐标系的转换矩阵不对。通常由手眼标定过程引入误差或标定后相机被移动过。检查方式在固定位置放置一个已知坐标的标记物机器人输出目标点后人工比较末端实际位置与目标位置。解决方式重新做手眼标定标定完成后锁死相机位置。预防方式是在标定文件里保存标定日期和相机序列号便于追溯。6.3 模型推理频率低于控制频率现象机械臂的动作总是慢半拍或者动作序列执行一半就停下来。原因摄像头采集、模型推理、动作下发都在一个主循环里同步执行单次推理耗时超过控制周期。比如控制频率要求 30 赫兹模型推理需要 80 毫秒那系统只能跑到 12 赫兹。解决方式把推理结果缓存到动作队列主循环按固定频率从队列取动作。如果动作队列耗尽执行最后一步动作并停住而不是突然跳到零位。预防方式部署前做一次性能测试分别测量相机读取延迟、模型推理延迟、机械臂指令下发延迟确保三者之和小于控制周期。6.4 loss 下降但真实动作混乱现象训练时 loss 稳步下降但真机执行时动作像无头苍蝇。原因动作没有做归一化模型对量纲大的维度敏感或训练数据里混入了大量失败轨迹模型学到平均化行为或预测窗口过长误差累积。检查方式可视化模型预测的动作序列观察是否存在大幅震荡检查训练数据里失败轨迹的比例。解决方式对动作做标准化清理失败轨迹或者对失败轨迹单独标记并在训练时降权适当缩短预测窗口。6.5 测试数据泄露导致评估虚高现象真机成功率只有 30%但离线评估准确率有 98%。原因同一段轨迹的相邻帧同时出现在训练集和测试集里模型记忆了样本而不是理解了任务。检查方式查看测试集样本是否来自训练过的 episode按时间切分数据集确保同一 episode 的帧不会被切到两个集合。解决方式按“episode 级别”切分训练集、验证集、测试集而不是按“帧级别”随机切分。这是行为克隆评估里最容易踩的数据泄露坑。7. 从开源 demo 到 30 亿美元估值之间还差什么7.1 数据飞轮不是自动产生的开源项目里一个操作员一天可能采几百条数据。但通用机器人产品化需要的是持续、低成本、高质量的数据增长。这要求遥操作系统足够友好让非机器人专业的人也能快速录制示范同时要有自动清洗流程过滤失败的、时序错乱的、光照异常的数据。数据飞轮的核心公式很朴素可拓展的数据采集能力乘以有效样本比例决定了模型迭代速度。很多团队模型调不好根因不是算法而是数据采集瓶颈。7.2 产品化要补充的工程能力从实验室到产品至少还要补齐五块安全机制机械臂必须有人体接近检测、力矩限制、紧急停止。可观测性每次操作都要有日志回放失败时能定位到感知、决策还是控制层。远程运维机器人分布到多个场景后需要 OTA 模型更新、远程诊断、远程接管。回滚方案模型更新后如果成功率下降要能快速回滚到上一版本。合规与数据隐私操作视频可能包含用户家庭或办公环境的信息采集、存储、使用都要有明确边界。这些能力不直接提升模型精度却是从“能做演示”走向“可商用交付”的必要条件。估值故事可以靠 demo 支撑但订单复购只能靠工程系统支撑。7.3 通用与专用不是对立关系一个值得注意的判断通用机器人通常不是从完全通用开始做而是从“特定场景内的通用”逐步扩展。先在厨房场景里做到多类餐具操作再扩展到底层、卧室再到更开放的场景。每一层扩展都会带来新的数据分布和新的长尾问题。对技术新人来说最实际的发展路径是先吃透一个场景的完整闭环再思考如何把策略迁移到新场景。通用能力不是喊出来的是通过跨场景迭代积累出来的。7.4 从今天开始可以做的三件事如果你对通用机器人这条技术路线感兴趣不需要等到公司估值新闻出现才行动。可以从三件具体的事开始用一台桌面机械臂跑通“遥操作采集 - 模型训练 - 真机推理”的最小闭环。保存每一次实验的日志和评估结果建立自己的成功率和失败模式表。验证一个泛化问题同一套模型权重不重新训练能否完成一个新位置的新任务。完成这三步之后再回来看“30 亿美元估值”这条新闻你会更清楚它赌的是哪一段技术链条而不是只看到资本数字。通用机器人的技术主线十分清晰从数据采集到模型训练从仿真评估到真机部署每一步都有具体的参数、验证方法和坑。对一个开发者来说最值得投入精力的方向不是追逐每一次估值新闻而是把手里的机器人系统跑得足够稳定、足够透明让每一次失败都能定位到原因。先跑通 100 次可复现的实验再讨论通用化的宏大叙事这是一条更扎实的成长路径。