本文参考 https://blog.csdn.net/shijinqiao/article/details/50450844
本文介绍ros中roslaunch文件的局部参数与全局参数的使用。
launch文件
<launch>
<param name="serial" value="5" />
<node name="main_pub" pkg="my_param" type="main_pub" output="screen">
<param name="serial" value="10" />
</node>
</launch>
main.cpp文件
#include <ros/ros.h>
int main(int argc, char* argv[])
{
int serial_number = -1;
ros::init(argc, argv, "parameter_test");
// 在 launch 标签内的是全局参数,而在node 标签内的则是局部参数
// 运行结果:Serial was 5
ros::NodeHandle n;
n.getParam("serial", serial_number); // n.param("serial", serial_number, 0);
// 运行结果:Serial was 10
// ros::NodeHandle n("~"); // 波浪符代表节点句柄的命名空间,
// n.param("serial", serial_number, 0);
// 如果我们使用node空间,但是想使用全局空间的参数怎么办?只要在变量前面加上”/”就获得全局参数。 如"/serial"
// 运行结果:Serial was 5
// ros::NodeHandle n("~");
// n.getParam("/serial", serial_number);
// 如果想在全局空间使用node空间的变量又该怎样?只需在变量前面加上node命名空间的值就可以了, 例如"/main_pub/serial"
// 运行结果:Serial was 10
// ros::NodeHandle n;
// n.getParam("/main_pub/serial", serial_number);
ros::Rate loop_rate(10);
ROS_INFO("Serial was %d", serial_number);
while (ros::ok())
{
ros::spinOnce();
loop_rate.sleep();
}
}