订阅了错误的主题
Subscribing to the wrong topic
我的问题是我想订阅主题“joy”但是来自class。
假设我有一个名为 My_Class 的 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
.
我可以做什么或更改以从正确的主题获取游戏手柄的数据?
查看 ROS Wiki: Names 上的文档。名称通常是相对的,这意味着它们是根据节点名称创建的。由于您的节点名称是TEST_CORE
,订阅joy
的结果是TEST_CORE/joy
。订阅绝对主题,需要在主题前加上/
。所以
my_subscriber = nh_.subscribe("/joy", 1, &My_Class::my_subscriber_cb, this);
允许您要求的订阅。
我的问题是我想订阅主题“joy”但是来自class。
假设我有一个名为 My_Class 的 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
.
我可以做什么或更改以从正确的主题获取游戏手柄的数据?
查看 ROS Wiki: Names 上的文档。名称通常是相对的,这意味着它们是根据节点名称创建的。由于您的节点名称是TEST_CORE
,订阅joy
的结果是TEST_CORE/joy
。订阅绝对主题,需要在主题前加上/
。所以
my_subscriber = nh_.subscribe("/joy", 1, &My_Class::my_subscriber_cb, this);
允许您要求的订阅。