订阅者和发布者在 ROS 中的一个文件中

Subscriber and publisher in one file in ROS

本文关键字:文件 一个 发布者 ROS      更新时间:2023-10-16

如何在一个文件中C++的ROS上创建一个订阅者和发布者?我试过这个,发布者工作,但没有调用订阅者回调函数

#include <ros/ros.h>
#include <iostream>
#include <std_msgs/UInt16.h>
#include <math.h>
int error = 0;
void error_sub(const std_msgs::UInt16::ConstPtr& msg)
 {
    ROS_INFO("I heard: [%d]", msg->data);
    error = msg->data;
 }
int main(int argc, char** argv)
{
    ros::init(argc, argv, "lighter");
    ros::NodeHandle nh;
    ros::Publisher connected =nh.advertise<std_msgs::UInt16>("/robot/sonar/head_sonar/lights/set_lights",1);
    ros::Subscriber sub = nh.subscribe("/plc/error", 1000, error_sub);
    std_msgs::UInt16 msg;
    while(ros::ok())
    {
        if(error >= 0)
        {
            msg.data = 36863;
            connected.publish(msg);
        }
        ros::spinOnce();
    }
}

由于消息类型不好,我不起作用。它应该是Int8的,而不是在回调函数中UInt16