我们目前正在做一个项目,我们想在Raspberry pi 4上的ubuntu 20.04服务器上读取带有ROS2 foxy的rplidar传感器的数据。因此,我们从github上获得了ROS2的官方副本包。它可以工作,我们也可以在主题列表中看到它并使用
获取/scan主题的数据ros2 topic echo /scan
我们想要创建一个具有/scan主题订阅者的新节点。然而,绑定的回调函数永远不会被调用。
所以我们知道主题已经发布了,但是我们不能在自己的节点中绑定它。
Minimal_sub::Minimal_sub() : Node("minimal_sub") {
_subscriber = create_subscription<Sensor_msgs::msg::LaserScan>("scan", 10, bind(&Minimal_sub::callback, this, std::placeholder::_1));
}
void Minimal_sub::callback(const Sensor_msgs::msg::LaserScan::SharedPtr msg) {
std::cout << "Received Message << std::endl;
}
谢谢你的提示。
您需要指定完整的主题名称。在您的示例中,您使用的主题是相对于节点的名称空间的"scan"
。相反,您希望使用完全限定主题名称,即"/scan"
。以下是你想要的:
Minimal_sub::Minimal_sub() : Node("minimal_sub") {
_subscriber = create_subscription<Sensor_msgs::msg::LaserScan>("/scan", 10, bind(&Minimal_sub::callback, this, std::placeholder::_1));
}
void Minimal_sub::callback(const Sensor_msgs::msg::LaserScan::SharedPtr msg) {
std::cout << "Received Message << std::endl;
}