Skip to main content
Glama
launch_system.md4.28 kB
# ROS2 Launch System for Robot Integration ## Overview This guide provides template launch files for developers to integrate their robots with the ROS-MCP Server. These templates demonstrate how to combine your robot's existing launch files with rosbridge for MCP communication. ## Template Launch Files ### `ros_mcp_rosbridge.launch.py` - Basic Rosbridge Template **Purpose**: Minimal rosbridge WebSocket server for robot integration **Use Case**: Add MCP communication to any existing robot setup ```bash # Basic usage ros2 launch ros_mcp_rosbridge.launch.py # Custom port ros2 launch ros_mcp_rosbridge.launch.py port:=9090 # Specific address ros2 launch ros_mcp_rosbridge.launch.py address:=127.0.0.1 ``` ## Integration Patterns ### How to add Rosbridge to Existing Robot #### Method 1: Include Rosbridge Launch File ```python # Your existing robot launch file (e.g., my_robot.launch.py) from launch import LaunchDescription from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource from launch_ros.actions import Node def generate_launch_description(): # Your existing robot nodes robot_node = Node( package='my_robot_pkg', executable='robot_node', name='my_robot' ) sensor_node = Node( package='my_robot_pkg', executable='sensor_node', name='sensor_node' ) # Include rosbridge for MCP communication rosbridge_launch = IncludeLaunchDescription( PythonLaunchDescriptionSource([ 'ros_mcp_server', '/launch/ros_mcp_rosbridge.launch.py' ]), launch_arguments={ 'port': '9090', 'address': '', 'log_level': 'info' }.items() ) return LaunchDescription([ robot_node, sensor_node, rosbridge_launch, # Add this line ]) ``` #### Method 2: Add Rosbridge Node Directly ```python # Add rosbridge node to your existing launch file from launch.actions import DeclareLaunchArgument, LogInfo from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node from launch import LaunchDescription def generate_launch_description(): """Generate the launch description for rosbridge only.""" # Declare launch arguments port_arg = DeclareLaunchArgument( "port", default_value="9090", description="Port for rosbridge websocket server" ) address_arg = DeclareLaunchArgument( "address", default_value="", description="Address for rosbridge websocket server (empty for all interfaces)", ) log_level_arg = DeclareLaunchArgument( "log_level", default_value="info", description="Log level for rosbridge server" ) # Rosbridge websocket server node rosbridge_node = Node( package="rosbridge_server", executable="rosbridge_websocket", name="rosbridge_websocket", output="screen", parameters=[ { "port": LaunchConfiguration("port"), "address": LaunchConfiguration("address"), "use_compression": False, "max_message_size": 10000000, "send_action_goals_in_new_thread": True, "call_services_in_new_thread": True, "default_call_service_timeout": 5.0, } ], arguments=["--ros-args", "--log-level", LaunchConfiguration("log_level")], ) return LaunchDescription( [ port_arg, address_arg, log_level_arg, rosbridge_node, ] ) ``` #### Method 3: Separate Launch Files (Recommended) ```bash # Terminal 1: Launch your robot ros2 launch my_robot_pkg my_robot.launch.py # Terminal 2: Launch rosbridge for MCP ros2 launch ros_mcp_server ros_mcp_rosbridge.launch.py port:=9090 ``` | Argument | Default | Description | |----------|---------|-------------| | `port` | 9090 | WebSocket server port | | `address` | "" | Bind address (empty = all interfaces) | | `log_level` | info | Log level (debug, info, warn, error) |

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/robotmcp/ros-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server