我正在用 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/