0

我正在尝试从主题 /mavros/global_position/compass_hdg 发布数据,该主题是 Float64 类型的消息(std_msgs/Float64),但 Float64 类型的主题都没有在我的 Nvidia Jetson TX1 上发布数据。

所以我想,既然 Float32 类型运行良好,我想将 ROS 节点的数据类型本身从 Float64 转换为 Float32。我尝试修改 C++ 代码并使用 catkin_make 重新编译,但没有运气。

有没有办法改变 ros 节点的类型。如果是这样,我是否必须从源代码重新构建以应用更改?

主题类型

4

1 回答 1

1

主题的类型由发布者定义中指定的类型确定,因此我想您可以尝试将源代码行 78 更改为

gp_hdg_pub = gp_nh.advertise<std_msgs::Float32>("compass_hdg", 10);

和第 235 行到

auto compass_heading = boost::make_shared<std_msgs::Float32>();

因为似乎该主题没有在该包的其他地方被收听,然后重新编译代码。您必须更改订阅该主题的任何代码中的类型,即使它位于不同的包中。您还可以定义一个发布与 Float32 相同数据的新主题(与上述相同,但名称与“compass_hdg”不同),这样您就不会踩到任何脚趾。

于 2017-10-12T02:46:10.170 回答