RViz 点云无法显示问题记录

ROS Noetic / RViz 点云无法显示问题记录

一、问题现象


二、环境信息


三、关键现象与误导点

  1. RViz 会自动去掉 frame 前的 / 显示

    • /camera_depth_optical_framecamera_depth_optical_frame
  2. PointCloud2 的 header.frame_id 不会被自动修改

  3. TF 在 RViz 中“看起来没问题”,但点云仍不显示


四、根因分析(核心)

18.04 可用是因为 tf1 行为更宽松
20.04 失败是设计变化,不是 bug


五、尝试过但无效的方案(结论)

方法 结果
static_transform_publisher 建 alias ❌ tf2 会 canonicalize,无效
remap topic ❌ 只能改 topic 名
topic_tools relay ❌ 原样转发,不改消息内容
依赖 RViz 显示行为 ❌ UI 层假象

六、最终有效解决方案(已验证)

在消息层修正 PointCloud2.header.frame_id

做法

结果


七、经验总结(关键结论)

ROS Noetic 以后,tf2 世界里只有 frame,没有 /frame
任何带 /header.frame_id,都需要在消息层清洗


八、适用范围