# Gazebo Harmonic gpu_lidar缺失gz_frame_id致std::bad_al。

> 原文链接：https://robotics.hellobike.com/pitfalls/2025-09-05-robotics-se-117354
> 频道：pitfalls | 更新日期：2025-09-05 | 标签：auto, stackexchange, gazebo
> 核心摘要：在Gazebo Harmonic中配置gpu_lidar时，需同时在URDF中定义frame_id和gz_frame_id以避免仿真崩溃及ROS桥接段错误。

# Gazebo Harmonic gpu_lidar缺失gz_frame_id致std::bad_al。

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Gazebo harmonic: frame_id vs gz_frame_id in urdf definition of gpu_lidar](https://robotics.stackexchange.com/questions/117354/gazebo-harmonic-frame-id-vs-gz-frame-id-in-urdf-definition-of-gpu-lidar)（Robotics Stack Exchange #117354）

**状态**：已解决

## 问题

在Gazebo Harmonic与ROS Jazzy联调gpu_lidar传感器时，若URDF中未定义gz_frame_id，echo LaserScan话题会触发std::bad_alloc异常；若未定义frame_id，ros-gz-bridge初始化后会发生segfault。即使两参数值相同，也必须同时显式声明才能正常工作。

## 环境

Gazebo Harmonic, ROS Jazzy, ros_gz 1.0.16, gpu_lidar传感器, ros-gz-bridge

## 解决办法

1. 在URDF/xacro的gpu_lidar sensor标签内同时添加&lt;frame_id&gt;与&lt;gz_frame_id&gt;标签，并将二者设置为相同的link名称（如${name}_link）。
2. 保持该冗余配置直至升级至修复此问题的更新版gz-sim，因Harmonic版本插件对SDF标签解析存在差异，需同时满足新旧插件需求。
3. 确保ros_gz_bridge.yaml中正确映射gz.msgs.LaserScan到sensor_msgs/msg/Range，且方向设为GZ_TO_ROS。

原问题作者：thequila；采纳答案作者：Mike973。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #117354：Gazebo harmonic: frame_id vs gz_frame_id in urdf definition of gpu_lidar](https://robotics.stackexchange.com/questions/117354/gazebo-harmonic-frame-id-vs-gz-frame-id-in-urdf-definition-of-gpu-lidar)