/* 本程序为 ROS2 订阅话题的示例代码,订阅话题,当有消息的时候,打印出来 */ #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" // 包含字符串消息类型的头文件 using StringMsg = std_msgs::msg::String; // 定义一个别名,方便后续使用 class MinimalSubscriber : public rclcpp::Node { public: MinimalSubscriber() : Node("minimal_subscriber") // 构造函数,初始化节点名称 { // 创建一个订阅者对象,订阅"chatter"主题,使用默认QoS设置,并绑定回调函数 subscription_ = this->create_subscription( "chatter",10,std::bind(&MinimalSubscriber::topic_callback, this, std::placeholders::_1) ); } // 订阅回调函数,接收消息并打印 void topic_callback(const StringMsg::SharedPtr msg) { RCLCPP_INFO(this->get_logger(), "Subscriber: '%s'", msg->data.c_str()); // 打印日志,显示接收到的消息内容 } private: rclcpp::Subscription::SharedPtr subscription_; // 订阅者对象 }; int main(int argc, char *argv[]) { rclcpp::init(argc, argv); // 初始化ROS2客户端库 auto node = std::make_shared(); // 创建订阅者节点对象 rclcpp::spin(node); // 进入循环,等待回调函数被调用 rclcpp::shutdown(); // 关闭ROS2客户端库 return 0; }