话题重映射
参考
首先看from后面第一个话题是订阅的话题,还是发布的话题
1、发布的话题
将节点发布的话题/pub_node映射到/talker的名字上去:把前面的改成后面的拿来用
<remap from="/pub_data" to="/talker" />
2、订阅的话题
将别人发布的/talker主题改为sub_node节点订阅的sub_data名字:把后面的改成前面的,映射别人给自己用
<remap from="/sub_data" to="/talker" />
launch中话题前面为什么加~?
ros::init(argc, argv, "px4ctrl");
ros::NodeHandle nh("~");
//创建一个位于私有命名空间的节点句柄,它可以让您使用私有名称("name”)来发布或订阅话题
ros::Subscriber odom_sub =
nh.subscribe<nav_msgs::Odometry>("odom",
100,
boost::bind(&Odom_Data_t::feed, &fsm.odom_data, _1),
ros::VoidConstPtr(),
ros::TransportHints().tcpNoDelay());
<launch>
<node pkg="px4ctrl" type="px4ctrl_node" name="px4ctrl" output="screen">
<!-- <remap from="~odom" to="/vicon_imu_ekf_odom" /> -->
<!-- odom是订阅的话题,这里将后面的改成前面的进行,拿odom来用 -->
<!-- ~odom就相当于/odom_sub/odom。 odom_sub是节点名-->
<!--这样做的好处是可以避免话题名称冲突,让每个节点都有自己独立的私有话题-->
<remap from="~odom" to="/vins_fusion/imu_propagate" />
<remap from="~cmd" to="/position_cmd" />
<rosparam command="load" file="$(find px4ctrl)/config/ctrl_param_fpv.yaml" />
</node>
</launch>
ros::NodeHandle nh(“波浪号”)这行代码的含义。这行代码的作用是创建一个位于私有命名空间的节点句柄,它可以让您使用私有名称(“波浪号name”)来发布或订阅话题。私有名称是一种特殊的相对名称,它以波浪号(波浪号)开头,表示该名称是相对于节点名称的。例如,如果您的节点名称是my_node,那么~my_topic就相当于/my_node/my_topic。这样做的好处是可以避免话题名称冲突,让每个节点都有自己独立的私有话题。