c++代码实现和rostopic echo /rosout类似功能
时间: 2023-09-23 17:08:56 浏览: 87
以下是一个使用 C++ 实现和 `rostopic echo /rosout` 类似功能的程序:
```c++
#include <ros/ros.h>
#include <ros/console.h>
void logCallback(const ros::rosout::Log::ConstPtr& msg)
{
// 输出日志信息
ROS_INFO("[%s][%s-%d][%.3f]: %s",
msg->name.c_str(), msg->file.c_str(), msg->line,
msg->header.stamp.toSec(), msg->msg.c_str());
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "log_viewer");
ros::NodeHandle nh;
// 订阅 /rosout topic
ros::Subscriber sub = nh.subscribe("/rosout", 1000, logCallback);
ros::spin();
return 0;
}
```
该程序使用 ROS 的 C++ API 订阅 `/rosout` topic,并定义了回调函数 `logCallback`。当有新的日志信息发布时,回调函数将输出日志信息,包括节点名称、文件名和行数、时间戳和消息内容。注意,程序中使用了 `ROS_INFO` 宏输出日志信息,该宏可以自动根据日志等级输出不同颜色的日志信息。如果需要输出更多的日志信息,可以使用 `ROS_DEBUG`、`ROS_WARN`、`ROS_ERROR` 等宏。
阅读全文