我尝试发布主题/ mavros / global_position / compass_hdg中的数据,这是一个Float64类型的消息(std_msgs / Float64),但没有一个Float64类型的主题在我的Nvidia Jetson TX1上发布数据。
所以我想,由于Float32类型运行良好,我想将ROS节点的数据类型本身从Float64转换为Float32。我尝试修改C ++代码并使用catkin_make重新编译,但没有运气。
有没有办法改变ros节点的类型。如果是这样,我是否必须从源代码重新构建以应用更改?
答案 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”),这样您就不会踩到任何脚趾。