如何将消息类型Float64转换为Float32

时间:2017-08-22 01:19:26

标签: gps nodes ros mavlink

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

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

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

rostopic type

1 个答案:

答案 0 :(得分:0)

主题的类型取决于发布商定义中指定的类型,因此我想您可以尝试将the source第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”),这样您就不会踩到任何脚趾。