07 rviz2 可视化与调优

7.1 rviz2 显示检测结果

启动 rviz2(宿主机或 docker 均可),添加 Image 显示:

  1. Add -> By topic -> /carla/hero/rgb/detection_image -> Image
  2. 可选再加:/carla/hero/rgb/image(原图)、/carla/hero/lidar/point_cloud(点云)。

即可看到带框 + ID + 轨迹的画面。

7.2 修改相机分辨率

相机分辨率在 PythonAPI/examples/ros2/stack.json 的 rgb 相机 attributes 里:

1
2
3
"image_size_x": 1920,
"image_size_y": 1080,
"fov": 90.0

改完重跑 ros2_native.py 才生效(它重新生成相机)。检测节点不用重启(自适应分辨率,框按原图尺寸缩放)。

7.3 ⚠️ rviz2 卡顿优化

CARLA(UE4) 和 rviz2 都吃 GPU,且大图像/点云走 DDS 开销大。卡顿按以下顺序优化:

1. 降低 LiDAR 数据量(最大收益)

stack.json 里 lidar 的 points_per_second 默认 600000(每秒 60 万点,9.6MB/s),降到 1020 万:

1
2
"points_per_second": 150000,
"rotation_frequency": 10

2. rviz2 PointCloud2 设置

  • Decay Time 设 0(不累积历史点,只显示当前帧)。
  • Style 用 Points,Size 调小。

3. 给 rviz2 让 GPU

UE4 编辑器 Settings -> Engine Scalability Settings -> Low/Medium,降低 CARLA 渲染质量。

4. 大图像传输

  • 1080p RGB 单帧 ~6MB,DDS 传输压力大。rviz2 在 docker 里只能走 UDP(不能 SHM),更吃力。
  • 必要时相机降到 720p (1280×720),或检测节点把发布的 detection_image 缩小后再发。

7.4 检测/跟踪性能

  • rf-DETR TRT 推理每帧几 ms(固定缩到 576×576 推理,与输入分辨率无关)。
  • 预处理 resize 是主要可变开销,1080p 比 600×400 略慢。
  • 若跟不上相机帧率,节点会丢帧(best-effort QoS),不影响已发的结果。