zoukankan      html  css  js  c++  java
  • ROS(六)----参数

    一、基本方法

    ROS 获取参数的方式:

    ros::param::get()

    ros::NodeHandle::getParam()

    ros::NodeHandle::param()

    ROS 设置参数的方式:

    ros::param::set()

    ros::NodeHandle::setParam()

    二、示例

    #include "ros/ros.h"
    #include <cstdlib>
    using namespace std;
    int main (int argc,char **argv)
    {
        // initial node and name
        ros::init(argc,argv,"node_param");
    
        // 检查参数个数
        if(argc!=2)
        {
            cout<<"Error command paramter"<<endl;
            return 0;
        }
    
        //create node handle
        ros::NodeHandle nh;
    
        //param variable
        int IntParam;
        string StrParam;
        bool isIntParam,  isStrParam;
    
        // mod flag
        int flag = atoi(argv[1]);
        switch(flag)
        {
            case 1:
                ROS_INFO("set param mod---- ros::param::set(): ");
                ros::param::set("IntParam",1);
                ros::param::set("StrParam","stringdemo");
                break;
            case 2:
                ROS_INFO("set param mod---- ros::NodeHandle::setParam(): ");
                nh.setParam("IntParam",1);
                nh.setParam("strrParam","stringdemo");
                break;
            case 3:
                ROS_INFO("get param mod---- ros::param::get(): ");
                isIntParam = ros::param::get("IntParam",IntParam);
                isStrParam = ros::param::get("StrParam",StrParam);
    
                if(isIntParam) ROS_INFO("IntParam=%d",IntParam);
                else ROS_INFO("Get IntParam fail! ");
    
                if(isStrParam) ROS_INFO("StrParam=%s",StrParam.c_str());
                else ROS_INFO("Get StrParam fail! ");
                break;
            case 4:
                ROS_INFO("get param mod---- ros::NodeHandle::getParam(): ");
                isIntParam = nh.getParam("IntParam",IntParam);
                isStrParam = nh.getParam("StrParam",StrParam);
    
                if(isIntParam) ROS_INFO("IntParam=%d",IntParam);
                else ROS_INFO("Get IntParam fail! ");
    
                if(isStrParam) ROS_INFO("StrParam=%s",StrParam.c_str());
                else ROS_INFO("Get StrParam fail! ");
                break;
            case 5:
                // 此方法可以设置默认数据
                ROS_INFO("get param mod---- ros::NodeHandle::param(): ");
                isIntParam = nh.param("IntParam",IntParam,11);
                isStrParam = nh.param<std::string>("StrParam",StrParam,"stringdemo_default");
    
                if(isIntParam) ROS_INFO("IntParam=%d",IntParam);
                else ROS_INFO("Get IntParam fail! ");
    
                if(isStrParam) ROS_INFO("StrParam=%s",StrParam.c_str());
                else ROS_INFO("Get StrParam fail! ");
                break;
            default:
                ROS_INFO("flag=%d.is not in range [1,5]",flag);
                break;
    
        }
        return 0;
    }

    运行节点:

    rosrun params book_param 1

    查看参数命令:

    rosparam list

    获取参数命令行:

    rosparam get StrParam

  • 相关阅读:
    day 30 粘包 自定义报头
    day29 网络基础之网络协议和通信
    day28 面向对象的进阶 反射 和类的内置方法
    day 27 模块和包 面向对象的复习
    CGI,FastCGI,PHP-CGI和PHP-FPM的区别
    跨平台的移动应用开发引擎CrossApp简介
    element-ui组件中的select等的change事件中传递自定义参数
    关于setInterval和setTImeout中的this指向问题
    懒加载和预加载的区别
    vueX的五个核心属性
  • 原文地址:https://www.cnblogs.com/feihu-h/p/12420203.html
Copyright © 2011-2022 走看看