ROS 发布器第一次发布的消息,订阅器订阅不到解决方案

代码主体:

ros::Publisher pub = n.advertise("vel_ctl",10);
ros::Rate loop_rate(1);
geometry_msgs::Twist msg;
  int count = 0;
  while (ros::ok())
  {
        count++;
        msg.linear.x=0.1+count;
        msg.linear.y=0.2+count;
        msg.linear.z=0.3+count;
        msg.angular.x=0.4+count;
        msg.angular.y=0.5+count;
        msg.angular.z=0.6+count;

        if (count == 1)
        pub.publish(msg);

        ros::spinOnce();
        loop_rate.sleep();
  }

通过上述代码可以完成一次消息发布,但是在另一个订阅节点,却订阅不到该节点发布的消息。

经过查阅资料发现,此时消息发布时,ros::Publisher pub 还没有完成注册,导致发布的数据无法订阅。

因此可以在ros::Publisher pub = n.advertise(“vel_ctl”,10)后加一个延时,保证pub注册成功。

ros::Publisher pub = n.advertise("vel_ctl",10);
ros::Duration(3.0).sleep();

你可能感兴趣的:(ros,ros,topic,ros,message)