项目简介
Gazebo MCP Server是一个基于Model Context Protocol (MCP) 构建的后端服务,其核心职责是将ROS2和Gazebo仿真环境的能力以标准化的方式暴露给大型语言模型(LLM)等AI助手。它允许AI助手通过自然语言命令,实现对Gazebo仿真中机器人的精确控制、实时获取仿真传感器数据、动态创建或修改仿真环境,并支持基于Nav2的自主导航。通过标准的JSON-RPC协议通信,Gazebo MCP Server为开发先进的LLM驱动的机器人应用提供了一个安全、可扩展的实时仿真上下文服务框架。
主要功能点
- 仿真环境控制: 轻松控制Gazebo仿真的生命周期,包括启动、停止、暂停和重置。您可以配置物理特性(如重力、时间步长)并监控仿真状态。
- 机器人与模型管理: 方便地在仿真中生成和管理各种机器人模型(如TurtleBot3),包括指定其位置、姿态和属性。通过速度命令实现机器人运动控制,并能够获取或设置模型的关节状态。
- 传感器数据获取: 实时访问仿真中各种传感器的最新数据,包括摄像头图像(RGB、深度)、LiDAR点云、IMU(惯性测量单元)数据、GPS位置信息以及接触传感器数据等。
- 动态世界生成: 在运行中的仿真中动态添加或移除物体,支持创建基本几何形状(方块、球体、圆柱)或加载自定义网格模型。还可以修改地形、调整光照效果,实现日夜循环模拟,或对场景进行实时更新。
- 自主导航集成(基于Nav2): 允许AI助手为机器人设定高层导航目标(例如“前往(5,3)坐标”),服务器将协调Nav2导航栈,使机器人在复杂环境中自主规划路径并避开障碍物,从而实现真正的机器人自主行为。
安装步骤
在开始使用Gazebo MCP Server之前,请确保您的系统已满足以下先决条件:
- 操作系统: 推荐使用Ubuntu 22.04 或 24.04。
- ROS2: Humble 或 Jazzy (LTS版本推荐)。
- Gazebo: Modern Gazebo (Fortress, Garden 或 Harmonic版本)。
- Python: 3.10 或更高版本。
请按照以下步骤安装和设置Gazebo MCP Server:
-
安装ROS2和Modern Gazebo: 如果尚未安装,请根据您的ROS2版本执行以下命令。以ROS2 Humble和Gazebo Harmonic为例:
# 更新系统软件包列表 sudo apt update # 安装ROS2 Humble桌面版(包含常用工具和Gazebo的ROS2桥接) sudo apt install ros-humble-desktop # 安装Modern Gazebo Harmonic版本(如果ros-humble-desktop没有包含) sudo apt install gz-harmonic如果您希望ROS2和Gazebo通过桥接包进行通信,也可以安装'ros-humble-ros-gz':
sudo apt install ros-humble-ros-gz -
克隆并设置Gazebo MCP Server仓库:
# 克隆项目仓库 git clone https://github.com/kvgork/gazebo-mcp.git # 进入项目目录 cd gazebo-mcp # 激活ROS2环境 # 根据您的ROS2版本调整路径,例如: source /opt/ros/humble/setup.bash # 安装Python依赖项 pip install -r requirements.txt # (可选)如果项目作为ROS2工作区的一部分,请构建并激活其环境 # colcon build # source install/setup.bash -
运行MCP服务器: 在新的终端中,确保ROS2环境已激活,然后运行MCP服务器:
# 确保ROS2环境已激活 source /opt/ros/humble/setup.bash # (如果之前执行了colcon build)激活本地安装环境 # source install/setup.bash # 运行MCP服务器 python -m mcp.server.server服务器启动后,您会在终端看到日志输出,表示MCP服务器已初始化并等待客户端连接。
服务器配置
当MCP客户端(例如Anthropic Claude Desktop)需要连接到Gazebo MCP Server时,它需要知道如何启动服务器并与其通信。以下是一个JSON格式的配置示例,您可以将其添加到MCP客户端的配置中(例如'claude_desktop_config.json'),以便客户端能够识别并使用Gazebo MCP Server:
{ "mcpServers": { "gazebo": { "command": "python", "args": ["-m", "mcp.server.server"], "cwd": "/path/to/gazebo-mcp", // 请将此路径替换为您的gazebo-mcp仓库的实际安装路径 "env": { "PYTHONPATH": "/path/to/gazebo-mcp/src", // 请将此路径替换为您的gazebo-mcp仓库的实际src目录路径 "ROS_DOMAIN_ID": "0", // ROS2域ID,通常保持默认值0即可 "GAZEBO_BACKEND": "modern", // 指定Gazebo后端类型,推荐使用 'modern' "GAZEBO_WORLD_NAME": "default", // 指定Gazebo世界名称,例如 'empty' 或 'obstacle_course' "GAZEBO_TIMEOUT": "5.0" // 服务调用超时时间(秒),根据需求调整 } } } }
注释:
- 'command':指定启动MCP服务器的可执行程序。
- 'args':传递给可执行程序的参数,用于运行服务器模块。
- 'cwd':指定服务器启动时的工作目录,确保服务器能够找到其内部文件和依赖。
- 'env':设置服务器运行时的环境变量,包括Python路径和ROS2相关的配置。
基本使用方法
一旦Gazebo MCP Server在后台运行并被您的MCP客户端正确配置,AI助手就可以通过调用服务器提供的“工具”来与Gazebo仿真进行交互。以下是一些常见操作的示例,展示AI助手如何通过工具名称和参数进行调用:
-
列出仿真中的所有模型: AI助手可以请求获取当前仿真中所有模型的列表,选择获取简要摘要或详细信息。
- 调用工具: 'gazebo_list_models'
- 参数: 'response_format' 设置为 '"summary"' 以获取模型名称和数量的简要列表。
-
在仿真中生成一个方块模型: AI助手可以指示服务器在指定位置生成一个简单的几何模型。
- 调用工具: 'gazebo_spawn_model'
- 参数: 'model_name' 设置为 '"my_box"','pose' 包含 'position'(如 'x: 1.0, y: 2.0, z: 0.5'),'geometry' 设置为 '"box"'。
-
获取某个模型的当前状态(位置和速度): AI助手可以查询仿真中特定模型的实时状态信息。
- 调用工具: 'gazebo_get_model_state'
- 参数: 'model_name' 设置为 '"my_robot"'。
-
暂停Gazebo仿真: AI助手可以控制仿真的运行状态,例如暂停物理引擎更新。
- 调用工具: 'gazebo_pause_simulation'
- 参数: 空对象 '{}'。
-
命令机器人进行自主导航: AI助手可以设定一个目标位置,让搭载Nav2的机器人自主规划路径并移动。
- 调用工具: 'send_nav2_goal'
- 参数: 'robot_name' 设置为 '"my_turtlebot"','goal_position' 设置为 '[5.0, 3.0]'(目标X、Y坐标)。
通过这些工具调用,AI助手能够以高层次的语义指令与复杂的Gazebo仿真环境进行交互,从而极大地简化了机器人开发、测试和实验流程。
信息
分类
桌面与硬件