embodied_arm_mcp
MCP server for voice-controlled 6DOF robotic arm, exposing tools like move_to, gripper_open, gripper_close, record_motion, and replay_motion.
README
embodied_arm_mcp
基于 ROS2 Jazzy + faster-whisper + MiniMax M3 + MCP 协议构建的语音大模型控制机械臂项目(Day 5 v0.1)。
Day 5 完成语音+LLM 全链路;Day 6 接入 MCP Server + 6DOF 机械臂仿真;Day 7 录视频 + 简历 v2.0。
🎯 项目目标
搭建语音大模型控制机械臂的端到端链路——说话 → Whisper 语音识别 → MiniMax M3 语义理解 → MCP 协议调用 → ROS2 机械臂执行。这是 2026 具身智能(Embodied AI)招聘风口的核心技术链路。
为什么是主推:
- 5 大 2026 风口词全打:具身智能 / Embodied AI / VLA 模型 / MCP 协议 / 数字孪生
- 大模型 + 机器人跨界,技术稀缺性极强
- 真实场景:人 → Agent → 机器人,端到端全栈
- 与 Day 3-4 避障项目互补(移动底盘感知决策 vs 机械臂 + LLM 上层智能)
🏗️ 架构(Day 5 阶段)
┌────────────────────────────────────────────────────┐
│ 语音输入层 │
│ ┌────────────┐ ┌────────────┐ ┌──────────────┐ │
│ │ 录音 (pyaudio)│─►│ Whisper STT │─►│ MiniMax M3 │ │
│ │ .wav 16kHz │ │ (faster- │ │ (OpenAI 兼容)│ │
│ └────────────┘ │ whisper) │ │ → tool_call │ │
│ └────────────┘ └──────────────┘ │
│ │ │
│ ┌────────────┐ │ │
│ │ Pyttsx3 / │◄────────────────────────────┘ │
│ │ EdgeTTS │ │
│ └────────────┘ │
└────────────────────────────────────────────────────┘
Day 6 + 7 扩展(计划中):
- MCP Server 暴露 5 个工具:
move_to/gripper_open/gripper_close/record_motion/replay_motion - ROS2 Jazzy + MoveIt2 + 6DOF 机械臂(panda 仿真)
- 端到端:「移动到 (0.3, 0, 0.2)」→ 机械臂动起来
🛠️ 环境
- OS:WSL2 Ubuntu 24.04
- ROS2:Jazzy Jalisco
- Python:3.12(系统)+ venv 隔离
- LLM:MiniMax M3(OpenAI 兼容协议)
- STT:faster-whisper base 模型(CPU 实时)
🚀 运行步骤
1. 克隆 + 装依赖
git clone https://github.com/JakLiao/embodied_arm_mcp.git
cd embodied_arm_mcp
# 装 ROS2 Jazzy + 必要系统包(Day 5 不用 sudo,但 Day 6 需要)
# sudo apt install ros-jazzy-moveit ros-jazzy-moveit-py portaudio19-dev
# 建 venv + 装 Python 依赖
cd ..
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd src/embodied_arm_mcp
2. 配置 MiniMax API Key
# ~/.bashrc 第 9 行 export MINIMAX_API_KEY=...
source ~/.bashrc
echo $MINIMAX_API_KEY # 应有值
3. 编译 ROS2 包
cd ~/embodied_arm_mcp_ws
source /opt/ros/jazzy/setup.bash
source install/setup.bash
colcon build --packages-select embodied_arm_mcp --merge-install
4. 运行各模块
# 4.1 Whisper STT(用 JFK 测试音频)
wget https://github.com/openai/whisper/raw/main/tests/jfk.flac -O /tmp/jfk.flac
python -c "import soundfile; d,sr=soundfile.read('/tmp/jfk.flac'); soundfile.write('/tmp/test.wav',d,sr,subtype='PCM_16')"
whisper_stt --audio /tmp/test.wav --model base --language en
# 期望:And so my fellow Americans, ask not what your country can do for you...
# 4.2 TTS(Pyttsx3 / EdgeTTS)
tts --text "你好 MiniMax M3" --engine edge --output /tmp/test.mp3
# 4.3 LLM Agent(MiniMax M3)
llm_agent --text "用一句话介绍你自己"
# 4.4 端到端语音 → LLM 管线
voice_pipeline --audio /tmp/test.wav --no-speak --language en
📊 性能基准(Day 5 实测)
| 链路 | 延迟 | 备注 |
|---|---|---|
| Whisper base STT(11s 音频) | 0.5s | CPU 实时 |
| MiniMax M3 单轮对话 | 2.8-6.5s | 含网络 + 思考 |
| TTS(EdgeTTS 中文) | 0.5s | 仅生成 mp3,不含播放 |
| 端到端(不含录音) | ~3-7s | STT + LLM + TTS |
📁 文件结构
embodied_arm_mcp_ws/
├── README.md
├── .gitignore
├── venv/ # Python 虚拟环境
├── src/embodied_arm_mcp/
│ ├── package.xml
│ ├── setup.py
│ ├── setup.cfg
│ ├── resource/embodied_arm_mcp
│ └── embodied_arm_mcp/
│ ├── __init__.py
│ ├── audio_recorder.py # pyaudio 录音
│ ├── whisper_stt.py # faster-whisper STT
│ ├── tts.py # Pyttsx3 + EdgeTTS
│ ├── llm_agent.py # MiniMax M3 (OpenAI 兼容)
│ └── voice_llm_pipeline.py # STT + LLM 端到端
└── install/ # colcon build 输出
⚠️ 踩坑汇总
- WSL2 无音频设备:
pyaudio找不到设备,arecord -l看不到。Day 5 走方案 C(用现成 .wav)。Day 7 录视频时用 Windows 端录音 + 共享文件。 - pyaudio 安装失败:需要
sudo apt install portaudio19-dev(Day 5 跳过,Day 6 可能需要)。 - Pyttsx3 缺 eSpeak:WSL2 默认无 eSpeak,需
sudo apt install espeak-ng(Day 5 跳过,用 EdgeTTS 替代)。 - MiniMax API Key:必须
source ~/.bashrc才能拿到环境变量(非交互 shell 不读 .bashrc)。 - pip 装包慢:默认 pypi 在国内极慢(23kB/s),用清华镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple。 - ros2 run 找不到 venv 包:
entry_points装在系统 Python,运行前需export PYTHONPATH=$PWD/venv/lib/python3.12/site-packages:$PYTHONPATH。
📚 参考资料
| 资源 | 链接 |
|---|---|
| 黑马 BV131ZuBdEMZ P56-P63 | https://www.bilibili.com/video/BV131ZuBdEMZ |
| faster-whisper | https://github.com/SYSTRAN/faster-whisper |
| MiniMax API | https://api.minimaxi.com |
| MCP 协议 | https://modelcontextprotocol.io/ |
| MoveIt2 文档 | https://moveit.picknik.ai/main/index.html |
📝 License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。