订阅了错误的主题

问题描述 投票:0回答:1

我的问题是我想订阅主题“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 list

显示主题时

我得到一个名为

TEST_CORE/joy
的主题。所以我订阅
TEST_CORE/joy
而不是
/joy
.

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

c++ ros
1个回答
1
投票

查看ROS Wiki:名称中的文档。名称通常是相对的,这意味着它们是根据节点名称创建的。由于您的节点名称是

TEST_CORE
,因此订阅
joy
的结果是
TEST_CORE/joy
。订阅绝对主题需要在主题前面添加
/
。所以

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

允许您所需的订阅。

© www.soinside.com 2019 - 2024. All rights reserved.