c++代码获取订阅的rosout的节点名
时间: 2024-03-20 16:38:50 浏览: 36
动画蓝图C++自定义节点学习
以下是一个C++代码示例,用于订阅ROS系统的`/rosout`主题,并从中提取发布者节点的名称:
```cpp
#include <ros/ros.h>
#include <rosgraph_msgs/Log.h>
void callback(const rosgraph_msgs::Log::ConstPtr& msg)
{
std::string node_name = msg->header.stamp.name;
ROS_INFO("Received message from node: %s", node_name.c_str());
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "listener");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe<rosgraph_msgs::Log>("/rosout", 1000, callback);
ros::spin();
return 0;
}
```
在此示例中,我们使用`ros::Subscriber`创建了一个订阅者对象,订阅了ROS系统的`/rosout`主题。当有新的消息到达时,ROS会自动调用回调函数`callback`。在回调函数中,我们使用`msg->header`属性来获取消息头信息,并从中提取发布者节点的名称。最后,我们使用`ROS_INFO`函数打印出节点名称。
阅读全文