ROSparameterServer的使用与编程方法

ROS参数的使用与编程方法


参考博客古月居21讲


在ROS master 中有一个参数服务器,名为Parameter Server, 他是一个全局字典,用来保存各个节点之间的配置参数, 运行之后每一个节点都可以访问其中的参数,只要节点向参数服务器发送查询请求,就会返回相应的参数。各个节点不一定就都位于同一个电脑中,但只要在同样的ROS环境里面都可以通过parameter server来查询全局字典的参数。

parameter server 是除了 订阅/发布,客户/服务,action客户/服务之外的第四种通信机制。
一般情况下,参数都是存放在YAML文件中。调用YAML文件的指令为rosparam。

  • 创建一个功能包
    进入src文件夹,打开终端,创建新功能包
    在这里插入图片描述

  • rosparam 介绍 及shell命令行操作
    输入$ rosparam 会返回提示以下信息

	rosparam is a command-line tool for getting, setting, 	and deleting parameters from the ROS Parameter Server.
	Commands:
		rosparam set	set parameter
		rosparam get	get parameter
		rosparam load	load parameters from file
		rosparam dump	dump parameters to file
		rosparam delete	delete parameter
		rosparam list	list parameter names

其中

ITEMEXPAIN
rosparam list列出当前的所有参数;
rosparam get param_key显示某个参数的值;
rosparam set param_key param_value设置某个参数的值;
rosparam dump {FILE_NAME}保存参数到某个文件中;
rosparam load {FILE_NAME}从文件读取参数;
rosparam delete param_key删除参数;

运行小海龟

	$ roscore
	$ rosrun turtlesim turtlesim_node
	$ rosparam list

可见

	/rosdistro
	/roslaunch/uris/host_jpy_surface_pro__44191
	/rosversion
	/run_id
	/turtlesim/background_b
	/turtlesim/background_g
	/turtlesim/background_r

可以通过 get 来查看值
在这里插入图片描述rosdistro 为ros当前的发行版本–melodic
rosversion 为当前版本号 --1.14.7
run_id 为当前进程号 --8122c01e-e2b3-11ea-bb1d-f06e0bca26d1

运行rosparam dump param.yaml 之后,可以在当前终端所在路径下找到对应的 param.yaml文件。
rosparam load {FILE_NAME}执行的也是当前终端所在文件路径下的加载指令。

  • 通过程序设置param
    在功能包文件夹src下面新建cpp文件,键入代码
#include<ros/ros.h>
#include<string>
#include<std_srvs/Empty.h>

int main (int argc,char **argv){
    int red,green,blue;
    
    ros::init(argc,argv,"paramter_config");
    
    ros::NodeHandle node;
    
    ros::param::get("turtlesim/background_r",red);
    ros::param::get("turtlesim/background_g",green);
    ros::param::get("turtlesim/background_b",blue);
    
    ROS_INFO("Get Background Color[%d,%d,%d]",red,green,blue);
    
    ros::param::set("turtlesim/background_r",255);
    ros::param::set("turtlesim/background_g",255);
    ros::param::set("turtlesim/background_b",255);
    
    ROS_INFO("Set Background Color ");
    
    ros::param::get("turtlesim/background_r",red);
    ros::param::get("turtlesim/background_g",green);
    ros::param::get("turtlesim/background_b",blue);
    
    ROS_INFO("re-Get Background Color[%d,%d,%d]",red,green,blue);
    
    ros::service::waitForService("/clear");
    ros::ServiceClient clear_background = node.serviceclient<std_srvs::Empty>("/clear");
    std_srvs::Empty srv;
    clear_background.call(srv);
    sleep(1);
    return 0;
}

修改CMakeLists.txt
在这里插入图片描述
编译
设置环境变量
检查环境变量
运行调试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值