写一段ROS节点通信C++代码
时间: 2023-10-24 19:05:42 浏览: 123
以下是一个简单的ROS节点通信C++代码示例:
```
#include <ros/ros.h>
#include <std_msgs/String.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节点
ros::init(argc, argv, "node_name");
// 创建节点句柄
ros::NodeHandle node;
// 创建订阅者,订阅 "topic_name" 主题,消息类型为 std_msgs::String
ros::Subscriber sub = node.subscribe("topic_name", 1000, messageCallback);
// 创建发布者,发布 "topic_name" 主题,消息类型为 std_msgs::String
ros::Publisher pub = node.advertise<std_msgs::String>("topic_name", 1000);
// 设置循环频率为10Hz
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok()) {
// 创建消息对象
std_msgs::String msg;
// 设置消息内容
std::stringstream ss;
ss << "Hello World " << count;
msg.data = ss.str();
// 发布消息
pub.publish(msg);
// 输出日志
ROS_INFO("Sent message: %s", msg.data.c_str());
// 处理回调函数
ros::spinOnce();
// 等待
loop_rate.sleep();
count++;
}
return 0;
}
```
该代码中,包含了ROS节点的初始化、创建订阅者、创建发布者、设置循环频率、创建消息对象、发布消息、处理回调函数等操作。你可以根据实际需求修改代码,实现不同的节点通信功能。
阅读全文