首页 > 其他分享 >[学习笔记]参数服务器

[学习笔记]参数服务器

时间:2022-10-14 12:34:40浏览次数:50  
标签:nh ROS param radius 笔记 服务器 参数

好家伙今天翻博客发现了之前的参数服务器相关的东西没有发布,今天发出来吧

~~~~~~~~~~~~~~~~

参数服务器,顾名思义就是参数的服务器[doge]

咳咳

参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用

1、参数的发布

有两套不同的API,直接上代码,东西写在注释里

#include <ros/ros.h>
using namespace ros;



int main(int argc, char *argv[])
{
    init(argc, argv, "srv");
    NodeHandle nh;
    //两套方案,设置参数

  //NodeHandle的API nh.setParam("type","yellow");//分别是参数名字,参数的值 nh.setParam("radius", 0.15);//自动识别类型(应该)
  //param的API param::set("type_param", "red"); param::set("radius_param", 15);
//修改,就是重新设置,覆盖原参数 nh.setParam("radius", 2); return 0; }

 2、参数的获取

有不少几个API,直接上代码

#include <bits/stdc++.h>
#include <ros/ros.h>
using namespace std;
using namespace ros;



int main(int argc, char* argv[])
{
    init(argc, argv,"get_param");
    NodeHandle nh;
    {
        //1、param
        double radius1 = nh.param("radius", 0.5);
        ROS_INFO("radius1: %f\n", radius1);
        //查询名为radius的值,如果没有返回0.5
    }
    {
        //2、getParam
        double radius2=114514;
        bool result = nh.getParam("radius", radius2);
        //如果参数存在,则bool变量为1,且把值存在第二个变量中,否则不改变值
        if(result==1)
            ROS_INFO("radius2: %f\n", radius2);
        else
            ROS_INFO("ERROR");
    }
    {
        //3、getParamCached
        double radius3=114514;
        bool res=nh.getParamCached("radius", radius3);
        if(res)
        {
            ROS_INFO("radius3: %f\n", radius3);
        }
        else
        {
            ROS_INFO("ERROR");
        }
    }
    {
        //4、getParamNames遍历所有的参数服务器并存到叔祖里
        vector<string> names;
        nh.getParamNames(names);
        for(auto &&name : names)
        {
            ROS_INFO("the elements are:%s",name.c_str());
        }
        cout << endl;
    }
    {
        //5、hasParam查看参数是否存在
        bool flag1 = nh.hasParam("radius");
        bool flag2 = nh.hasParam("radius1");
        ROS_INFO("%d%d", flag1, flag2);
    }
    {
        //6、searchParam,存在返回名字,不存在不返回东西
        string key="233";
        nh.searchParam("radiu1s", key);
        ROS_INFO("the result is:%s",key.c_str());
    }
    return 0;
}

 (完)

标签:nh,ROS,param,radius,笔记,服务器,参数
From: https://www.cnblogs.com/ajmddzp/p/16791228.html

相关文章

  • java的参数传递
    编程语言都有方法(函数),方法里面有时候会有参数,我们称之为形式参数,主函数main函数里面也有参数,在主函数调用方法(函数)的时候,如果方法里面有形式参数,则需要在主函数将实际参数......
  • 【转】outlook配置腾讯企业邮箱(腾讯企业邮箱imap服务器地址)
     原文:https://www.zhangshilong.cn/work/12043.html ------------------ 以Outlook2016为例。步骤1,在开始菜单中,打开Outlook程序。步骤2,单击[下一步]步骤3,单......
  • 前端成神之路-JavaScript基础第02天笔记
    JavaScript基础第02天1-运算符(操作符)1.1运算符的分类运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。JavaScript中常用的运算符有:算数运......
  • 学习笔记-命令执行漏洞
    命令执行定义:命令执行漏洞是指攻击者可以随意执行系统命令,分为远程命令执行和系统命令执行两类。原理:程序应用有时需要调用一些执行命令的函数,如php中的system,e......
  • 前端成神之路-JavaScript基础第04天笔记
    JavaScript基础第04天笔记1-数组1.1数组的概念数组可以把一组相关的数据一起存放,并提供方便的访问(获取)方式。数组是指一组数据的集合,其中的每个数据被称作元素,在数组中......
  • 前端成神之路-JavaScript基础第05天笔记
    JavaScript基础第05天笔记1-作用域1.1作用域概述通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用......
  • 前端成神之路-JavaScript基础第06天笔记
    JavaScript基础第06天笔记1-内置对象1.1内置对象JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象​前面两种对象是JS基础内容,属于ECMAScript;第三......
  • 知行 技术人员的管理之路 笔记
    迷茫总有一天,我们会操心未来的职业发展,可当我们眺望远方的时候,却怎么也看不清。35岁以上的码农都去哪儿了呢?类别方向技术类架构师技术专家管理类技术......
  • SpringMVC学习笔记
    13120171114......
  • spring注解笔记
    1122017102311220171023注意要点:配置Bean时刻注意IoC容器中Bean的数量以及类型,做到心中有底。[是自动装配还是主动配置要明确,不要重复注入]1、注解定义Bean1)、@Com......