机器人控制服务

一个用于通过Claude或其他MCP兼容AI助手控制Elegoo智能机器人汽车V4.0的MCP(模型上下文协议)服务器。

  • by VolksRat71
  • C++
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 VolksRat71/elegoo-robot-car-mcp

使用说明

Elegoo机器人汽车MCP服务器

MCP(模型上下文协议)服务器,用于通过Claude或其他兼容MCP的AI助手控制Elegoo智能机器人汽车V4.0。

建筑

┌─────────────────────────────────────────────────────────────┐
│                     Elegoo Robot Car                        │
│  ┌──────────────┐    Serial     ┌──────────────────────┐   │
│  │   Arduino    │◄────9600────►│   ESP32-S3           │   │
│  │  (motors,    │              │  (WiFi AP + TCP:100  │   │
│  │   sensors)   │              │   + Camera HTTP:80)  │   │
│  └──────────────┘              └──────────────────────┘   │
│                                         ▲                  │
└─────────────────────────────────────────│──────────────────┘
                                          │ WiFi (192.168.4.1)
                                          ▼
                              ┌──────────────────┐
                              │   MCP Server     │
                              │  (this project)  │
                              └──────────────────┘
                                          ▲
                                          │ MCP Protocol
                                          ▼
                              ┌──────────────────┐
                              │   Claude / AI    │
                              └──────────────────┘

特性

工作

  • 运动:驾驶、转弯、紧急停止
  • 相机:通过HTTP端点捕获图像
  • 伺服:左右平移相机(0-180度)
  • 序列:执行多步骤动作序列
  • 模式:预定义的移动模式(环视、方形等)
  • 路点:保存并导航到指定位置(航位推算)
  • 连接恢复:WiFi掉线时自动重新连接

部分工作

  • 超声波传感器:仅返回布尔障碍物检测(true/false),不返回以厘米为单位的距离
  • 线路跟踪传感器:异步响应,未完全集成

不工作

  • 精确的距离读数:固件返回0或二进制障碍物检测
  • 自定义ESP32固件:USB-C端口似乎只有电源,无法闪烁

安装

cd server
npm install
npm run build

用法

连接到机器人WiFi

  1. 打开Elegoo机器人的电源
  2. 将您的计算机连接到 ELEGOO-XXXX WiFi网络
  3. 机器人IP是 192.168.4.1

运行MCP服务器

标准模式(适用于克劳德桌面):

npm start

HTTP/SSE模式(用于开发):

npm run dev

Claude桌面配置

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "elegoo-robot": {
      "command": "node",
      "args": ["/path/to/elegoo-robot-car-mcp/server/dist/index.js"],
      "env": {
        "ROBOT_HOST": "192.168.4.1",
        "ROBOT_PORT": "100"
      }
    }
  }
}

可用工具

工具 说明
drive 在具有可选持续时间的方向上移动机器人
safe_drive 带障碍物检查的驾驶(受传感器限制)
turn 逐步转动机器人
emergency_stop 立即停止所有移动
look 全景相机伺服(0=左,90=中,180=右)
capture_image 用机器人的相机拍照
get_distance 读取超声波传感器(返回障碍物布尔值)
get_line_sensors 读取线路跟踪传感器
scan_surroundings 平移并扫描障碍物
get_status 获取机器人连接状态
get_position 获取估计位置(航位推算)
reset_position 将位置重置为原点
save_waypoint 将当前位置保存为指定航路点
navigate_to 导航到已保存的航路点
list_waypoints 列出所有已保存的航路点
set_mode 设置机器人操作模式
execute_sequence 执行一系列操作
execute_pattern 运行预定义模式

项目结构

elegoo-robot-car-mcp/
├── server/
│   ├── src/
│   │   ├── index.ts              # MCP server entry point
│   │   ├── robot-client-stock.ts # TCP client for Elegoo firmware
│   │   ├── robot-client.ts       # Client factory
│   │   ├── map-store.ts          # Position tracking & waypoints
│   │   └── tools/
│   │       ├── movement.ts       # drive, turn, stop
│   │       ├── vision.ts         # camera capture
│   │       ├── sensors.ts        # ultrasonic, line tracking
│   │       ├── navigation.ts     # waypoints, position
│   │       ├── sequences.ts      # multi-step sequences
│   │       └── system.ts         # status, mode
│   └── data/
│       └── map.db                # SQLite for waypoints
├── firmware/
│   └── arduino/                  # Stock Elegoo Arduino firmware
└── docs/
    ├── KNOWN_ISSUES.md
    └── ROADMAP.md

协议

机器人通过TCP端口100使用Elegoo的股票固件协议:

{"H":"1","N":1,"D1":0,"D2":125,"D3":1}
  • H:标题(始终为“1”)
  • N:命令编号
  • D1-D4:参数

关键命令:

  • N=1:电机控制
  • N=3:轿厢方向
  • N=5:伺服控制
  • N=21:超声波传感器
  • N=22:线路跟踪
  • N=100:待机模式

摄像头通过HTTP访问 http://192.168.4.1/capture.

已知问题

看 docs/KNOWN_ISSUES.md

路线图

看 docs/ROADMAP.md

许可证

麻省理工学院