ros::spin()
时间: 2023-09-14 20:10:24 浏览: 107
ros::spin()是一个函数,它是ROS中的一个主要函数之一。它用于启动ROS节点的事件循环,使节点能够接收和处理来自其他节点的消息、服务请求和其他事件。当调用ros::spin()时,节点将开始等待和处理传入的消息,直到节点被显式停止。
在ROS中,节点通常通过订阅主题(topic)来接收消息,通过发布主题(topic)来发送消息。当调用ros::spin()时,节点将开始处理这些传入的消息。它会一直运行,直到节点被关闭或显式停止。
以下是一个简单的ROS节点示例代码:
```cpp
#include <ros/ros.h>
void messageCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("Received message: %s", msg->data.c_str());
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe("my_topic", 10, messageCallback);
ros::spin();
return 0;
}
```
在上面的示例中,我们创建了一个名为"my_node"的ROS节点,并订阅了名为"my_topic"的主题。当收到消息时,会调用messageCallback函数。最后,我们调用ros::spin()来启动事件循环,使节点能够接收和处理消息。
希望这个回答对你有帮助!如果你有任何进一步的问题,请随时提问。
阅读全文