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

  • 相关阅读:
    串口基本知识
    20180826
    20180819
    自动化测试
    说话有重点 测试思维
    学习C语言,在软件测试中如何用?
    PC能替代服务器吗?
    服务器与普通电脑的区别?
    k8s 回滚应用
    k8s Service
  • 原文地址:https://www.cnblogs.com/feihu-h/p/12420203.html
Copyright © 2011-2022 走看看