ros句柄理解-传参

 <launch>
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
        <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--局部参数-->
    </node>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh("~"); //nh是局部命名空间
  nh.param("take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 2
}
 <launch>
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
        <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--局部参数-->
    </node>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh; //nh是全局命名空间
  nh.param("take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 1
}
//在全局命名空间下,要提取局部命名空间下的参数,需要添加node name
 <launch>
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
        <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--局部参数-->
    </node>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh; //nh是全局命名空间
  nh.param("take_off_land/take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 2
}
-----------------------------------分隔线----------------------------------------
//在全局命名空间下,要提取局部命名空间下的参数,需要添加node name,这时候的node name依旧是take_off_land,与加入的命名空间无关
 <launch>
 <group ns="UAV1">//加入命名空间
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
        <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--局部参数-->
    </node>
</group>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh; //nh是全局命名空间
  nh.param("take_off_land/take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 2
}
 <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--全局参数-->
 <launch>
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
    </node>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh; //nh是全局命名空间
  nh.param("take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 2
}
 <param name="take_off_land/drone_sum" value="2" type="int"/>// <!--全局参数-->
 <launch>
    <node pkg="ego_planner" name="take_off_land" type="take_off_land" output="screen">
    </node>
 </launch>
 
int drone_sum_;//全局变量
int main(int argc, char** argv) {
  ros::init(argc, argv, "take_off_land");
  ros::NodeHandle nh("~"); //nh是局部命名空间
  nh.param("take_off_land/drone_sum", drone_sum_, 1);
  std::cout<<"drone_sum_: "<<drone_sum_<<std::endl;//drone_sum_ = 2
}

补充:
1. 使用ros::NodeHandle nh("~"),发布的话题名字为:节点名字+话题名字
2. 使用ros::NodeHandle nh,发布的话题名字为:话题名字

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值