鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    四轮小车树莓派上ros2,使用slam_toolbox后,出现discarding message because the queue is full

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    slamtoolbox ros2 小车 树莓派 4b 激光雷达
    2
    4
    533
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zhangyh
      最后由 编辑

      在树莓派4b上安装了ubuntu系统,安装ros2 jazzy。激光雷达反馈数据正常,/scan有数据反馈,rviz2正常显示。我的ros工作区下,scr文件夹有两个包,一个是机器人包一个是雷达包,机器人包包括了机器人的urdf文件,雷达是ld14p激光雷达。雷达的名字和机器人包中模型的名字一致。但是当启动slam_toolbox后,会出现下图的报错。
      d5571f15f79edddf2980d43e095bcee.png

      在rviz中:

      93b20094120ec269d3b3a75934e2af5.png
      f242b5a7890ff1cb499b0176d5e4bd6.png
      我的tf结构是这样的:
      028b83e543028f14f9e545af7433a65.png

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        遇到“discarding message because the queue is full”这类错误通常表明ROS 2节点之间的消息队列达到了其容量限制,导致新到达的消息被丢弃。这可能是因为某个节点处理消息的速度跟不上消息生成的速度,或者节点之间的通信出现了瓶颈。针对你使用slam_toolbox和树莓派4B的情况,这里有几个可能的解决方案和检查点:

        1. 检查消息生成速率:

          • 确保/scan话题的消息生成速率与你的硬件(激光雷达和树莓派)处理能力相匹配。你可以使用ros2 topic hz /scan来查看该话题的消息频率。
          • 如果频率过高,考虑降低激光雷达的扫描频率或在软件层面进行降采样。
        2. 优化slam_toolbox配置:

          • 检查slam_toolbox的配置参数,特别是与消息队列大小和处理时间相关的设置。尝试调整这些参数以适应你的硬件性能。
          • 确保slam_toolbox的CPU和内存使用在合理范围内。可以使用htop或top命令在树莓派上查看资源使用情况。
        3. 检查TF变换:

          • 你的TF结构看起来应该包含从base_link(或类似的)到激光雷达的变换。确保这些变换是正确发布的,并且没有延迟。
          • 使用ros2 run tf2_ros tf2_echo base_link lidar_frame(其中lidar_frame是你的激光雷达在URDF中定义的框架)来检查TF变换的实时性。
        4. 资源限制:

          • 树莓派4B的硬件资源相对有限,特别是CPU和内存。确保没有其他高负载的任务同时运行。
          • 考虑为ROS 2和slam_toolbox分配更多的CPU核心(如果可能的话)。
        5. 日志和调试:

          • 查看ROS 2的日志文件,可能会提供更多关于为什么消息被丢弃的线索。
          • 使用ros2 node info和ros2 topic info来检查节点和话题的状态。
        6. 代码和依赖更新:

          • 确保你的ROS 2环境、slam_toolbox和其他依赖项都是最新的。有时,软件更新可以解决性能问题或已知的bug。
        7. 网络问题:

          • 如果你的树莓派连接到网络(例如,通过Wi-Fi),请确保网络连接稳定且速度足够快,以避免网络延迟导致的问题。
        8. 使用性能分析工具:

          • 使用ROS 2的性能分析工具(如ros2 bag记录数据,然后使用ros2 bag analyze进行分析)来进一步诊断问题。

        通过上述步骤,你应该能够定位并解决导致“discarding message because the queue is full”错误的原因。如果问题仍然存在,可能需要更深入地分析slam_toolbox的内部实现或考虑硬件升级。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        Z 1 条回复 最后回复 回复 引用 0
        • Z
          zhangyh @小伊
          最后由 编辑

          @小伊 采用的解决方法,就是将SolidWorks中导出的urdf文件中,激光雷达的名称,修改与ld14p雷达官方提供的launch包中的ld14p.launch.py中的名字相同,让tf保持一致,还是出现上述报错。

          1 条回复 最后回复 回复 引用 0
          • 小伊小
            机器人小伊
            最后由 编辑

            针对您遇到的问题,即在尝试将SolidWorks中导出的URDF文件中的激光雷达名称与ld14p雷达官方提供的launch包中的名称相匹配后,仍然出现TF(Transform Frame)相关的错误,这里有几个可能的解决步骤和检查点,供您参考:

            1. 确认URDF文件中的名称完全匹配:

              • 确保在URDF文件中激光雷达的<link>和<joint>标签中的name属性与ld14p.launch.py中引用的名称完全一致。注意大小写和空格。
              • 检查URDF中是否有任何额外的或不必要的空格、换行或注释可能导致名称解析错误。
            2. 检查TF树的生成:

              • 运行ROS系统时,使用rostopic echo /tf或rviz来查看当前的TF树。确认TF树中是否包含了正确的激光雷达的frame ID。
              • 确保激光雷达的frame ID是连接到基础frame(如base_link或base_frame)的。
            3. 检查ld14p.launch.py中的配置:

              • 查看ld14p.launch.py中是否设置了正确的TF发布者。激光雷达的驱动或模拟节点应该发布一个从基础frame到激光雷达frame的TF。
              • 确认ld14p.launch.py中的参数和配置是否与您的URDF文件和ROS环境兼容。
            4. 查看ROS的日志文件:

              • 检查ROS的日志文件(通常位于~/.ros/log/),看看是否有更详细的错误信息或警告,这可能会给出问题的更多线索。
            5. 更新和重新生成URDF文件:

              • 如果可能,尝试重新从SolidWorks导出URDF文件,确保在导出过程中没有发生任何错误。
              • 如果URDF文件是通过脚本生成的,请检查生成脚本以确保没有逻辑错误或不一致。
            6. 考虑URDF和launch文件的版本控制:

              • 如果您在团队中工作,确保URDF文件和launch文件都是最新的,并且所有成员都使用了相同的版本。
            7. 检查ROS环境配置:

              • 确保ROS环境(如ROS版本、依赖库等)与ld14p雷达的官方驱动或模拟包兼容。
              • 如果使用了虚拟环境或容器,请确保所有必要的包都已正确安装和配置。
            8. 社区和官方支持:

              • 如果上述步骤都不能解决问题,考虑在ROS社区论坛、GitHub仓库或雷达制造商的支持论坛上寻求帮助。

            通过这些步骤,您应该能够更接近问题的根源,并找到解决TF不一致问题的方法。


            以上为生成回答,仅供参考~

            我是小伊,已接入ChatGpt,所有回复,仅供参考~

            1 条回复 最后回复 回复 引用 0
            • 第一个帖子
              最后一个帖子
            皖ICP备16016415号-7
            Powered by NodeBB | 鱼香ROS