c++ - ROS 中一个文件中的订阅者和发布者

标签 c++ ros

如何在一个文件中在 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

关于c++ - ROS 中一个文件中的订阅者和发布者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888722/

相关文章:

c++ - 使用 UDP 通过 UDP 将数据传输到非 ROS 计算机

javascript - 从带有回调参数的函数中获取值

matrix - 如何从里程计/tf 数据中获取投影矩阵?

c++ - 我是否需要锁定才能同时使用同一应用程序两次写入套接字?

C++插入排序中位数计算错误

c++ - 寻找 OpenCV 教程

c++ - 从 (x,y) 像素坐标获取 3D 世界坐标

c++ - C结构指针解引用速度

c++ - 这是否被认为是内存泄漏?

c++ - 如何找到 `FILE*`的相对地址