ROS参数服务器(参数使用详细介绍) | 您所在的位置:网站首页 › 订阅日历的服务器代码是什么 › ROS参数服务器(参数使用详细介绍) |
参数服务器是可通过网络访问的共享的多变量字典。它是节点存储参数的地方、用于配置参数、全局共享参数。参数服务器使用互联网传输,在节点管理器中运行,实现整个通信过程。它使用XMLRPC数据类型为参数赋值,包括以下类型:32位整数、布尔值、字符串、双精度浮点、ISO 8601日期、列表(List)、基于64位编码的二进制数据。 参数服务器的配置方式非常的简单灵活,总的来讲有三种方式:命令行维护、launch文件内读写、node源码。 命令行维护 ROS中关于参数服务器的工具是rosparam。其支持的参数如下所示: 命令 作用 rosparam list 列出了服务器中的所有参数 rosparam get [parameter] 获取参数值 rosparam set [parameter] [value] 设置参数值 rosparam delete [parameter] 删除参数 rosparam dump [file] 将参数服务器保存到一个文件 rosparam load [file] 加载参数文件到参数服务器 launch文件内读写在前面讲到launch文件时,提到launch文件有很多标签,其中有和,以激光雷达驱动lidar.launch文件为例: 可以看出,param是设置单个参数。 以导航驱动move_base.launch文件为例: 可以看出,rosparam是用于加载参数文件的,而参数文件可以包含许多参数。 node源码param的操作非常轻巧,非常简单。关于param的API,roscpp提供了两套:ros::param namespace和ros::NodeHandle;它们的操作完全一样。 #include int main(int argc, char **argv){ ros::init(argc, argv, "param_demo"); ros::NodeHandle nh; int param1, param2, param3, param4, param5; //Get Param的三种方法 //① ros::param::get()获取参数“param1”的value,写入到param1上 bool test1 = ros::param::get("param1", param1); //② ros::NodeHandle::getParam()获取参数,与①作用相同 bool test2 = nh.getParam("param2",param2); //③ ros::NodeHandle::param()类似于①和② //但如果get不到指定的param,它可以给param指定一个默认值(如1) nh.param("param3", param3, 1); //Set Param //① ros::param::set()设置参数 param4 = 4; ros::param::set("param4", param4); //② ros::NodeHandle::setParam()设置参数 param5 = 5; nh.setParam("param5",param5); //Check Param //① ros::NodeHandle::hasParam() bool ifparam5 = nh.hasParam("param5"); //② ros::param::has() bool ifparam6 = ros::param::has("param6"); //Delete Param //① ros::NodeHandle::deleteParam() bool ifdeleted5 = nh.deleteParam("param5"); //② ros::param::del() bool ifdeleted6 = ros::param::del("param6"); }
|
CopyRight 2018-2019 实验室设备网 版权所有 |