在ROS2中,如何控制话题发布的频率大小
时间: 2024-02-27 11:52:02 浏览: 28
在ROS2中,可以使用rclcpp::Rate类来控制话题发布的频率大小。rclcpp::Rate类可以让ROS2节点以固定的速率执行循环,从而控制节点的处理速度。
下面是一个使用rclcpp::Rate类控制话题发布频率的示例代码:
```cpp
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
auto node = std::make_shared<rclcpp::Node>("publisher");
auto publisher = node->create_publisher<std_msgs::msg::String>("topic", 10);
rclcpp::Rate rate(2); // 控制发布频率为2Hz
while (rclcpp::ok()) {
auto message = std_msgs::msg::String();
message.data = "Hello, world!";
publisher->publish(message);
rclcpp::spin_some(node);
rate.sleep();
}
return 0;
}
```
在上面的代码中,我们实例化了一个rclcpp::Rate对象,并将其速率设置为2Hz。在每个循环迭代中,我们发布了一个std_msgs::msg::String类型的消息,然后调用rclcpp::spin_some()来处理任何收到的消息。最后,我们调用rate.sleep()来使节点休眠,以确保发布的频率不超过2Hz。