원클릭으로
ros2-gazebo-bridge
Configure ros_gz_bridge to connect Gazebo topics with ROS 2 for closed-loop control
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Configure ros_gz_bridge to connect Gazebo topics with ROS 2 for closed-loop control
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Creates assessments with varied question types (MCQ, code-completion, debugging, projects) aligned to learning objectives with meaningful distractors based on common misconceptions. Activate when educators design quizzes, exams, or tests measuring understanding; need questions at appropriate cognitive levels (Bloom's taxonomy); want balanced cognitive distribution (60%+ non-recall); or require rubrics for open-ended questions. Generates MCQs with diagnostic distractors, code-writing prompts, debugging challenges, and project-based assessments targeting deep understanding.
Integrate OpenAI ChatKit framework with custom backend and AI agents. Handles ChatKit server implementation, React component integration, context injection, and conversation persistence.
This skill should be used when scaffolding complex concepts for learners. It applies cognitive load architecture principles to break down concepts into digestible pieces while respecting learning science limits.
Docusaurus file naming, syntax, and structure conventions for RoboLearn platform
This skill should be used when deploying a Docusaurus site to GitHub Pages. It automates the configuration, building, and deployment process, handling GitHub Pages setup, environment configuration, and CI/CD automation. Includes local validation before GitHub Actions triggering.
Design simulation worlds using SDF with ground planes, models, physics configuration, and lighting
| name | ros2-gazebo-bridge |
| description | Configure ros_gz_bridge to connect Gazebo topics with ROS 2 for closed-loop control |
| domain | authoring |
| version | 1.0.0 |
| created | "2025-11-29T00:00:00.000Z" |
| triggers | ["Connecting Gazebo simulation to ROS 2","Configuring topic bridges","Spawning robots from ROS 2 launch files","Debugging bridge issues"] |
| learned_from | ["Module 2 Chapter 12 ROS 2 + Gazebo Integration (2025-11-29)"] |
Think like a robotics systems integrator who connects simulation to control systems. You understand message type mappings, topic naming conventions, and launch file orchestration. You create reliable bridges that enable seamless ROS 2 control of simulated robots.
Before configuring any bridge, ask yourself:
Command-line format:
/TOPIC@ROS_MSG@GZ_MSG
Direction modifiers:
/TOPIC@ROS_MSG@GZ_MSG # Bidirectional (default)
/TOPIC@ROS_MSG[gz.msgs.X # GZ to ROS only
/TOPIC@ROS_MSG]gz.msgs.X # ROS to GZ only
| ROS 2 Type | Gazebo Type | Use Case |
|---|---|---|
geometry_msgs/msg/Twist | gz.msgs.Twist | Velocity commands |
sensor_msgs/msg/Image | gz.msgs.Image | Camera images |
sensor_msgs/msg/LaserScan | gz.msgs.LaserScan | 2D LIDAR |
sensor_msgs/msg/PointCloud2 | gz.msgs.PointCloudPacked | 3D LIDAR |
sensor_msgs/msg/Imu | gz.msgs.IMU | IMU data |
std_msgs/msg/Float64 | gz.msgs.Double | Scalar values |
geometry_msgs/msg/Pose | gz.msgs.Pose | Position/orientation |
# Single topic bridge
ros2 run ros_gz_bridge parameter_bridge \
/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist
# Multiple topics
ros2 run ros_gz_bridge parameter_bridge \
/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist \
/camera/image@sensor_msgs/msg/Image[gz.msgs.Image \
/lidar/scan@sensor_msgs/msg/LaserScan[gz.msgs.LaserScan
For complex setups, use YAML:
# bridge_config.yaml
- ros_topic_name: "/cmd_vel"
gz_topic_name: "/cmd_vel"
ros_type_name: "geometry_msgs/msg/Twist"
gz_type_name: "gz.msgs.Twist"
direction: ROS_TO_GZ
- ros_topic_name: "/camera/image"
gz_topic_name: "/camera/image"
ros_type_name: "sensor_msgs/msg/Image"
gz_type_name: "gz.msgs.Image"
direction: GZ_TO_ROS
- ros_topic_name: "/lidar/scan"
gz_topic_name: "/lidar/scan"
ros_type_name: "sensor_msgs/msg/LaserScan"
gz_type_name: "gz.msgs.LaserScan"
direction: GZ_TO_ROS
Launch with:
ros2 run ros_gz_bridge parameter_bridge --ros-args -p config_file:=bridge_config.yaml
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch_ros.actions import Node
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
return LaunchDescription([
# Start Gazebo
IncludeLaunchDescription(
PythonLaunchDescriptionSource([
'gz_sim.launch.py'
]),
launch_arguments={'world': 'my_world.sdf'}.items(),
),
# Spawn robot
Node(
package='ros_gz_sim',
executable='create',
arguments=[
'-topic', '/robot_description',
'-name', 'my_robot',
'-x', '0', '-y', '0', '-z', '0.1'
],
),
# Bridge topics
Node(
package='ros_gz_bridge',
executable='parameter_bridge',
arguments=[
'/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist',
'/camera/image@sensor_msgs/msg/Image[gz.msgs.Image',
],
),
# Robot state publisher
Node(
package='robot_state_publisher',
executable='robot_state_publisher',
parameters=[{'robot_description': robot_description}],
),
])
gz topic -e -t /topicros2 topic list# Check ROS 2 message type
ros2 interface show sensor_msgs/msg/Image
# Check Gazebo message type
gz msg --info gz.msgs.Image
# Velocity command (ROS → Gazebo)
- ros_topic_name: "/cmd_vel"
gz_topic_name: "/model/my_robot/cmd_vel"
ros_type_name: "geometry_msgs/msg/Twist"
gz_type_name: "gz.msgs.Twist"
direction: ROS_TO_GZ
# Odometry (Gazebo → ROS)
- ros_topic_name: "/odom"
gz_topic_name: "/model/my_robot/odometry"
ros_type_name: "nav_msgs/msg/Odometry"
gz_type_name: "gz.msgs.Odometry"
direction: GZ_TO_ROS
# Camera
- ros_topic_name: "/camera/image_raw"
gz_topic_name: "/camera/image"
ros_type_name: "sensor_msgs/msg/Image"
gz_type_name: "gz.msgs.Image"
direction: GZ_TO_ROS
# LIDAR
- ros_topic_name: "/scan"
gz_topic_name: "/lidar/scan"
ros_type_name: "sensor_msgs/msg/LaserScan"
gz_type_name: "gz.msgs.LaserScan"
direction: GZ_TO_ROS
# IMU
- ros_topic_name: "/imu/data"
gz_topic_name: "/imu"
ros_type_name: "sensor_msgs/msg/Imu"
gz_type_name: "gz.msgs.IMU"
direction: GZ_TO_ROS
Before finalizing any bridge configuration:
gz topic -l)ros2 topic list)ros2 topic echo)This skill is used by:
content-implementer agent when generating Module 2 lessonsDependencies:
urdf-robot-model - robots to spawn and controlgazebo-world-builder - worlds to simulate insensor-simulation - sensor data to bridge