article
README
🚀 ROS 2 MCP 服务器
这是一个将 FastMCP 集成到 ROS 2 中的服务器项目。借助该项目,你能够使用 Claude 来控制 ROS 2 机器人,为机器人控制提供了新的方式和可能。
🚀 快速开始
本项目可让你使用 Claude 控制 ROS 2 机器人,以下是快速开始的步骤。
✨ 主要特性
- 集成 FastMCP:利用 FastMCP 协议与 Claude 进行通信。
- ROS 2 支持:发布
/cmd_vel主题消息以控制机器人的运动。 - 简单命令处理:支持基础的移动指令,如前进、后退和停止。
📦 安装指南
- 克隆仓库:
git clone https://github.com/kakimochi/ros2-mcp-server.git - 安装依赖项:
- 确保 ROS 2 已安装。
- 在项目目录运行:
pip install -r requirements.txt
💻 使用示例
基础用法
配置 MCP 服务器
- 修改
ros2-mcp-server.py中的mcp_port为你的 MCP 端口(默认为 1234)。 - 启动服务器:
python ros2-mcp-server.py
使用 Claude 发送指令
- 示例命令:
Please make the robot move forward at 0.2 m/s for 5 seconds.
🔧 技术细节
ros2-mcp-server.py
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
import serial
import time
class ROS2MCPNode(Node):
def __init__(self):
super().__init__('ros2_mcp_server')
self.publisher_ = self.create_publisher(Twist, '/cmd_vel', 10)
self.serial_port = None
self.configure_serial()
def configure_serial(self):
port = 'COM3' # 根据实际修改
baud_rate = 115200
try:
self.serial_port = serial.Serial(port, baud_rate)
except Exception as e:
print(f"无法连接到串口: {e}")
def send_command(self, linear_speed=0.0, angular_speed=0.0, duration=0.0):
twist_msg = Twist()
twist_msg.linear.x = linear_speed
twist_msg.angular.z = angular_speed
self.publisher_.publish(twist_msg)
print(f"发送命令: 线速度={linear_speed}, 角度速度={angular_speed}")
if duration > 0:
start_time = time.time()
while rclpy.ok() and (time.time() - start_time) < duration:
self.publisher_.publish(twist_msg)
time.sleep(0.1)
twist_msg.linear.x = 0.0
twist_msg.angular.z = 0.0
self.publisher_.publish(twist_msg)
print("停止")
def main(args=None):
rclpy.init(args=args)
node = ROS2MCPNode()
try:
while rclpy.ok():
# 这里可以添加从串口或其他方式接收命令的逻辑
time.sleep(1)
except KeyboardInterrupt:
pass
finally:
rclpy.shutdown()
if __name__ == '__main__':
main()
📚 详细文档
依赖项
- ROS 2:安装 ROS 2 环境。
- Python 3.10:确保使用 Python 3.10 版本。
- FastMCP:集成 FastMCP 库以实现与 Claude 的通信。
目录结构
ros2-mcp-server/
├── ros2-mcp-server.py # 主服务器脚本,集成 FastMCP 和 ROS 2
├── pyproject.toml # 项目依赖和元数据
├── .python-version # Python 版本指定
└── README.md # 项目说明文件
📄 许可证
MIT License
版权 (c) 2025 kakimochi
允许以任何形式使用、拷贝、修改、合并、发布、分发、 sublicense 和/或出售该软件及其关联的文档文件(“软件”),无限制。包括但不限于以下权利:
- 使用、拷贝、修改、合并、发布、分发、 sublicense 和/或 sell 软件的权利。
- 允许他人获得软件副本并进行上述操作。
软件按“现状”提供,不附带任何形式的担保,无论是明示的还是默示的。包括但不限于对适销性、适用性和 NONINFRINGEMENT 的担保。在任何情况下,作者或版权持有人不对因使用本软件而产生的任何直接或间接损害负责。
贡献
欢迎贡献!请提交问题和拉取请求到 GitHub 仓库。
扫码联系在线客服