ros回调函数怎么就能弄到主函数里面做处理呢?

回调函数怎么就能弄到主函数里面做处理呢?我想在主函数里面用接收到的数据,但是订阅者回调函数在外面

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7737562
  • 这篇博客也不错, 你可以看下ROS:两个节点分别实现图像的发布与订阅功能,以及在其中一个节点实现图像的预处理
  • 除此之外, 这篇博客: ros新建消息类型、新建服务数据类型。中的 定义自己的主题,在已有消息类型的基础上。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 发布节点:

    send_msg.cpp
    #include "ros/ros.h"
    #include "std_msgs/String.h"
    #include <sstream>
    
    int main(int argc, char **argv)
    {
      ros::init(argc, argv, "send_msg.cpp");
      ros::NodeHandle n;
      ros::Publisher pub = n.advertise<std_msgs::String>("message", 1000);
      ros::Rate loop_rate(10);
      while (ros::ok())
      {
        std_msgs::String msg;
        std::stringstream ss;
        ss << " I am the send node ";
        msg.data = ss.str();
        pub.publish(msg);
        ros::spinOnce();
        loop_rate.sleep();
      }
      return 0;
    }
    

    接受节点:

    //receive_msg.cpp
    #include "ros/ros.h"
    #include "std_msgs/String.h"
    
    void messageCallback(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, "receive_msg");
      ros::NodeHandle n;
      ros::Subscriber sub = n.subscribe("message", 1000, messageCallback);
      ros::spin();
      return 0;
    }
    

    两个节点同时运行可以得到结果。

  • 您还可以看一下 赵虚左老师的机器人操作系统ROS入门课程_仿真课程中的 仿真概述_应用场景_机器人系统仿真小节, 巩固相关知识点