ros2 sleep
时间: 2025-04-20 14:12:19 浏览: 36
### 实现休眠或延迟方法
在 ROS 2 中,可以利用 Python 或 C++ 编程语言中的标准库来实现休眠或延迟功能。对于 Python 节点而言,`time.sleep()` 函数能够提供简单的延时操作[^1]。
```python
import time
import rclpy
from rclpy.node import Node
class MinimalPublisher(Node):
def __init__(self):
super().__init__('minimal_publisher')
self.publisher_ = self.create_publisher(String, 'topic', 10)
timer_period = 0.5 # seconds
self.timer = self.create_timer(timer_period, self.timer_callback)
def timer_callback(self):
msg = String()
msg.data = 'Hello World'
self.get_logger().info('Publishing: "%s"' % msg.data)
self.publisher_.publish(msg)
time.sleep(1) # 延迟一秒再继续执行下一次循环
```
另外,在 C++ 中则可采用 `std::this_thread::sleep_for()` 来达到相同的效果。
```cpp
#include <chrono>
#include <rclcpp/rclcpp.hpp>
using namespace std::chrono_literals;
int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("delay_example");
RCLCPP_INFO(node->get_logger(), "Start sleeping...");
std::this_thread::sleep_for(2s); // 延迟两秒
RCLCPP_INFO(node->get_logger(), "Wake up!");
rclcpp::shutdown();
return 0;
}
```
值得注意的是,除了上述方式外,ROS 2 还提供了创建定时器的方法,这通常用于周期性的任务调度而非简单的一次性延迟。
阅读全文
相关推荐


















