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 | robot-agent-proto/ |
相关链接
- GitHub 仓库:robot-agent-proto
补充:这个原型解决了什么问题
这是我转向具身智能方向后的第一块作品,目标不是做一个能落地的机器人,而是在没有真机的条件下,把「感知 → 决策 → 执行 → 评测」这条链路完整跑通并留下可验证证据。
几个关键的工程选择:
- 用 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 后端时不动上层编排。