Simulation-in-the-loop 具身智能闭环开发系统(当前 MVP 基于 ROS2 + MCP + 仿真后端验证)
Kongnitive 的目标,是把机器人开发从“人工改代码 → 手动跑仿真 → 看日志猜问题”,推进到“AI 生成节点 → 热推运行 → 读取结构化反馈 → 继续迭代”的闭环。
当前仓库聚焦在一个可运行 MVP:
- 用
FastMCP暴露运行时工具给 AI agent - 用
ROS2管理可热更新的 Python 节点 - 用
vector-os-nano/ MuJoCo(默认)或 Isaac Sim(可选)承接仿真执行 - 用 episode、metrics、failure trace 支持可复现调试与自动修复
这是一个持续演进中的探索项目。
README侧重说明“当前已经能做什么”;更细的环境配置和平台说明放在独立 quickstart 文档里。
在纯软件开发里,AI 已经能围绕测试和报错形成自我闭环;但在机器人系统里,失败常常只表现为运行期行为异常、时序问题、状态机切换错误或感知-动作衔接失效,反馈分散在仿真画面和日志里,难以直接驱动下一步修复。
Kongnitive 想做的是一层 Harness:
- 给 AI 一个稳定的运行入口,而不是一次性脚本
- 给 AI 一组结构化工具,而不是只读原始日志
- 给 AI 一个可重复执行的仿真回路,而不是一次性的人工验证
通过 ros_push_node(node_name, script),AI 可以把一个新的 Python ROS2 节点脚本写入运行环境并立即加载。节点脚本只需要满足最小约定:
- 使用
rclpy - 定义
Node子类 - 暴露
create_node()工厂函数
MCP server 提供系统与节点维度的可观测性:
get_status():CPU、内存、磁盘、温度、运行中节点sys_get_logs():系统日志缓冲区ros_list_nodes():当前热加载节点ros_get_node(node_name):节点源码与元信息ros_get_node_log(node_name):节点执行日志
仓库内置若干示例节点,运行成功后也可以把脚本与最近日志写回成功样例库:
ros_get_successful_node_examples()ros_write_successful_node_examples()
这让 AI 不必每次都从零生成节点,而是能优先参考“本项目里已经跑通过的做法”。
仓库已经包含一套面向自动迭代的最小 episode 工具:
run_episode(seed, profile, strategy)get_metrics(run_id)get_failure_trace(run_id)patch_and_restart(node_name, code)
其中 patch_and_restart 在 patch 失败时会自动回滚到旧版本,降低 AI 试错成本。
AI Agent
│ MCP (stdio)
▼
Kongnitive FastMCP Server
├─ system tools 系统状态 / 系统日志
├─ node tools ROS2 节点热推 / 查询 / 启停 / 删除
├─ episode tools 运行 episode / 指标 / failure trace / patch rollback
└─ NodeManager 基于 rclpy MultiThreadedExecutor 管理节点生命周期
│
├─ hot-pushed ROS2 nodes
└─ shared sim agent
├─ MuJoCo via `vector-os-nano`(默认)
└─ Isaac Sim(可选)
kongnitive-ros2-edgemcp/
├─ README.md
├─ QUICKSTART.md
├─ QUICKSTART_LINUX_DOCKER.md
├─ config/
│ ├─ server_config.yaml
│ └─ system_prompt.txt
├─ kongnitive_ros2_edgemcp/
│ ├─ server.py
│ ├─ core/
│ │ ├─ node_manager.py
│ │ ├─ episode_manager.py
│ │ ├─ vector_bridge.py
│ │ └─ ...
│ ├─ tools/
│ └─ utils/
├─ examples/
│ ├─ detector_node.py
│ ├─ planner_node.py
│ ├─ observer_node.py
│ ├─ go2_patrol_node.py
│ ├─ arm_worker_node.py
│ └─ vector_sim_demo_node.py
├─ tests/
└─ vector-os-nano/
建议至少具备以下环境:
- Python
>=3.8 - ROS2 Humble(提供
rclpy) - 可用的仿真后端
- 默认:
vector-os-nano[sim]/ MuJoCo - 可选:Isaac Sim
- 默认:
rclpy不是通过pip安装的;它由 ROS2 提供。
cd /path/to/kongnitive-ros2-edgemcp
pip install -e .如果你要使用默认 MuJoCo 仿真后端,还需要先安装仓库内的 vector-os-nano:
pip install -e /path/to/kongnitive-ros2-edgemcp/vector-os-nano[sim]python -m kongnitive_ros2_edgemcp.server常见环境变量:
EDGEMCP_SIM_BACKEND=mujoco:默认后端EDGEMCP_SIM_BACKEND=isaac:切到 Isaac SimMUJOCO_HEADLESS=0:打开 MuJoCo 可视化窗口ISAAC_HEADLESS=0:打开 Isaac Sim 可视化窗口EDGEMCP_AGENT_MODE=arm_only:使用单机械臂模式;默认go2_arm
仓库里已经提供了几个适合快速试跑的示例:
examples/vector_sim_demo_node.pyexamples/go2_patrol_node.pyexamples/arm_worker_node.pyexamples/observer_node.py
如果你是从 Codex / Claude / 其他 MCP 客户端接入,推荐先做三件事:
- 调
get_status()确认服务正常 - 调
ros_list_capabilities()看当前可用能力 - 将
examples/下的节点脚本通过ros_push_node()推上去验证链路
| 工具 | 作用 |
|---|---|
get_status() |
查看系统资源、温度和 ROS 节点状态 |
get_system_prompt() |
获取项目级系统提示词 |
sys_get_logs() |
查询系统日志缓冲区 |
| 工具 | 作用 |
|---|---|
ros_push_node(node_name, script) |
热推并加载一个 ROS2 节点 |
ros_list_nodes() |
列出运行中的节点 |
ros_list_capabilities() |
列出当前可用技能 / 能力 |
ros_get_node(node_name) |
获取节点源码与元信息 |
ros_get_node_log(node_name) |
获取节点执行日志 |
ros_start_node(node_name) |
启动已保存节点 |
ros_stop_node(node_name) |
停止运行中节点 |
ros_restart_node(node_name) |
重启节点 |
ros_delete_node(node_name) |
删除节点脚本与注册信息 |
ros_get_successful_node_examples() |
读取成功样例 |
ros_write_successful_node_examples() |
写入成功样例 |
| 工具 | 作用 |
|---|---|
run_episode(seed, profile, strategy) |
运行一次可复现仿真 |
get_metrics(run_id) |
查询 episode 指标 |
get_failure_trace(run_id) |
查询阶段级失败诊断 |
patch_and_restart(node_name, code) |
打补丁并自动回滚失败版本 |
默认配置位于 config/server_config.yaml,核心项包括:
server.transport:默认stdionodes.script_dir:热推脚本保存目录nodes.max_nodes:同时运行的节点数量上限logging.buffer_size/logging.default_limit:日志缓冲参数ros2.executor_threads:ROS2 executor 线程数episode.*:episode 默认策略与阈值
项目级系统提示词位于 config/system_prompt.txt。
安装开发依赖后可运行:
pytest tests当前测试主要覆盖:
- 系统工具与日志缓冲
- 示例节点结构约定
- episode 工具和 rollback 行为
- 无 ROS2 环境下的部分 mock 测试
如果你只是想尽快跑起来:
- 看
QUICKSTART.md
如果你在 Linux / Docker 环境里部署:
- 看
QUICKSTART_LINUX_DOCKER.md
如果你想理解项目定位与规划:
- 看
doc/value-positioning.md - 看
doc/ROS2_Visual_Sim_Closed_Loop_Plan.md
这个仓库当前更像一个 MVP / research harness,而不是已经稳定封装好的生产系统:
- 核心价值在于“AI + 热推 + 仿真反馈 + 自动迭代”这条链路
- 默认路径仍然绑定 ROS2 与当前仿真后端
- 更广义的 Harness 抽象还在演进中
如果你现在开始使用,最推荐的姿势是:
- 先把它当成一个面向 AI agent 的 MCP runtime
- 先跑通示例节点与 episode 工具
- 再基于你自己的机器人任务逐步扩展行为节点和评估 profile