Deep integration with ROS/ROS2 middleware for node development, launch files, package management, and robot communication. Execute ros2 commands, create and validate packages, configure publishers/subscribers/services/actions, and debug topic connectivity.
Develops ROS/ROS2 robot software by generating packages, nodes, launch files, and configuring communication.
npx claudepluginhub a5c-ai/babysitterThis skill is limited to using the following tools:
README.mdYou are ros-integration - a specialized skill for ROS/ROS2 middleware integration, providing deep capabilities for robot software development, node creation, and system configuration.
This skill enables AI-powered ROS/ROS2 development including:
Generate complete ROS2 packages with proper structure:
# Create a new ROS2 package
ros2 pkg create --build-type ament_python my_robot_pkg \
--dependencies rclpy std_msgs sensor_msgs geometry_msgs
# For C++ packages
ros2 pkg create --build-type ament_cmake my_robot_cpp_pkg \
--dependencies rclcpp std_msgs sensor_msgs
my_robot_pkg/
├── my_robot_pkg/
│ ├── __init__.py
│ ├── my_node.py
│ └── utils/
├── launch/
│ └── robot_launch.py
├── config/
│ └── params.yaml
├── resource/
│ └── my_robot_pkg
├── test/
├── package.xml
├── setup.py
└── setup.cfg
Generate Python launch files for ROS2:
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from ament_index_python.packages import get_package_share_directory
import os
def generate_launch_description():
# Get package share directory
pkg_share = get_package_share_directory('my_robot_pkg')
# Declare launch arguments
use_sim_time = DeclareLaunchArgument(
'use_sim_time',
default_value='false',
description='Use simulation time'
)
# Node configuration
robot_node = Node(
package='my_robot_pkg',
executable='my_node',
name='robot_controller',
output='screen',
parameters=[
os.path.join(pkg_share, 'config', 'params.yaml'),
{'use_sim_time': LaunchConfiguration('use_sim_time')}
],
remappings=[
('/cmd_vel', '/robot/cmd_vel'),
('/odom', '/robot/odom')
]
)
return LaunchDescription([
use_sim_time,
robot_node
])
Create ROS2 nodes with publishers, subscribers, services, and actions:
import rclpy
from rclpy.node import Node
from rclpy.qos import QoSProfile, ReliabilityPolicy, HistoryPolicy
from std_msgs.msg import String
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
class RobotController(Node):
def __init__(self):
super().__init__('robot_controller')
# Declare parameters
self.declare_parameter('max_speed', 1.0)
self.declare_parameter('safety_distance', 0.5)
# QoS profile for sensor data
sensor_qos = QoSProfile(
reliability=ReliabilityPolicy.BEST_EFFORT,
history=HistoryPolicy.KEEP_LAST,
depth=10
)
# Publishers
self.cmd_vel_pub = self.create_publisher(
Twist, '/cmd_vel', 10
)
# Subscribers
self.laser_sub = self.create_subscription(
LaserScan, '/scan', self.laser_callback, sensor_qos
)
# Timer for control loop
self.timer = self.create_timer(0.1, self.control_loop)
self.get_logger().info('Robot controller initialized')
def laser_callback(self, msg):
# Process laser scan data
self.latest_scan = msg
def control_loop(self):
# Main control logic
max_speed = self.get_parameter('max_speed').value
# ... control logic ...
def main(args=None):
rclpy.init(args=args)
node = RobotController()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
Generate custom message definitions:
# msg/RobotStatus.msg
std_msgs/Header header
string robot_name
float64 battery_level
bool is_moving
geometry_msgs/Pose current_pose
float64[] joint_positions
Service definition:
# srv/SetMode.srv
string mode
---
bool success
string message
Action definition:
# action/Navigate.action
# Goal
geometry_msgs/PoseStamped target_pose
float64 timeout
---
# Result
bool success
string message
float64 elapsed_time
---
# Feedback
float64 distance_remaining
float64 estimated_time_remaining
Configure Quality of Service policies for different use cases:
from rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSHistoryPolicy, QoSDurabilityPolicy
# Sensor data (high frequency, lossy)
sensor_qos = QoSProfile(
reliability=QoSReliabilityPolicy.BEST_EFFORT,
history=QoSHistoryPolicy.KEEP_LAST,
depth=5
)
# Control commands (reliable)
control_qos = QoSProfile(
reliability=QoSReliabilityPolicy.RELIABLE,
history=QoSHistoryPolicy.KEEP_LAST,
depth=10
)
# Parameters and configuration (transient local)
config_qos = QoSProfile(
reliability=QoSReliabilityPolicy.RELIABLE,
durability=QoSDurabilityPolicy.TRANSIENT_LOCAL,
history=QoSHistoryPolicy.KEEP_LAST,
depth=1
)
Debug ROS2 systems:
# List all nodes
ros2 node list
# Get node info
ros2 node info /robot_controller
# List topics
ros2 topic list -t
# Echo topic
ros2 topic echo /cmd_vel
# Topic bandwidth/frequency
ros2 topic hz /scan
ros2 topic bw /camera/image_raw
# Service list and call
ros2 service list
ros2 service call /set_mode my_robot_pkg/srv/SetMode "{mode: 'autonomous'}"
# Parameter operations
ros2 param list /robot_controller
ros2 param get /robot_controller max_speed
ros2 param set /robot_controller max_speed 2.0
# TF2 debugging
ros2 run tf2_tools view_frames
ros2 run tf2_ros tf2_echo base_link odom
This skill can leverage the following MCP servers for enhanced capabilities:
| Server | Description | Installation |
|---|---|---|
| ros-mcp-server (robotmcp) | ROS/ROS2 bridge via MCP | GitHub |
| ros2-mcp-server (kakimochi) | Python-based ROS2 MCP integration | Glama |
| roba-labs-mcp | ROS documentation and learning resources | Glama |
This skill integrates with the following processes:
robot-system-design.js - System architecture with ROS nodesrobot-calibration.js - Calibration node developmentgazebo-simulation-setup.js - ROS-Gazebo integrationnav2-navigation-setup.js - Navigation stack configurationmulti-robot-coordination.js - Multi-robot ROS communicationWhen executing operations, provide structured output:
{
"operation": "create-package",
"packageName": "my_robot_pkg",
"buildType": "ament_python",
"status": "success",
"artifacts": [
"my_robot_pkg/package.xml",
"my_robot_pkg/setup.py",
"my_robot_pkg/my_robot_pkg/__init__.py"
],
"nextSteps": [
"Add node implementation",
"Create launch file",
"Build with colcon build"
]
}
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.