ABC12345anouys / EvoBot
git clone https://github.com/ABC12345anouys/EvoBot.git
Agent + reusable skill library for LIBERO manipulation tasks (no RL / VLA / world model; no LLM calls at runtime)
—
stars, 24h
—
stars, 7 days
+144
stars, 30 days · #1,661
144
★ total
1
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguagePython
LicenseApache-2.0
Created2026-09-23 (27d ago)
Last push19d ago
Watchers0
OwnerUser
GitHub topics
Links
- GitHub: github.com/ABC12345anouys/EvoBot
- Homepage: https://github.com/Lifelong-Robot-Learning/LIBERO
- Releases · Issues · Hacker News mentions
README excerpt
# EvoBot **Agent + Skill:Agent 决定做什么、按什么顺序做,技能库负责执行** 在 LIBERO 基准的 30 个任务上经过多轮迭代,成功率 **83%(25 / 30)**。 不用强化学习 · 不用视觉-语言-动作模型 · 不用世界模型 · 运行时不需要调用大模型 English · 设计文档 一个完整回合:抓起黑碗,放到盘子上(LIBERO libero_spatial:0 ,第 1 次尝试成功,共 2965 个仿真步) --- ## 这是什么 EvoBot 跑 LIBERO 机器人操作基准,分两层:**Agent 决定做什么、按什么顺序做,技能库负责执行**。技能是带参数、可复用的动作单元(抓取、放置、推动、开合抽屉柜门与炉灶旋钮);失败时不只报"失败",还给出原因(被挡住、够不到、打滑),Agent 据此换参数、换抓取位置或换做法。 执行顺序不让模型每次现场发挥:把 LIBERO 任务自带的定义文件解析成结构化数据,**离线**让模型读一遍、排好子目标顺序(含"要不要先开抽屉"这类前置判断),结果写成 YAML 提交进仓库;运行时只读这份 YAML,不调模型,所以同一任务的顺序每次都一样。模型只能排列顺序、从给定候选里挑前置动作,不能改目标、不能指定技能、不能给参数;结果过校验,不通过就退回按依赖关系自动排序。 一条轨迹用仿真步数截断而不是实际耗时,结果不受机器负载影响;每个任务都从示范轨迹的初始状态开始,不同次运行才可比。 ## 评测结果 在 LIBERO 的 `libero_spatial`、`libero_object`、`libero_goal` 三个任务集共 30 个任务上完成全量评测,**25 / 30 通过**(每个任务单独运行,每次最多 8 次尝试)。 复现方式: [code] ## 设计文档 | 编号 | 文档 | 内容 | |---|---|---| | 01 | 感知 | 物体位姿与抓取候选的来源:真值采样与模型推理两条路径 | | 02 | 任务定义与规划 | 任务定义 → 有序子目标 → 技能序列,以及离线的一次分解 | | 03 | 技能库 | 技能清单与统一约定 | | 04 | 失败分类与恢复 | 失败原因分类与对应的处理方式 | | 05 | 环境适配层 | 统一动作接口、固定初始状态、任务步数上限的接管与截断 | | 06 | 逆运动学、末端伺服与运动控制 | 末端目标位姿如何变成关节动作 | ## 环境要求 - **Python 3.10**(conda 环境;3.12 无法运行 robosuite 及其依赖) - **LIBERO 源码**,需要加到 `PYTHONPATH` - MuJoCo + robosuite(LIBERO 自带);无显示器的机器上需要设置 `MUJOCO_GL=egl` - 依赖清单见 `requirements.txt` 与 `requirements-extra.txt`(录像、轨迹规划) [code] ## 快速开始 [code] 常用参数: | 参数 | 默认值 | 说明 | |---|---|---| | `--suites` / `--tasks` | `libero_spatial,libero_object,libero_goal` | 要跑哪些任务集,或直接列出 `任务集:编号` | | `--attempt-steps` | `7000` | 单条轨迹的仿真步数上限,主要的中断标准 | | `--attempt-timeout` | `300` | 墙钟时间上限(秒),只在程序卡住不动时才可能先触发 | | `--no-video` | — | 不录制视频 | 每个任务的尝试结果会记录在 `logs/libero_agent_progress.json`,键名形如 `libero: : `;已经通过的任务下次会跳过。 ## 任务定义与生成 每个任务的定义是一份自描述 YAML,存放在 `darwin/skills/configs/task_specs/`: [code] **重新生成**(需要 `DEEPSEEK_API_KEY`;没有设置时会自动退回确定性排序): [code] ## 许可 本项目使用 **Apache-2.0** 许可,详见 LICENSE。