项目简介
'ros-mcp-server' 是一个基于 Model Context Protocol (MCP) 实现的服务器,旨在作为大型语言模型 (LLM) 与 ROS (Robot Operating System) 机器人之间的智能桥梁。它使得LLM能够通过自然语言指令直接控制ROS机器人,订阅实时传感器数据,调用ROS服务,并监控机器人状态,而无需修改现有机器人代码。
主要功能点
- 自然语言控制: 将LLM的自然语言指令转换为ROS/ROS2命令,直接驱动机器人。
- 全面观察能力: LLM可以订阅ROS话题、调用服务、读取传感器数据并实时监控机器人状态。
- ROS1 & ROS2 兼容: 支持ROS1和ROS2环境,开箱即用。
- 无机器人代码修改: 仅需在机器人端运行 'rosbridge' 节点即可集成,大大简化部署。
- 丰富的ROS交互工具: 提供工具用于列出、查看、发布、订阅ROS话题,调用ROS服务,获取/设置参数,以及获取消息和服务类型定义。
- 网络诊断: 提供工具用于测试与机器人(rosbridge)的网络连通性,帮助快速排查问题。
- 图像分析: 允许LLM通过订阅ROS图像话题并分析接收到的图像,从而感知环境。
安装步骤
- 克隆仓库:
git clone https://github.com/robotmcp/ros-mcp-server.git cd ros-mcp-server - 安装Python依赖和'rosbridge':
- 确保您的系统已安装 Python 3.10+。
- 安装 'uv' 包管理器:'pip install uv'
- 使用 'uv' 安装项目依赖:'uv pip install -r requirements.txt'
- 在目标机器人上安装并启动 'rosbridge'。'rosbridge' 负责将ROS通信转换为WebSocket协议,供 'ros-mcp-server' 连接。
- ROS1: 'sudo apt install ros-<distro>-rosbridge-server' (替换 '<distro>' 为您的ROS发行版,如'noetic'),然后运行 'roslaunch rosbridge_server rosbridge_websocket.launch'
- ROS2: 'sudo apt install ros-<distro>-rosbridge-server' (替换 '<distro>' 为您的ROS发行版,如'humble'),然后运行 'ros2 launch rosbridge_server rosbridge_websocket_launch.xml'
- 安装MCP客户端:
- 安装任何兼容MCP协议的LLM客户端,例如 Claude Desktop、Gemini 或其他支持MCP的AI平台。
服务器配置 (供MCP客户端连接)
MCP客户端需要以下JSON格式的配置信息来连接 'ros-mcp-server'。请将路径占位符替换为您的实际仓库克隆路径。
{ "server_name": "ros-mcp-server", "command": "python", "args": [ "path/to/your/ros-mcp-server/server.py" ], "env": { "MCP_TRANSPORT": "http", "MCP_HOST": "127.0.0.1", "MCP_PORT": "9000" }, "working_directory": "path/to/your/ros-mcp-server", "description": "连接大型语言模型与ROS机器人,实现自然语言控制和实时状态监控。" }
配置参数注释:
- 'server_name': 服务器的唯一名称,这里是 "ros-mcp-server"。
- 'command': 启动服务器的主命令,通常是 "python"。
- 'args': 传递给命令的参数列表,这里指向 'server.py' 脚本的路径。请将 '"path/to/your/ros-mcp-server"' 替换为您的实际仓库克隆路径。
- 'env': 环境变量,用于配置MCP服务器的传输方式和监听地址。
- 'MCP_TRANSPORT': 指定MCP服务器使用的传输协议。可选值包括 "stdio" (标准输入输出,适合本地调试)、"http" 或 "streamable-http" (适合网络通信)。建议使用 "http" 或 "streamable-http" 进行远程连接。
- 'MCP_HOST': MCP服务器监听的IP地址。默认 "127.0.0.1" (本地),如果LLM客户端从远程访问,请将其改为运行 'ros-mcp-server' 的机器的实际IP地址。
- 'MCP_PORT': MCP服务器监听的端口。默认 "9000"。
- 'working_directory': 服务器脚本运行的工作目录。请将其替换为您的实际仓库克隆路径。
- 'description': 对服务器功能的简要描述,供客户端展示。
基本使用方法
- 确保您的机器人上 'rosbridge' 正在运行。
- 在MCP客户端中,使用上述配置信息启动 'ros-mcp-server'。
- 一旦服务器成功连接到客户端,LLM便可以通过调用 'ros-mcp-server' 提供的工具来与机器人进行交互。例如:
- LLM 可以通过 'connect_to_robot(ip='<机器人IP>', port=9090)' 工具连接到机器人(其中 '<机器人IP>' 为运行 'rosbridge' 的机器人IP地址)。
- LLM 可以使用 'get_topics()' 列出所有ROS话题,然后使用 'subscribe_once(topic='/camera/rgb/image_raw', msg_type='sensor_msgs/Image')' 订阅图像,再使用 'analyze_previously_received_image()' 进行分析。
- LLM 可以使用 'publish_once(topic='/cmd_vel', msg_type='geometry_msgs/Twist', msg={'linear': {'x': 0.5}})' 发布控制指令。
- LLM 可以使用 'get_services()' 发现服务,然后使用 'call_service('/rosapi/topics', 'rosapi/Topics', {})' 调用服务。
信息
分类
AI与计算