DEBUG
控制台默认标签页。左侧四步——提示词 → 配置 → 准备 → 控制——驱动一次闭环策略运行;右侧实时显示 3D 机械臂、相机画面与动作/状态曲线。运行模式:REAL、SIM、STEP。
前置条件
- 策略服务器已启动,监听一个可访问的 IP/端口(默认
127.0.0.1:9000)。该服务不随 EVA 启动。 - 机器人或仿真器就绪。REAL 需要真机上电、可连接;SIM 不需要。
- 配置文件(
.py,通过--config传入),指定机器人、策略服务器与提示词列表。骨架见DEBUG 的配置。
eva --config <你的配置文件路径> --web-port 8080 # 启动后,浏览器打开 http://localhost:8080
概览
DEBUG 是控制台六个标签页(DEBUG·MANUAL·COLLECT·REPLAY·EVAL·RESULT)中的第一个,承载一次完整的闭环推理:连接策略服务器、向策略请求动作、下发到真机或仿真,并将遥测数据推回浏览器。
四步工作流
左侧四个编号面板,自上而下完成。引导栏显示 STEP n/4。每完成一步解锁下一步。
| # | 面板 | 操作 |
|---|---|---|
| 1 | PROMPT | 从配置提供的列表里选一条任务提示词。 |
| 2 | CONFIG | 选运行模式(REAL / SIM / STEP)和策略方案(见推理策略)。 |
| 3 | SETUP | 前两步选好后自动运行。连接策略、复位机械臂到原位、用一次推理校验。 |
| 4 | CONTROL | 连续模式:RUN / STOP / RESET;STEP 模式:SIM ↻ / REAL ▶ / STOP / RESET。仅在 Setup 成功后可用。 |
判读 Setup 状态
| 界面表现 | 含义 | 操作 |
|---|---|---|
| 转圈图标显示子阶段(连接、复位、校验) | 进行中 | 等待。 |
| CONTROL 解锁;策略指示 LINKED | 成功 | 进入 Control。 |
| 策略指示 DOWN;出现 RETRY | 策略服务器连不上 | 确认服务器与 IP/端口,点 RETRY。 |
LINKED / DOWN 指示同时常驻在右侧状态栏。
运行模式
第二步三种模式,默认 SIM。MANUAL 有独立标签页。
| 模式 | 行为 |
|---|---|
| REAL | 动作下发到真机,同时镜像到仿真预览,并记录已执行的动作。开始前先复位到原位。 |
| SIM | 仅仿真——3D 机械臂动,真机不动。Setup 跳过复位。 |
| STEP | 断点单步:每次推理并执行一个 chunk,先在仿真预览,确认后再下发真机。详见下一节。 |
REAL 或 SIM 运行被中途停下后,再次启动会从机械臂当前实际姿态继续,而非从头重来。
STEP:断点单步
STEP 把连续的 RUN/STOP 换成「先预览、后下发」。Setup 成功后:
- SIM ↻——推理出一个 chunk 并在仿真机械臂上演示;该 chunk 被暂存。
- 查看仿真预览。横幅提示「SIM preview done · N actions · press REAL ▶ to dispatch」。
- REAL ▶——把暂存的 chunk 原样下发到真机;暂存清除。3D 画面保持在仿真结果。
- STOP ■ / RESET ⟲ 行为与连续模式一致。
预览始终先在仿真里跑,没有跳过仿真直接下发的途径。
实时画面
界面右侧三个区域,全部后台自动刷新,无需操作。
- 3D 机械臂——按当前关节位置实时绘制,角落显示步数与 chunk 计数。EVA 进程内渲染,不依赖外部查看器。
- 相机条——每路相机一路实时画面;未变化的帧不会重发。
- ACTION / STATE 曲线——每一维动作和状态随时间画成曲线,点击放大。运行停止后,拖动条解锁可回看历史。
画面下方状态指示:传输在线、策略 LINKED/DOWN、会话状态、上次推理耗时、步数、已用时间。
夹爪控制与参数调优
GRIPPER 面板为每个夹爪显示一个开/合开关:单臂为 GRIPPER,双臂为 LEFT / RIGHT。
每个开关旁有强制锁定:
- 开——设置在整次运行中保持,覆盖策略对夹爪的控制。
- 关——设置只下发一次,之后交还给策略。
TUNING 在不重启的情况下实时调整推理参数:推理频率(inference rate,Hz)、下发频率(publish rate,Hz),以及所选策略的可调字段。APPLY 在下一个运行周期生效;正在运行的策略就地更新。
DEBUG 的配置
DEBUG 与控制台其余部分共用同一份 .py 配置——没有 DEBUG 专属文件。提示词列表、可选策略方案、调优默认值都来自这份文件。先列字段,再给最小骨架。
| 字段 | 作用 | 说明 |
|---|---|---|
policy.type | 策略后端 | 如 openpi。见策略后端。 |
policy.host / policy.port | 策略服务器地址 | 必须与已启动的策略服务器一致。 |
inference_cfg.debug_tasks | 提示词列表(步骤 1) | 显示在 PROMPT 的提示词字符串列表。 |
inference_strategies | 策略方案(步骤 2) | 每个键为一个可选项。见推理策略。 |
inference_cfg.inference_rate | TUNING「推理频率」默认值(Hz) | 可实时调整。 |
inference_cfg.publish_rate | TUNING「下发频率」默认值(Hz) | 可实时调整。 |
inference_cfg.action_space / obs_space | 动作 / 观测空间 | JointState 或 EEFPose;决定曲线维度。见动作空间。 |
下面是 DEBUG 的最小配置骨架。_base_ 继承的父配置已设好机器人和传输层,这里只覆盖 DEBUG 相关字段。标「← 填入」「← 改成」的是必须改的值。
_base_ = ['_base.py'] # 继承父配置(机器人 + 传输层) policy = dict( type='openpi', # 后端:openpi / starvla / gr00t / ... host='<策略服务器IP>', # ← 填入(本机用 127.0.0.1) port=<端口>, # ← 填入(默认 9000) ) inference_cfg = dict( debug_tasks=[ # PROMPT 面板列表(步骤 1) '<任务提示词>', # ← 与策略训练时使用的任务描述一致 ], inference_rate=3.0, # Hz,可在 TUNING 实时调整 publish_rate=30, # Hz,可在 TUNING 实时调整 ) inference_strategies = { # STRATEGY 选择器(步骤 2) 'sync': dict(type='BaseInferStrategy', args=dict(execute_horizon=5)), 'async': dict(type='AsyncLinearOverlapInferStrategy', args={}), }
定制提示词与策略列表
- 提示词列表——把
inference_cfg.debug_tasks设为与策略训练时一致的字符串。覆盖会整体替换父配置的列表,所以要把想要的每条都写全。 - 策略列表——在
inference_strategies中增删条目。仅微调某个策略的参数时,只写要改的部分,其余自动沿用:
inference_strategies = { 'async': dict(args=dict(latency_k=8)), # 只改 async 的这个参数,其余沿用 'act': dict(args=dict(exp_weight_m=0.01)), }