【问题标题】:How to convert message type Float64 to Float32如何将消息类型 Float64 转换为 Float32
【发布时间】:2018-01-30 03:30:05
【问题描述】:

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

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

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

【问题讨论】:

  • 请将您的代码作为文本而不是图像。

标签: gps nodes ros mavlink


【解决方案1】:

主题的类型由发布者定义中指定的类型决定,所以我想你可以尝试将the source line 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”不同),这样您就不会踩到任何脚趾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2016-06-14
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2022-01-22
    相关资源
    最近更新 更多