c++ - 延迟特定时间的方法调用

标签 c++ linux ros

我正在用 C++ 编写一个 ros 节点,需要将一个方法调用延迟到特定时间。 在不因该延迟锁定节点的情况下,有什么好方法可以做到这一点?

最佳答案

sehe 使用了 C++ 方法,而存在两种在 ROS 中执行此操作的方法。

第一个——实现起来更简单的方法——是使用Rate类(class)。 this tutorial 的第 2 节阐明了如何使用它。然而,如您所见,这不是最佳选择。

Note: It is generally recommended to use Timers instead of Rate.

Timers是在做其他事情时等待一定时间的正确方法。 This simple tutorial解释如何使用它们。

ros::Timer ros::NodeHandle::createTimer(ros::Duration period, <callback>, bool oneshot = false);

在您的情况下,如果您只想执行该方法一次,请将 oneshot bool 变量设置为 true。

关于c++ - 延迟特定时间的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27025696/

相关文章:

c++ - 我想将来自 ROS 主题的消息存储在数组中以供进一步阐述

c++ - 在 VSCode Insiders 中运行 C++ Jupyter Notebook

linux - 如何在Linux gcc编译器中编译<linnux/kernel.h>?

c++ - 在模板参数中传递 vector

c - 如何通过 RAW 套接字发送修改后的 IPv6 数据包?

c - strace输出问题

c++ - 在 rosmake (CMakeLists.txt) 中为库指定自定义包含目录

c++ - 使用 ROS 在 C++11 中 boost 文件系统段错误

C++ 强制转换运算符重载和多态性

c++ - 在 Xcode 中关闭变量的自动初始化