内容
# 机器人工作站命令中心
**通过自然语言和人工智能控制ABB机器人单元**
该项目在RobotStudio中模拟的真实ABB机器人单元上集成了对话式人工智能代理,允许操作员通过输入自然语言命令来控制机器人。用户可以输入诸如 *"将机器人设置为堆叠模式,最大5个箱子,速度为800毫米/秒"* 之类的短语,系统将自动执行这些命令。
---
## 项目背景
工业机器人单元通常通过示教器或专有软件进行操作,这些软件需要特定的培训。该项目探索了如何使用人工智能代理作为人类语言和控制系统之间的抽象层,降低操作门槛,并为工业环境中的更便捷的接口打开大门。
该系统操作的机器人单元包括一个带有吸盘的ABB机械臂、一个进料输送带、一个堆叠区域和两个卸载台。机器人可以自主地按尺寸分类箱子、堆叠批次和取消堆叠。
---
## 系统架构
```
用户(网页)→ FastAPI 接口 → LangChain 代理(Ollama)→ MCP / RAG 工具 → ABB 机器人
```
该系统分为四个不同的层次:
**前端 React** — 带有遥测面板(速度、容量、状态)和控制按钮的网页界面,以及用于发送自然语言命令的聊天框。
**FastAPI 接口(`web/main.py`)** — 作为前端和代理之间的桥梁。管理代理的生命周期作为持久子进程,并公开 `POST /api/chat` 端点。
**LangChain 代理(`AgenteRagRobos.py`)** — 系统的核心。推理用户的意图并决定调用哪些工具,可以将多个操作链接到一个命令中。使用本地运行的 `qwen3` 模型和 Ollama,并维护对话内存。
**MCP 服务器(`RobotStudio_PackAndGo.rspag`)** — 通过 SSE 上的 MCP 协议向代理公开机器人的控制工具。通过其集成的 REST API 与 ABB 控制器通信。
```
项目/
├── AgenteRagRobos.py # LangChain 代理:逻辑、RAG 和工具
├── robostudioMCP.py # MCP 服务器:机器人控制工具
├── web/
│ ├── main.py # FastAPI 接口:前端和代理之间的桥梁
│ └── static/ # 编译的 React 前端
│ ├── index.html
│ └── assets/
├── modos.txt # RAG 文档:单元模式逻辑
├── manual.txt # RAG 文档:RobotStudio 通用手册
├── RobotStudio_PackAndGo.rspag # 导出的 RobotStudio 站点(Pack & Go)
├── requirements.txt
```
---
## 人工智能组件
**代理可用的 MCP 工具:**
| 工具 | 对机器人的操作 |
|---|---|
| `iniciar_robot(modo)` | 激活行程并选择模式(堆叠 / 取放) |
| `activar_reanudar()` | 在完成堆叠后按下恢复按钮 |
| `volver_reposo()` | 将机器人发送到安全休息位置 |
| `cambiar_maximo_piezas(n)` | 修改 RAPID 变量 `maximoPiezas`(1-8) |
| `cambiar_velocidad_robot(v)` | 修改 RAPID 变量 `vel`(毫米/秒,10-1000) |
**RAG(检索增强生成):**
代理拥有一个基于两个文档的矢量知识库:`modos.txt` 描述单元的操作逻辑,`manual.txt` 包含 RobotStudio 的通用文档。使用 `mxbai-embed-large` 嵌入模型和 ChromaDB 作为矢量数据库进行语义相似性搜索。单元的关键逻辑直接注入系统提示,以确保操作响应的绝对准确性。
---
## 使用的技术
| 技术 | 用途 |
|---|---|
| Python 3.11+ | 后端和代理 |
| LangChain / LangGraph | 带有工具和对话内存的代理 |
| Ollama | 本地运行 LLMs(`qwen3`,`mxbai-embed-large`) |
| FastMCP | 机器人工具的 MCP 服务器 |
| ChromaDB | RAG 的矢量数据库 |
| FastAPI | REST 接口和前端服务器 |
| React | 网页界面 |
| RobotStudio ABB | 机器人模拟器和控制器(集成 REST API) |
---
## 先决条件
- Python 3.11 或更高版本
- [Ollama](https://ollama.com/) 已安装并运行
- 加载了 `RobotStudio_PackAndGo.rspag` 站点的 RobotStudio ABB,以及在 `127.0.0.1` 上运行的控制器 Web 服务器
### 需要的 Ollama 模型
```bash
ollama pull qwen3
ollama pull mxbai-embed-large
```
---
## 在本地安装和运行
### 1. 克隆仓库
```bash
git clone https://github.com/marcohdeztrujillo09/Agente-de-IA-con-RobotStudio.git
cd Agente-de-IA-con-RobotStudio
```
### 2. 创建虚拟环境并安装依赖项
```bash
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. 配置环境变量
```bash
cp .env.example .env
```
使用相应的值编辑 `.env`(机器人 IP 地址、凭证等)。
### 4. 在 RobotStudio 中加载站点
打开 RobotStudio,进入 **文件 → 打开 → Pack & Go**,然后选择 `RobotStudio_PackAndGo.rspag`。加载完成后,确保控制器处于自动模式,Web 服务器正在运行。
### 5. 启动 MCP 服务器
```bash
python robostudioMCP.py
```
服务器将在 `http://localhost:8000/sse` 上监听。
### 6. 启动 Web API
```bash
cd web
uvicorn main:app --reload --port 8080
```
API 启动时将自动启动代理。
### 7. 打开网页界面
在浏览器中导航到 `http://localhost:8080`。
---
## 演示
```
> 将机器人设置为堆叠模式,最大5个箱子,速度为800毫米/秒
> 停止机器人
> 什么是取放模式?
> 恢复操作
```