ros multi topics sub

#include "ros/ros.h"
#include "std_msgs/String.h"
//#include <boost/thread.hpp>
#include <thread>
class multiThreadListener
{
public:
    multiThreadListener()
    {    
        sub = n.subscribe("chatter1", 1, &multiThreadListener::chatterCallback1,this);
        sub2 = n.subscribe("chatter2", 1, &multiThreadListener::chatterCallback2,this);
    }
    void chatterCallback1(const std_msgs::String::ConstPtr& msg);
    void chatterCallback2(const std_msgs::String::ConstPtr& msg);

private:
    ros::NodeHandle n;
    ros::Subscriber sub;
    ros::Subscriber sub2;
 
};


void multiThreadListener::chatterCallback1(const std_msgs::String::ConstPtr& msg)
{
  ROS_INFO("I heard: [%s]", msg->data.c_str());
  ros::Rate loop_rate(0.5);//block chatterCallback2()
  loop_rate.sleep();
}


void multiThreadListener::chatterCallback2(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, "multi_sub");

  multiThreadListener listener_obj;
 
  ros::AsyncSpinner spinner(2); // Use 2 threads
  spinner.start();
 
  ros::Rate loop_rate(10);//block chatterCallback2()
 
  while(ros::ok())
  {
      std::cout<<"----------------"<<std::endl;
      std::this_thread::sleep_for(std::chrono::milliseconds(500));
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_33179208/article/details/77944730
今日推荐