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文件有很多标签,其中有<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参数服务器(参数使用详细介绍)相关推荐
- 美国Linux服务器系统内核的详细介绍
美国Linux服务器的系统是能够处理复杂应用程序的稳定操作系统之一,适用于创建复杂架构,其系统有一个内核,被称为美国Linux服务器系统的核心,是操作系统的主要部分,可以完全控制系统中的所有内容,同时 ...
- AI图片生成Stable Diffusion参数及使用方式详细介绍
Stable Diffusion环境搭建与运行请参考上一篇博文<AI图片生成Stable Diffusion环境搭建与运行>,地址为"https://blog.csdn.net/ ...
- 什么是云服务器ECS及详细介绍
总有人问什么是云服务器?云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servic ...
- Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细介绍
***转载.引用请标明出处*** http://www.jianshu.com/p/29ccac3e1e42 本文出自[zhh_happig的简书博客](http://www.jianshu.com/ ...
- http参数 libcurl_LibCurl HTTP部分详细介绍
一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl ...
- grub2 linux 参数,对grub2的详细介绍
翻译了grub2官方手册的绝大部分内容,然后自己整理了一下.因为内容有点杂,所以章节安排上可能不是太合理,敬请谅解. 本文目录: 1.1 基础内容 1.2 安装grub2 1.3 grub2配置文件 ...
- win2003 服务器安全设置详细介绍
第一步: 一.先关闭不需要的端口 我比较小心,先关了端口.只开了3389 21 80 1433(MYSQL)有些人一直说什么默认的3389不安全,对此我不否认,但是利用的途径也只能一个一个的穷举爆破 ...
- dnf服务器延迟怎么看,dnf如何判断自己网络还是服务器出问题_dnf判断自己网络还是服务器出问题详细介绍_游戏堡...
dnf如何判断自己网络还是服务器出问题,玩DNF真是好,玩得我的电脑水平都直线上升了....经常看到喇叭或者打团的时候有人抱怨服务器卡,但每次都是服务器的锅吗?下面就和小编一起来看看如何判断自己网络还 ...
- 阿里云服务器怎么样?详细介绍
阿里云服务器安全可靠.弹性可伸缩,CPU可选256核.内存选到3072GB,云服务器ECS规格通用型.计算型.内存型.通用算力型.裸金属.GPU.大数据等ECS实例规格,公网带宽可选到200M,绑定弹 ...
- 真封神虚拟服务器,服务器端文件详细介绍即修改(三)
我们每星期 加三个修改教程,废话不多说 开始吧. 1.打开服务器端,修改等级在version\chinese_gb\config 的 game_rule.ini 可以设置最高等级和宝宝最高等级包括传送 ...
最新文章
- showimg.php,layer弹出图片
- Project Structure详解
- 何晓群pdf 应用回归分析第五版_暨南社会学论坛|未成年人司法中的法律实证与统计应用:多元回归分析(第三期)...
- linux 中文文件名不能下载不了,linux 64位系统 mod_encoding解决中文文件名不能下载问题...
- 学习vue-router源码记录-1
- C#之Bcd码时间转成ToDateTime
- HDU1054 Strategic Game —— 最小点覆盖 or 树形DP
- vs2012转成vs2010
- Day2:C语言学习2
- php 冗余代码检测,冗余代码检查工具Simian | 求索阁
- 敏捷开发 SCRUM 简介
- 连接HDMI出现没声音
- java写qq空间6_学会自己编写QQ空间免费代码教程
- Python编码错误的解决办法SyntaxError: Non-ASCII character '\xe5' in file
- 苹果x屏幕黑有包白苹果_苹果捆绑包的关键
- 2016年华为研发出征大会演讲--任正非
- 如何重装Mac OS系统
- 清华计算机考研复试机试,请问清华考研计算机复试考什么
- 西工大机考《房地产法》大作业网考
- June 18(th)