项目简介

Unitree Go2 MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端应用,旨在通过大型语言模型 (LLM) 对宇树 Go2 机器人进行自然语言控制。它将 LLM 解释的指令转换为 ROS2 命令,使机器人执行相应的动作。

主要功能点

  • 通过 MCP 协议暴露机器人控制功能作为工具(Tools),供 LLM 客户端调用。
  • 支持对宇树 Go2 机器人进行移动、站立、坐下、握手、跳跃等多种预设动作控制。
  • 将 LLM 的自然语言指令转化为 ROS2 的 '/wirelesscontroller' 话题消息,驱动机器人运动。
  • 集成 ROS2 环境,可以直接与机器人通信,也支持通过 ROSBridge 进行连接。

安装步骤

  1. 准备 Unitree ROS2 环境:
    • 按照宇树官方 unitree_ros2 仓库的说明,完成 ROS2 环境和机器人连接的设置。您需要至少完成到“Step 2: Connect and test”部分,确保机器人与电脑网络互通且 ROS2 环境可用。
  2. 克隆本项目仓库:
    git clone https://github.com/lpigeon/unitree-go2-mcp-server.git
    cd unitree-go2-mcp-server
  3. 安装依赖:
    • 推荐使用 'uv' 工具进行安装。如果您未安装 'uv',可以运行 'curl -LsSf https://astral.sh/uv/install.sh | sh' 或 'pip install uv' 安装。
    • 在项目目录下,可以创建并激活一个虚拟环境(可选):
      uv venv
      source .venv/bin/activate
    • 'uv' 会自动安装项目所需的依赖。
  4. 配置服务器脚本:
    • 打开 'server.py' 文件,找到 'UNITREE_ROS2_SETUP_SH_PATH' 变量。将其值修改为您的 'unitree_ros2' 环境的 'setup.sh' 文件的绝对路径(例如:'/home/您的用户名/unitree_ros2/setup.sh')。
    • 如果您选择使用 ROSBridge 连接(需要额外设置 ROSBridge),请将 'use_rosbridge' 设置为 'True',并根据您的网络环境配置 'LOCAL_IP'、'ROSBRIDGE_IP' 和 'ROSBRIDGE_PORT'。

服务器配置(供 MCP 客户端使用)

此 MCP 服务器需要由一个支持 MCP 的 LLM 客户端(如 Claude Desktop)启动和连接。您需要在 LLM 客户端的配置文件中添加此服务器的启动信息。以下是常见的配置格式描述(请根据您的客户端实际情况调整):

  • 找到客户端的配置文件(例如 'claude_desktop_config.json')。
  • 在 'mcpServers' 或类似的配置字段下,添加一个新的服务器条目,例如命名为 '"unitree-go2-mcp-server"'。
  • 此条目需要包含以下关键信息:
    • 'command': 启动此服务器进程的可执行命令。根据安装步骤中的环境设置,这通常是 'uv' 或 'python'。
    • 'args': 一个字符串列表,包含传递给 'command' 的参数。这些参数需要指示如何找到并运行 'server.py' 文件。
      • 如果使用 'uv run',参数可能类似 '["--directory", "/您的/unitree-go2-mcp-server/项目/绝对/路径", "run", "server.py"]'。
      • 如果直接使用 'python',参数可能类似 '["/您的/unitree-go2-mcp-server/项目/绝对/路径/server.py"]'。
    • 请务必将 '"/您的/unitree-go2-mcp-server/项目/绝对/路径"' 替换为您实际克隆 'unitree-go2-mcp-server' 仓库的绝对路径

基本使用方法

  1. 检查机器人连接: 确保 Go2 机器人已开机并连接到与您的电脑相同的网络。在电脑终端中运行 'ros2 topic list' 命令,应该能看到 '/wirelesscontroller' 等话题,表明 ROS2 环境与机器人通信正常。
  2. 启动 LLM 客户端: 启动您配置好 Unitree Go2 MCP 服务器的 LLM 客户端。客户端会自动检测并启动此 MCP 服务器。
  3. 发送指令: 在 LLM 客户端中,使用自然语言向机器人发出指令。LLM 将理解您的意图,并通过 MCP 服务器调用相应的机器人控制工具。例如:
    • “让 Go2 机器人以 0.5 米/秒的速度向前移动 3 秒钟。”
    • “Go2 看起来累了,让它做个伸展运动。”
    • “让 Go2 坐下。”
  4. 观察机器人动作: 机器人会根据 LLM 通过 MCP 服务器发送的 ROS2 命令执行相应的动作。

信息

分类

桌面与硬件