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

    ROS2的延时函数是什么?

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    时延函数 延时函数
    3
    3
    939
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 凌云凌
      凌云
      最后由 编辑

      请问,ROS2的单纯延时函数是哪个呢?是rclcpp里面的吧。

      1 条回复 最后回复 回复 引用 0
      • N
        neal.shen
        最后由 编辑

        @凌云 在 ROS2的延时函数是什么? 中说:

        rclcpp

        直接用纯C++的延时也可以吧

        小鱼小 1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @neal.shen
          最后由 编辑

          @neal-shen 对,ROS2的C++时间机制和C++ chorno一致性很高,所以你可以 用下面的代码实现

          #include <iostream>       // std::cout, std::endl
          #include <thread>         // std::this_thread::sleep_for
          #include <chrono>         // std::chrono::seconds
          
          int main()
          {
                  std::cout << "start sleep"<<std::endl;
                  std::this_thread::sleep_for(std::chrono::seconds(1));
          	std::cout << "stop sleep"<<std::endl;
          	return 0;
          }
          
          

          不过需要注意的是,最好不要阻塞主线程,如果想实现延迟一段时间执行可以用ros2的timer定个时,接着在回调函数里把这个timer cancle掉,这样就可以实现延迟执行一次的功能。

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

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