简介

迭代闭环

具身算法是闭环迭代出来的,不是一次训练就完事:先在真机上采集示教数据,用数据训练出策略,把 checkpoint 部署回真机,再做真机评测;评测暴露的问题回流到下一轮采集,如此循环,模型一轮轮变强。

这条闭环里,训练在你自己的训练栈上跑;其余全是真机活儿——而 EVA 正是承接这部分的真机基础设施数据采集模型部署真机评测,一套软件全包。

具身算法迭代闭环
01 采集数据 真机遥操作,录制 干净的 LeRobot 示教 episode。 EVA 02 训练 外部步骤:在自己 的训练栈里用数据 集训练 VLA。 03 部署 连接策略服务器, 把 checkpoint 平滑 部署到真机。 EVA 04 真机评测 多检查点逐指令 真机试跑、打分、 回放对比。 EVA 评测日志 → 下一轮采集
四步闭环:采集 → 训练 → 部署 → 评测 → 回流。训练在闭环中但跑在外部训练栈上;采集、部署、真机评测三步由 EVA 承接。

术语:chunk 指策略单次推理输出的一小段动作序列;episode 沿用 LeRobot v2.1 语义。

软件框架

一次运行的动作信号从策略服务器(训练好的 VLA)或人工遥操作发出,经过 EVA-Client 缓存、平滑、换算,再下发给真实机器人硬件执行;机器人回传的相机与关节观测同样经 EVA 转给信号源。

软件框架
信号源 策略服务器(训练好的 VLA)或人工遥操作。 openpi starvla gr00t 遥操 EVA-Client 控制台、配置、推理策略、 录制器、可视化。 MANUAL COLLECT DEBUG EVAL 真实机器人硬件 执行动作命令,发布 相机与关节观测。 ros1 ros2 zmq dataset 动作 动作
EVA 是客户端,不是机器人驱动:电机级驱动是机器人侧独立运行的另一个程序,负责发布观测、执行 EVA 下发的动作。EVA 位于信号源与真机之间,负责控制台、消息、录制与可视化。

连接策略、单步推理、采集数据、跑评测,全部在 Web 控制台中完成,控制台由 EVA 在本机端口提供。一次运行由命令行传入的配置文件完全决定——一份 .py 文件指明机器人、传输层、策略服务器、推理策略。改行为就改 --config,不改命令行开关。见配置

控制台与工作流

控制台的各个标签页并不是孤立的功能,而是分别落在数采部署评测三条流程上。先按流程建立这条逻辑通道,再看每个标签页的具体职责:

数采

标签页作用
MANUAL滑杆驱动的关节控制,用于硬件适配与链路检查——连接策略前先验证控制与观测链路。见 MANUAL
COLLECT遥操作采集与质检;每次尝试录制为 LeRobot v2.1 格式的 episode。见 数据采集
REPLAY已录 episode 的开环回放,用于离线质检;复用同一可视化流水线,无需真机或策略服务器。

部署

标签页作用
DEBUG连接策略跑推理——连续运行、仅仿真预览、或在 3D 中逐 chunk 预览再下发到真机。见 DEBUG

评测

标签页作用
EVAL多检查点评测;每个检查点在选择器中以槽位字母(Model A / B / …)+ 真实检查点名展示,按指令打分。见 EVAL
RESULT已录尝试的同步相机视频、3D 回放、关节曲线、分数。见 RESULT

起始标签页由配置决定:评测配置(configs/03_evaluation/)直接进入 EVAL/RESULT;部署配置进入 DEBUG。

启动 EVA

前置条件:eva 命令已在 PATH 中(见安装),且策略服务器已运行可达(地址在配置文件里,见策略后端)。离线回放二者均不需要。

eva 必填 --config 指向一份 .py 配置;--web-port 默认 8080

bash
# 部署配置——落在 DEBUG。
eva --config configs/01_deploy/dual_agilex_AGILEX/openpi_qpos.py

# 离线回放——无需策略服务器与真机。
eva --config configs/00_openloop/dual_agilex_AGILEX_openloop.py

# 多检查点评测——打开 EVAL/RESULT。
eva --config configs/03_evaluation/arx_r5_eval.py

自带配置文件夹以目标机器人命名(dual_agilex_AGILEXarx_r5 等)。改配的方式见配置

启动信号。日志先打印控制台 URL,再打印 started-on-port 一行。端口被占用时改 --web-port 重跑。
log
eva --config configs/01_deploy/arx_r5/openpi_qpos.py
12:14:24.426 INFO  Creating transport: type=zmq robot=arx_r5
12:14:24.430 INFO  ZMQ transport ready: sub=tcp://127.0.0.1:5555 pub=tcp://127.0.0.1:5556 robot=arx_r5
12:14:24.430 INFO  Transport ready: type=zmq obs_mode=JointState
12:14:24.481 INFO  UrdfScene ready for 'arx_r5': 2 parts, 1 URDFs, 9 meshes
12:14:24.483 INFO  Console web server: http://127.0.0.1:8080
12:14:24.483 INFO  Console web server started on port 8080

远程机器人转发端口:ssh -L 8080:localhost:8080 you@robot-host。完整选项见命令行参考

核心构件

每份配置都装配四个可插拔部件,各以短名选定:

一份配置选择四类构件
config.py 传输层 观测与动作如何 在两端之间传。 ros1 ros2 zmq dataset 策略后端 EVA 对接哪种 模型服务器。 openpi starvla gr00t mock 推理策略 chunk 如何缓存、 平滑并下发。 sync async naive act rtc 动作空间 交换关节状态, 还是末端位姿。 JointState EEFPose
换配置即替换机器人、连接、模型后端、推理行为与动作表示,控制台无需改动。

自带机器人:agilex_AGILEXarx_r5dual_frankaagibot_g2r1_liteur5e。可添加自己的

下一步