用于Kachaka机器人控制的ROS MCP服务器
概要
此项目包括:首选机器人开发的自主移动机器人“kachaka”Claude Desktop等的MCP这是从对应的客户端使用自然语言进行控制的设置指南。
kachaka是LiDAR拥有使用相机的自主移动功能,可以与专用家具合作,连同家具一起移动的创新机器人。通过本设置,可以用“拿来桌子”“移动到厨房”等自然的语言操作机器人。
系统配置
graph TB
subgraph "ホストマシン (M3 MacBook Air)"
subgraph "MCP Client"
CD[Claude Desktop
or other MCP clients]
end
subgraph "MCP Server"
RMS[ROS MCP Server
Python Process]
end
CD -->|MCP Protocol| RMS
end
subgraph "Docker Container (ROS2 Humble)"
subgraph "ROS2 Environment"
RB[rosbridge_server
:9090]
KB[Kachaka Bridge]
RV[RViz2
Visualization]
end
RB -->|ROS2 Topics| KB
KB -->|ROS2 Topics| RV
end
subgraph "Physical Device"
KR[Kachaka Robot]
end
RMS -->|WebSocket
localhost:9090| RB
KB -->|gRPC API| KR
style CD fill:#e1f5e1
style RMS fill:#d4e8fc
style RB fill:#ffe6e6
style KB fill:#ffe6e6
style KR fill:#fff4e6前提条件
- 硬件:苹果硅Mac(M1/M2/M3)
- MCP支持的客户端 (Claude Desktop等)已安装
- Python 3.10以上 已安装
- kachaka机器人 已连接到网络
安装过程
1.克隆存储库和uv 安装
# リポジトリをクローン
git clone https://github.com/lpigeon/ros-mcp-server.git
cd ros-mcp-server
# uvをインストール (まだインストールしていない場合)
curl -LsSf https://astral.sh/uv/install.sh | sh
# または
pip install uv
# 仮想環境の作成と有効化 (オプション)
uv venv
source .venv/bin/activate2. IP设置地址和端口
server.py 打开并确认以下设置(通常保持默认值):
LOCAL_IP = "127.0.0.1" # ローカルループバックアドレス
ROSBRIDGE_IP = "127.0.0.1" # Dockerポート転送を使用
ROSBRIDGE_PORT = 9090 # デフォルトポート3. ROS2 Humble的,之Docker启动容器
docker run \
--security-opt seccomp=unconfined \
-v ~/ros2_ws:/home/ubuntu/colcon_ws:cached \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 6080:80 \
-p 10000:10000 \
-p 9090:9090 \
--shm-size=1024m \
tiryoh/ros2-desktop-vnc:humble-arm64在浏览器中http://localhost:6080中所述修改相应参数的值VNC查看项目中可用的所有族。
4. MCP Server配置
MCP编辑客户端配置文件(对于Claude Desktop):
macOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json添加以下内容:
{
"mcpServers": {
"ros-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/ros-mcp-server",
"run",
"server.py"
]
}
}
}注意: /absolute/path/to/ros-mcp-server 请用实际路径替换。
5. Docker在容器中rosbridge_server安装启动
Docker在容器中的终端运行:
# rosbridge_serverをインストール
sudo apt update
sudo apt install -y ros-humble-rosbridge-server
# rosbridgeを起動(ポート9090を使用)
source /opt/ros/humble/setup.bash
ros2 launch rosbridge_server rosbridge_websocket_launch.xml6. Kachaka启动桥
在另一个航站楼Docker在容器中运行:
# Kachaka APIリポジトリをクローン
cd ~
git clone https://github.com/pf-robotics/kachaka-api.git
cd kachaka-api
# Dockerイメージをビルド(初回のみ)
docker buildx build -t kachaka-api --target kachaka-grpc-ros2-bridge -f Dockerfile.ros2 . --build-arg BASE_ARCH=arm64 --load
# ブリッジを起動(を実際のIPに置き換える)
cd tools/ros2_bridge
./start_bridge.sh 7.动作确认-RViz2可视化(可选)
Docker在容器中的另一个终端运行:
# ワークスペースの準備
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
ln -s ~/kachaka-api/ros2/kachaka_interfaces/ kachaka_interfaces
ln -s ~/kachaka-api/ros2/kachaka_description/ kachaka_description
# ビルド
cd ~/ros2_ws
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash
# RViz2を起動
cd src/kachaka_description/config
rviz2 -d kachaka.rviz使用方法
- 确保所有服务都已启动
- Claude Desktop等客户端
- 使用自然语言输入命令:
- “让机器人前进” - 显示可用主题 - “获取相机图像” - 「30cm前进后向右旋转90度“
可用的MCP函数
- 获取主题: ROS获取主题列表
- pub_twist:发送移动命令(线速度、角速度)
- pub_twist_seq:依次执行一系列移动命令
- sub_front_image:获取并保存前置相机图像
- sub_back_image:获取并保存后置相机图像
