robot-agent-proto ⭐ · 项目介绍

robot-agent-proto ⭐

本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。

项目简介

机器人任务 Agent 原型:用 turtlesim 模拟机器人(零硬件成本),通过 rosbridge 把 Agent 与 ROS2 解耦,端到端跑通「自然语言任务 → LLM 计划 → 闭环运动控制 → 弱网故障恢复 → 数据回放评测」全链路。面向具身智能方向的系统 / 部署 / 数据平台岗,作为转行作品集的第一块,证明 AI 基础设施工程师能快速补齐机器人领域语境并把工程能力迁移过去。

技术栈

维度 技术
主要语言/框架 Python 3(Agent 核心)+ TypeScript/HTML(看板)+ Docker(ROS2 环境)
关键依赖/库 websocket-client、requests;ROS2(容器内 ros:humble + turtlesim + rosbridge);前端为自包含 HTML
数据存储 本地 JSON:data/runs/<run_id>.jsonl(事件日志)+ <run_id>.traj.json(轨迹)+ index.json(轮次索引),评测看板内嵌这些数据
运行/部署方式 Docker Compose 起 ROS2 环境(映射 :9090 rosbridge);python run_*.py 运行各入口;web/*.html 本地直接打开

核心功能 / 亮点

  • Agent 核心:agent/core.py 的 RobotAgent 把「高层任务 → 经网关调 LLM 得 JSON 计划 → 闭环运动控制(三铁律)→ 记录 JSONL 日志」串成 run_task();工具含 get_pose / move_to / draw_shape / draw_circle。内置断线暂停续跑、横向偏航检测与断链重规划。
  • ROS2 通信:agent/ros_client.py 的 RosbridgeClient 经 WebSocket 订阅 /turtle1/pose、发布 cmd_vel,含断线检测、指数退避重连与静默掉线看门狗;agent/connection_mgr.py 汇总连接统计(断线/重连次数、累计离线时长)。
  • 模型网关:agent/gateway_client.py 的 GatewayClient 调自有模型网关(GATEWAY_URL 注入),网关失败或未配置时回退本地关键词规划。
  • 多 Agent 编排:agent/orchestration.py 的 Orchestrator 串起 PerceptionAgent(感知实时位姿/连接状态)、PlanningAgent(规划,经 EIG 网关)、SkillControlAgent(复用 core 的三铁律执行)、MemoryAgent(每轮归档 + 回放)。控制律单源,不重复实现。
  • 评测与回放:eval/metrics.py 计算成功率/韧性/轨迹质量并 build_dashboard 生成自包含看板;eval/replay.py 支持按轮时间线或全局回放。
  • 可视化交付物:web/eval_dashboard.html(内嵌多轮真实运行数据,可回放/对比/下钻)、web/viewer.html(WebSocket 连 rosbridge 看 turtle 实时走位)、docs/architecture.svg(系统总览图)。
  • 入口与测试:run_demo.py(W2 单 Agent 画方形)、run_orchestrated.py(P1 编排)、run_w3_demo.py(断网恢复)、run_replan_demo.py(断链重规划)、test_chaos_infra.py、tests/(FakeRobot 离线冒烟)。
  • 部署与执行器安全:docker/(Dockerfile.ros2 + entrypoint.sh 同时拉起 turtlesim 与 rosbridge)、docker-compose.yml、以及 ros2_ws/(rclpy 节点 + cmd_vel_watchdog.py 执行器侧命令看门狗)。

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
robot-agent-proto/
├── agent/
│ ├── core.py # RobotAgent:任务→LLM 计划→闭环控制(三铁律唯一实现)
│ ├── ros_client.py # RosbridgeClient:WS 订阅 pose / 发布 cmd_vel + 重连
│ ├── connection_mgr.py # 连接统计汇总
│ ├── gateway_client.py # 调自有模型网关(GATEWAY_URL),本地兜底
│ └── orchestration.py # 多 Agent 编排:感知/规划/执行/记忆
├── docker/ # Dockerfile.ros2 + entrypoint.sh
├── docker-compose.yml # 一键起 ROS2(映射 :9090)
├── ros2_ws/ # rclpy 节点 + cmd_vel 看门狗
├── eval/
│ ├── metrics.py # 指标 + build_dashboard 生成看板
│ └── replay.py # 回放
├── web/
│ ├── eval_dashboard.html# 评测看板(自包含)
│ └── viewer.html # 实时看板
├── tests/ # chaos_net / standalone_square_proto / test_orchestration
├── data/runs/ # 每轮归档:<run_id>.jsonl + .traj.json + index.json
├── docs/ # 架构/控制/恢复/评测/模块/部署 文档 + architecture.svg
├── run_demo.py # W2 入口
├── run_orchestrated.py # P1 编排入口
├── run_w3_demo.py # W3 断网恢复入口
├── run_replan_demo.py # P4 断链重规划入口
├── test_chaos_infra.py # 混沌基础设施校验
└── requirements.txt # websocket-client, requests

相关链接

补充:这个原型解决了什么问题

这是我转向具身智能方向后的第一块作品,目标不是做一个能落地的机器人,而是在没有真机的条件下,把「感知 → 决策 → 执行 → 评测」这条链路完整跑通并留下可验证证据。

几个关键的工程选择:

  • 用 turtlesim 当载体:它是 ROS2 自带的二维仿真 turtlesim / turtle,动作空间极小。这让我能绕开硬件调试,把精力全部放在 Agent 的决策逻辑上——先证明链路通,再换真机。
  • rosbridge + WebSocket 打通浏览器:web/viewer.html 不是截图或录屏,而是通过 rosbridge 订阅 ROS2 话题,实时看 turtle 走位。意味着观测层和执行层解耦,换机器人时前端不用重写。
  • 评测结果必须可回放:web/eval_dashboard.html 内嵌 3 轮真实运行数据,支持回放、横向对比、逐条下钻。「Agent 能完成任务」这种话谁都会说,能把原始轨迹摆出来让人自己看才算证据。
  • 混沌测试:test_chaos_infra.py 主动注入基础设施故障,验证 Agent 在依赖不稳定时不会崩,而是能降级或重试——这是从工程角度而非 Demo 角度做事的区别。
  • Orchestrator 与 EIG 网关:run_orchestrated.py 对应多 Agent 编排中枢,docs/architecture.svg 里展开了 EIG(Embodied Inference Gateway)网关。把模型推理抽成独立网关,是为了将来换 VLM 后端时不动上层编排。