订阅错误的主题

时间:2020-09-02 10:50:59

标签: real-time ros robot

我的问题是我想从一个班级订阅主题“ joy”。

假设我有一个名为My_Class的类。

作为受保护的方法,我写了订阅者。

protected:
   
 ros::Subscriber my_subscriber;

然后我将其消炎。

my_subscriber = nh_.subscribe("joy", 1, &My_Class::my_subscriber_cb, this);

然后我写了我的回调函数

void my_subscriber_cb(const sensor_msgs::Joy::ConstPtr& msg){}

然后我像这样初始化节点:

    // ROS-Node Initialisation
    ros::init(argc, argv, "TEST_CORE", ros::init_options::NoSigintHandler);

    

问题在于,最后我显示带有 rostopic列表

的主题时

我得到一个名为TEST_CORE/joy的主题。因此,我订阅TEST_CORE/joy而不是/joy

我该怎么做或更改以从正确的主题获取游戏手柄的数据?

1 个答案:

答案 0 :(得分:1)

ROS Wiki: Names处查看文档。名称通常是相对的,这意味着它们是基于节点名称创建的。由于您的节点名称为TEST_CORE,因此预订joy的结果为TEST_CORE/joy。要订阅绝对主题,您需要在主题前面添加/。所以

my_subscriber = nh_.subscribe("/joy", 1, &My_Class::my_subscriber_cb, this);

允许您输入您所需要的。