• 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

  • 相关阅读:
    开发工具分享
    图形学杂记
    keyle的Shader-学习手札
    Keyle的3D数学-学习手札
    SuperStrange项目主页
    Unity3d基础知识(水文)
    和Keyle一起学ShaderForge – Custom Blinn-Phong
    和Keyle一起学ShaderForge – Create Base Shader
    和Keyle一起学ShaderForge
    和Keyle一起学StrangeIoc – 教程目录
  • 原文地址:https://www.cnblogs.com/feihu-h/p/12420203.html
Copyright © 2020-2023  润新知