语音控制机械臂系统

一个通过自然语音指令控制机械臂动作的AI嵌入式系统项目,包含语音识别、AI处理和硬件控制模块。

  • by debrunbaix
  • C
  • 本地部署
  • 更新于
在 GitHub 查看 debrunbaix/S.P.E.A.K

使用说明

S.P.E.A.K——机电臂运动学的语音处理

受钢铁侠JARVIS机器人手臂启发的个人电子项目。目标是使用自然语音命令控制机器人手臂,通过一系列人工智能和嵌入式系统将其转化为硬件动作。


项目愿景

说出命令。手臂在动。没有按钮,没有代码,不需要精确的指令。

这是逐步构建的,从单个伺服电机和web API开始,到定制PCB、3D打印机箱和能够拾取物体的抓取器结束。


路线图

阶段 描述 状态
MVP 单伺服,Arduino API,MCP服务器,Claude集成,语音输入 正在进行
v2 第二伺服(关节),纸板/3D打印手臂模型,更好的功能描述 计划中
v3 手臂末端的握把 计划中
最终 定制PCB、清洁机箱、延迟优化 已计划

架构概述

全系统(MVP)

graph LR
    User["User (voice)"]
    STT["Speech-to-Text\n(local or API)"]
    Claude["Claude AI\n(claude.ai / API)"]
    MCP["MCP Server\n(Python)"]
    Arduino["Arduino\n(REST API)"]
    Servo["Servo Motor"]

    User -->|speaks command| STT
    STT -->|text prompt| Claude
    Claude -->|tool call| MCP
    MCP -->|HTTP request| Arduino
    Arduino -->|PWM signal| Servo

组件分解

graph TB
    subgraph Voice Layer
        mic["Microphone"]
        stt["STT Engine\n(Whisper / browser API)"]
        mic --> stt
    end

    subgraph AI Layer
        claude["Claude\n(LLM)"]
        mcp["MCP Server\n(Python + FastMCP)"]
        stt -->|prompt| claude
        claude <-->|tool calls| mcp
    end

    subgraph Hardware Layer
        arduino["Arduino\n(C++ sketch + REST API)"]
        servo1["Servo 1\n(base rotation)"]
        mcp -->|HTTP POST/GET| arduino
        arduino --> servo1
    end

逐步分解

步骤1|Arduino+伺服电机

Arduino运行伺服控制草图。伺服电机连接到PWM引脚。伺服的位置(角度)可以通过发送0到180度之间的值来设置。

在伺服逻辑之上,一个轻量级的HTTP服务器在Arduino上运行(通过以太网或WiFi屏蔽,或通过主机上的串行到HTTP桥)。这公开了一个简单的REST API,因此可以从外部系统控制伺服。

关键端点:

  • GET /status --返回当前伺服角度
  • POST /servo/move --将手臂的一部分设置为目标角度
  • POST /servo/reset --返回原位

步骤2-Arduino REST API

Arduino草图集成了一个web服务器,通过HTTP公开伺服控制。

这将硬件与AI层解耦:任何可以发出HTTP请求的东西现在都可以控制手臂。


步骤3-MCP服务器(Python)

用Python编写的模型上下文协议(MCP)服务器将可用的API操作描述为Claude可以调用的工具。这是LLM和硬件之间的桥梁。

MCP服务器定义了以下工具:

  • move_servo(angle: int) --将伺服系统旋转到给定角度
  • get_servo_position() --读取当前位置
  • reset_arm() --返回原位

Claude将这些工具视为可调用函数。当用户说“将手臂向左旋转一点”时,Claude会选择正确的工具并使用正确的参数调用它。


步骤4|语音提示(当前步骤)

MVP的最后一部分是捕获用户的语音并将其转换为Claude的文本提示。


存储库结构

S.P.E.A.K/
├── fake_arm
│   └── fake_arm.c
├── README.md
├── speak_arduino
│   ├── Makefile
│   └── speak_arduino.ino
└── speak_mcp_server
    ├── pyproject.toml
    ├── speak_mcp_server.py
    └── uv.lock

硬件(MVP)

组件 描述
AD002 微型伺服电机
AdeeptPixie arduino

入门指南

做