用途:面向机器人系统集成场景,通过 ros_gz_bridge 在 Gazebo 与 ROS 2 之间建立话题桥接,使仿真中的传感器数据与速度指令能够双向或单向传递,从而实现对仿真机器人的闭环控制。
主要能力:支持三种数据流方向——ROS 到 Gazebo(如 cmd_vel 指令)、Gazebo 到 ROS(如图像、扫描)、双向(较少使用)。提供常见消息类型映射,如 geometry_msgs/msg/Twist 对应 gz.msgs.Twist,sensor_msgs/msg/Image 对应 gz.msgs.Image,sensor_msgs/msg/LaserScan 对应 gz.msgs.LaserScan,sensor_msgs/msg/PointCloud2 对应 gz.msgs.PointCloudPacked,sensor_msgs/msg/Imu 对应 gz.msgs.IMU,std_msgs/msg/Float64 对应 gz.msgs.Double,geometry_msgs/msg/Pose 对应 gz.msgs.Pose。
使用方式:命令行桥接格式为 /TOPIC@ROS_MSG@GZ_MSG,方向修饰符 [ 表示仅 GZ 到 ROS,] 表示仅 ROS 到 GZ,默认双向。例如:ros2 run ros_gz_bridge parameter_bridge /cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist。复杂配置可用 YAML 文件,包含 ros_topic_name、gz_topic_name、ros_type_name、gz_type_name 和 direction 字段,通过 ros2 run ros_gz_bridge parameter_bridge --ros-args -p config_file:=bridge_config.yaml 启动。也可在 launch 文件中以 Node 形式配置 arguments。
适用场景:仿真机器人的速度控制、里程计、相机、激光雷达、IMU 等数据桥接,以及多机器人命名空间管理。
限制:话题名称需完全一致且区分大小写;消息类型不兼容会导致静默失败;需确认 Gazebo 正在发布(gz topic -l)且 ROS 2 可见(ros2 topic list);方向配置错误或桥接进程崩溃会导致数据不流动。该技能依赖 urdf-robot-model、gazebo-world-builder 和 sensor-simulation 等技能。