ROS MCP服务器

一个基于ROS 2和rosbridge的MCP服务器,用于查询ROS主题、服务、消息结构,并提供数据过滤、分析、路径再生和路径执行功能。

  • by chomi14
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 chomi14/ros-mcp-server

使用说明

ros mcp服务器

在ROS2环境中,通过rosbridge查看主题、服务和消息结构。
此外,MCP服务器还可以过滤/分析/路径再生/路径执行保洁数据。

该项目目前 Ubuntu+ROS2+rosbridge+单独ROS工作区(~/ros2_ws) 根据环境进行配置。
因此,如果在其他环境中运行,请确保以下目录结构与ROS软件包配置相匹配。


特性

  • 通过rosbridge的ROS2 topic/service introspection
  • 主题订阅/发布
  • 服务调用
  • 网络诊断(ping_robot, connect_to_robot)
  • 原始抛光原木过滤
  • 抛光分析
  • 创建regeneration path
  • 运行基于txt的polishing path并自动记录

推荐环境

  • Ubuntu 22.04
  • ROS 2谦逊
  • Python 3.10+
  • rosbridge_server
  • colcon 可构建的ROS2工作区

当前版本中的假设

当前版本是基于以下环境创建的:

  • rosbridge WebSocket默认地址: 127.0.0.1:9090
  • ROS workspace路径: ~/ros2_ws
  • 数据路径: ~/ros2_ws/data/ep
  • 加工执行包: ur_custom_ik
  • 执行节点: txt_ik_executor_force_patched

也就是说,建议在运行环境中尽可能保持相同的路径结构。


推荐的目录布局

~/ros-mcp-server
~/ros2_ws
├── src
│   └── ... (ROS 2 packages, including ur_custom_ik)
├── install
├── build
├── log
└── data
    └── ep
        ├── xyz.txt
        ├── vxyz.txt
        ├── fxyz.txt
        ├── rpy.txt
        ├── real_flat_filtered.txt
        ├── auto_logger.py
        ├── filter_logs_txt.py
        ├── polish_pipeline.py
        └── ...

设置

1.克隆存储库

cd ~
git clone <REPOSITORY_URL> ros-mcp-server

2.准备ROS 2工作区

cd ~
mkdir -p ros2_ws/src

需要的ROS2软件包(例如: ur_custom_ik) ~/ros2_ws/src 放置在下面。


3.构建ROS工作空间

cd ~/ros2_ws
colcon build
source install/setup.bash

建议对每个终端执行以下source。

source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash

4.安装Python依赖项

cd ~/ros-mcp-server
pip install fastmcp pillow

另外,根据数据处理脚本的不同,可能需要以下软件包:

pip install numpy scipy matplotlib pandas

如果可以的话 requirements.txt建议配置后按以下方式安装:

pip install -r requirements.txt

运行罗斯布里奇

此服务器不直接与ROS2连接。 rosbridge WebSocket通过进行通信。 因此,必须首先运行rosbridge。

source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch rosbridge_server rosbridge_websocket_launch.xml

默认端口为 9090是。

可以通过以下方式确认是否正常运行:

ss -ltnp | grep 9090

运行MCP服务器

基本上 stdio 使用transport。

cd ~/ros-mcp-server
python3 server.py

如果您想将transport改为环境变量,例如:

export MCP_TRANSPORT=streamable-http
export MCP_HOST=127.0.0.1
export MCP_PORT=9000
python3 server.py

运行前检查表

运行前请检查以下项目。

  • [ ] ~/ros2_ws是否存在
  • [ ] ~/ros2_ws/install/setup.bash是否已创建
  • [ ] ur_custom_ik 软件包是否已构建
  • [ ] ros2 run ur_custom_ik txt_ik_executor_force_patched可能吗
  • [ ] ~/ros2_ws/data/ep 下面是否存在所需的txt/python脚本?
  • []rosbridge 127.0.0.1:9090正在运行

推荐的首次测试

建议在执行加工之前先按以下顺序进行测试:

  1. connect_to_robot()
  2. get_topics()
  3. get_services()
  4. get_topic_type('/your_topic')
  5. subscribe_once(...)

如果在此步骤中失败,很有可能是rosbridge或ROS环境问题。


数据管道使用的默认路径

当前服务器代码默认使用以下路径:

过滤

  • ~/ros2_ws/data/ep/xyz.txt
  • ~/ros2_ws/data/ep/vxyz.txt
  • ~/ros2_ws/data/ep/fxyz.txt
  • ~/ros2_ws/data/ep/rpy.txt

分析

  • ~/ros2_ws/data/ep/vxyz_filtered.txt
  • ~/ros2_ws/data/ep/fxyz_filtered.txt
  • 结果目录: ~/ros2_ws/data/ep/polish_out_filtered

再生

  • 输入路径: ~/ros2_ws/data/ep/real_flat_filtered.txt
  • 删除映射: ~/ros2_ws/data/ep/polish_out_filtered/removal_map.npz
  • 输出路径: ~/ros2_ws/data/ep/real_flat_filtered_new2.txt

路径执行

  • 记录器: ~/ros2_ws/data/ep/auto_logger.py
  • 执行人: ros2 run ur_custom_ik txt_ik_executor_force_patched

也就是说,如果上述路径中没有一个,执行可能会失败。


常见错误

1) No executable found

原因:

  • ur_custom_ik未构建
  • source ~/ros2_ws/install/setup.bash不包含
  • 可执行文件名不同

解决方案:

cd ~/ros2_ws
colcon build
source install/setup.bash
ros2 pkg executables ur_custom_ik

2) No such file or directory

原因:

  • ~/ros2_ws/data/ep/... 无路径
  • 缺少txt/python脚本

解决方案:

ls ~/ros2_ws/data/ep

请确保所有必需的文件都存在。


3)topic/service查询失败

原因:

  • rosbridge未执行
  • 9090端口问题
  • ROS环境source不可用

解决方案:

source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch rosbridge_server rosbridge_websocket_launch.xml

4)仅filtering/analysis失败

原因:

  • filter_logs_txt.py, polish_pipeline.py 遗漏
  • 未安装Python软件包
  • 输入txt格式不匹配

解决方案:

  • 验证脚本是否存在
  • numpy, scipy, matplotlib, pandas 验证是否已安装
  • 直接检查输入文件格式

备注

当前版本的路径相对固定。 最可靠的执行方法是保持以下项目不变:

  • 存储库位置: ~/ros-mcp-server
  • ROS workspace位置: ~/ros2_ws
  • 数据位置: ~/ros2_ws/data/ep
  • rosbridge端口: 9090

也就是说,与其修改代码,不如先调整环境结构。


未来改进

建议今后进行以下改进:

  • ~/ros2_ws 删除硬编码
  • 指定基于环境变量的工作区路径
  • requirements.txt 整理
  • 添加输入文件存在性检查
  • 提供示例输入文件
  • 记录数据类型

总结

要运行此项目,以下四点是关键。

  1. ROS2workspace将正常构建
  2. rosbridge正在运行
  3. ~/ros2_ws/data/ep 存在与路径相关的脚本/数据
  4. ur_custom_ik 软件包和executor将正常运行

因为当前版本接近于环境再现配置。 保持相同的文件夹结构是最可靠的。

现在想要的话,下一个
更短,更像GitHub的最终README版本再压缩一次。