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

    ros1和ros2仿真中时间同步导致的问题

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros1bridge ros2和ros1时间同步 usesimtime
    2
    2
    393
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • I
      Ilucky
      最后由 编辑

      我使用px4的飞控进行无人机仿真,规划使用了ego_planner,不过飞行控制器是通过ros2实现的,我使用了ros2 run ros1_bridge dynamic_bridge --bridge-all-topic把规划的轨迹以及无人机odom实现了在ros1和ros2之间的传输。由于使用了gazebo,我在ros1中设置了use_sim_time=true,为了message_filter 无人机的深度图像以及odom信息,所以在ros2中也设置了use_sim_time = true。

      这时候我的问题就出现了,原本在ros1中设置的timer函数:“exec_timer_ = nh.createTimer(ros::Duration(0.01), &EGOReplanFSM::execFSMCallback, this);”的运行间隔在我启动了ros2的launch文件后突然变长了,由原先的0.01s变成了1s,导致我的规划频率跟不上了。这之后,即使我把ros2的相关节点全部关闭掉,这个timer的执行频率都没有回复,请问大家这可能是什么原因呢?

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

        在你的描述中,你遇到了在使用ROS 1和ROS 2进行桥接时,ROS 1中的定时器(timer)执行频率异常降低的问题。这种情况可能由几个不同的因素引起,以下是一些可能的原因和解决方案:

        1. 时间同步问题:

          • 尽管你已经在ROS 1和ROS 2中都设置了use_sim_time=true,但时间同步可能仍然存在问题。特别是当ROS 1和ROS 2分别运行在不同的机器或容器上时,网络延迟或时间同步服务(如NTP)的配置不当都可能导致时间不同步。
          • 解决方案:确保所有节点都在同一个时间源上同步,或者确保它们之间的时间差异非常小。你可以使用NTP或类似的服务来同步不同系统的时间。
        2. 资源竞争或过载:

          • 运行ROS 1和ROS 2桥接可能会增加CPU和内存的使用量,特别是当处理大量数据或复杂计算时。如果系统资源不足,可能会导致定时器执行延迟。
          • 解决方案:检查系统的CPU和内存使用情况,确保有足够的资源来支持所有运行的进程。可能需要优化你的节点或增加系统资源。
        3. ROS 1与ROS 2桥接的性能问题:

          • ros1_bridge可能在处理大量数据或高频率的消息时表现不佳,特别是在不同的ROS版本之间桥接时。
          • 解决方案:考虑减少桥接的消息数量或频率,或者探索其他消息传递方法,如使用WebSocket、TCP/UDP或其他中间件来直接通信。
        4. ROS 1定时器本身的限制:

          • ROS 1的定时器实现可能受到底层系统调度的限制,特别是在多线程或多进程环境中。
          • 解决方案:检查ROS 1节点的线程配置,确保定时器回调能够在预期的间隔内被调用。此外,尝试在不同的ROS 1环境中重现问题,以排除特定于环境的因素。
        5. 重启ROS 1节点:

          • 既然你提到即使关闭ROS 2节点后,ROS 1的定时器频率也没有恢复,这可能表明ROS 1节点的状态已经以某种方式被永久改变。
          • 解决方案:尝试完全重启ROS 1节点或整个ROS 1环境,以确保所有设置和状态都被重置。
        6. 检查ROS 1和ROS 2的日志:

          • 查看ROS 1和ROS 2的日志文件,以获取可能的错误或警告信息,这些信息可能有助于诊断问题。
        7. 咨询社区或专家:

          • 如果以上方法都不能解决问题,你可以考虑在ROS社区或相关论坛中寻求帮助,或者联系ROS的开发者以获取更专业的支持。

        希望这些建议能帮助你解决问题!如果还有其他问题或需要进一步的帮助,请随时提问。


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

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

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