参数服务器是可通过网络访问的共享的多变量字典。它是节点存储参数的地方、用于配置参数、全局共享参数。参数服务器使用互联网传输,在节点管理器中运行,实现整个通信过程。它使用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文件有很多标签,其中有<param>和<rosparam>,以激光雷达驱动lidar.launch文件为例:

<launch>
<node name="ydlidar_node"  pkg="ydlidar"  type="ydlidar_node" output="screen">
<param name="port"         type="string" value="/dev/ydlidar"/>
<param name="baudrate"     type="int"    value="115200"/>
<param name="frame_id"     type="string" value="laser_frame"/>
<param name="angle_fixed"  type="bool"   value="true"/>
<param name="low_exposure"  type="bool"   value="false"/>
<param name="heartbeat"    type="bool"   value="false"/>
<param name="resolution_fixed"    type="bool"   value="true"/>
<param name="angle_min"    type="double" value="-180" />
<param name="angle_max"    type="double" value="180" />
<param name="range_min"    type="double" value="0.08" />
<param name="range_max"    type="double" value="16.0" />
<param name="ignore_array" type="string" value="" />
<param name="samp_rate"    type="int"    value="9"/>
<param name="frequency"    type="double" value="7"/>
</node>
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser4"args="0.2245 0.0 0.2 0.0 0.0 0.0 /base_footprint /laser_frame 40" />
</launch>

可以看出,param是设置单个参数。

以导航驱动move_base.launch文件为例:

<launch>
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
<rosparam file="$(find dashgo_nav)/config/dashgo/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find dashgo_nav)/config/dashgo/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find dashgo_nav)/config/dashgo/local_costmap_params.yaml" command="load" />
<rosparam file="$(find dashgo_nav)/config/dashgo/global_costmap_params.yaml" command="load" />
<rosparam file="$(find dashgo_nav)/config/dashgo/base_local_planner_params.yaml" command="load" />
</node>
</launch>

可以看出,rosparam是用于加载参数文件的,而参数文件可以包含许多参数。

  • node源码

param的操作非常轻巧,非常简单。关于param的API,roscpp提供了两套:ros::param namespace和ros::NodeHandle;它们的操作完全一样。

#include<ros/ros.h>
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");
}

ROS参数服务器(参数使用详细介绍)相关推荐

  1. 美国Linux服务器系统内核的详细介绍

    美国Linux服务器的系统是能够处理复杂应用程序的稳定操作系统之一,适用于创建复杂架构,其系统有一个内核,被称为美国Linux服务器系统的核心,是操作系统的主要部分,可以完全控制系统中的所有内容,同时 ...

  2. AI图片生成Stable Diffusion参数及使用方式详细介绍

    Stable Diffusion环境搭建与运行请参考上一篇博文<AI图片生成Stable Diffusion环境搭建与运行>,地址为"https://blog.csdn.net/ ...

  3. 什么是云服务器ECS及详细介绍

    总有人问什么是云服务器?云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servic ...

  4. Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍

    ***转载.引用请标明出处*** http://www.jianshu.com/p/29ccac3e1e42 本文出自[zhh_happig的简书博客](http://www.jianshu.com/ ...

  5. http参数 libcurl_LibCurl HTTP部分详细介绍

    一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl ...

  6. grub2 linux 参数,对grub2的详细介绍

    翻译了grub2官方手册的绝大部分内容,然后自己整理了一下.因为内容有点杂,所以章节安排上可能不是太合理,敬请谅解. 本文目录: 1.1 基础内容 1.2 安装grub2 1.3 grub2配置文件 ...

  7. win2003 服务器安全设置详细介绍

    第一步: 一.先关闭不需要的端口  我比较小心,先关了端口.只开了3389 21 80 1433(MYSQL)有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破 ...

  8. dnf服务器延迟怎么看,dnf如何判断自己网络还是服务器出问题_dnf判断自己网络还是服务器出问题详细介绍_游戏堡...

    dnf如何判断自己网络还是服务器出问题,玩DNF真是好,玩得我的电脑水平都直线上升了....经常看到喇叭或者打团的时候有人抱怨服务器卡,但每次都是服务器的锅吗?下面就和小编一起来看看如何判断自己网络还 ...

  9. 阿里云服务器怎么样?详细介绍

    阿里云服务器安全可靠.弹性可伸缩,CPU可选256核.内存选到3072GB,云服务器ECS规格通用型.计算型.内存型.通用算力型.裸金属.GPU.大数据等ECS实例规格,公网带宽可选到200M,绑定弹 ...

  10. 真封神虚拟服务器,服务器端文件详细介绍即修改(三)

    我们每星期 加三个修改教程,废话不多说 开始吧. 1.打开服务器端,修改等级在version\chinese_gb\config 的 game_rule.ini 可以设置最高等级和宝宝最高等级包括传送 ...

最新文章

  1. showimg.php,layer弹出图片
  2. Project Structure详解
  3. 何晓群pdf 应用回归分析第五版_暨南社会学论坛|未成年人司法中的法律实证与统计应用:多元回归分析(第三期)...
  4. linux 中文文件名不能下载不了,linux 64位系统 mod_encoding解决中文文件名不能下载问题...
  5. 学习vue-router源码记录-1
  6. C#之Bcd码时间转成ToDateTime
  7. HDU1054 Strategic Game —— 最小点覆盖 or 树形DP
  8. vs2012转成vs2010
  9. Day2:C语言学习2
  10. php 冗余代码检测,冗余代码检查工具Simian | 求索阁
  11. 敏捷开发 SCRUM 简介
  12. 连接HDMI出现没声音
  13. java写qq空间6_学会自己编写QQ空间免费代码教程
  14. Python编码错误的解决办法SyntaxError: Non-ASCII character '\xe5' in file
  15. 苹果x屏幕黑有包白苹果_苹果捆绑包的关键
  16. 2016年华为研发出征大会演讲--任正非
  17. 如何重装Mac OS系统
  18. 清华计算机考研复试机试,请问清华考研计算机复试考什么
  19. 西工大机考《房地产法》大作业网考
  20. June 18(th)

热门文章

  1. 车载空调三态压力开关
  2. stm32温湿度传感器报告_锡林郭勒传感器计量
  3. git使用中关于文件名太长无法处理的问题
  4. 产品和研发,断裂与连接
  5. PDF下载与批量下载处理
  6. 天干地支题c与c++
  7. RS485信号的测量
  8. php 数组 echo,PHP 数组
  9. Android Unity3D游戏开发之躲避方块
  10. 《那些年啊,那些事——一个程序员的奋斗史》——75