ros2延时函数c++
时间: 2024-09-09 22:13:54 浏览: 120
在ROS 2(Robot Operating System)中,C++环境中并没有内置的延时函数可以直接使用,类似于Python中的`rospy.sleep()`。然而,你可以利用`rclcpp::Duration`类来自定义一个简单的延迟机制。`rclcpp::Duration`代表时间间隔,你可以创建一个这样的对象并等待特定的时间长度:
```cpp
#include <rclcpp/duration.hpp>
#include <rclcpp/rclcpp.hpp>
class MyNode : public rclcpp::Node
{
public:
explicit MyNode(const std::string & node_name)
: Node(node_name)
{
auto duration = rclcpp::Duration::from_seconds(5); // 设置延迟5秒
rclcpp::spin_until_future_complete(this->get_node_base()->create_future(), this->do_something_after_delay()); // 等待任务完成
}
private:
void do_something_after_delay()
{
RCLCPP_INFO(get_logger(), "Doing something after a delay...");
// 这里放你的业务逻辑...
}
};
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared<MyNode>("my_node");
rclcpp::spin(node); // 开始节点循环
rclcpp::shutdown();
return 0;
}
```
在这个例子中,`do_something_after_delay`函数会在5秒后开始执行。注意,你需要替换`do_something_after_delay`里的实际任务内容。
阅读全文