ROS C++发布话题和订阅话题示例
时间: 2023-10-29 19:05:47 浏览: 157
好的,下面是一个简单的ROS C++发布话题和订阅话题的示例代码:
发布话题:
```cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char **argv)
{
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 10);
ros::Rate loop_rate(10);
while (ros::ok())
{
std_msgs::String msg;
msg.data = "hello world";
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
```
订阅话题:
```cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("chatter", 10, chatterCallback);
ros::spin();
return 0;
}
```
在发布话题的示例中,我们创建了一个名为“chatter”的话题,并将字符串类型的消息发布到该话题上。在订阅话题的示例中,我们订阅了名为“chatter”的话题,并定义了一个回调函数来处理接收到的消息。
这只是一个简单的示例,实际使用ROS时可能需要更复杂的代码来处理不同类型的消息和实现更复杂的功能。
阅读全文