You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 Humble中RVIZ提示camera_depth_frame队列满丢帧问题求助

问题描述
  • 使用ROS2 Humble发行版,目标是结合slam_toolbox实现无激光雷达的环境建图
  • 通过depthimage_to_laserscan功能包将深度相机原始图像转为LaserScan消息,话题可输出有效值,但无法在RVIZ中可视化
  • RVIZ终端报错:

    [rviz]: Message Filter dropping message: frame 'camera_depth_frame' at time 5.000 for a reason 'discarding message because the queue is full'

  • 已尝试调大消息队列长度,但问题未解决
解决方案

1. 检查TF树与时间同步

  • 用ros2 run tf2_tools view_frames.py生成TF树,确认camera_depth_frame到机器人根坐标系(如base_link)的变换存在且正常发布
  • 检查深度相机的时间戳是否与系统时间同步,若偏差过大,可在depthimage_to_laserscan的配置中开启时间戳同步,或用static_transform_publisher补全静态TF变换
  • 确保所有节点的use_sim_time参数一致:实际机器人场景设为false,仿真场景统一设为true

2. 调整RVIZ的消息过滤参数

  • 在RVIZ的LaserScan可视化组件中,调大Queue Size到100以上(如200),同时设置Time Tolerance为0.5秒左右,允许消息存在一定时间偏差
  • 检查RVIZ全局选项的Fixed Frame,确保设置为机器人根坐标系(如base_link),而非camera_depth_frame

3. 优化depthimage_to_laserscan的性能

  • 降低LaserScan输出频率:在depthimage_to_laserscan的配置中设置rate参数为10Hz左右,避免因相机帧率过高导致消息积压
  • 减少计算负载:缩小激光扫描的角度范围(调整min_angle、max_angle)或降低扫描线数量(scan_height),降低节点CPU占用

4. 统一QoS配置

  • 用ros2 topic info /scan --verbose查看话题的QoS配置,确保depthimage_to_laserscan发布端与RVIZ、slam_toolbox订阅端的QoS兼容
  • 在depthimage_to_laserscan的launch文件中显式设置QoS:reliability=RELIABLE、durability=VOLATILE,匹配RVIZ默认订阅规则

5. 验证slam_toolbox的配置

  • 确认slam_toolbox订阅的LaserScan话题名称正确(默认是/scan),且其坐标系配置与当前机器人TF树一致
  • 查看slam_toolbox的启动日志,排查是否存在TF变换相关错误,这类错误会间接导致RVIZ的消息过滤异常

内容的提问来源于stack exchange,提问作者jee wooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:15:57