ROS-节点参数param

摘要:
有三种方法可以获得ROS中的参数。

ROS中有如下3种获取参数的方式。
ROS-节点参数param第1张

ROS-节点参数param第2张

在launch中写

<param name="debug_imu"  value="true">     不管是上面何种数据类型都要带引号

#include "ros/ros.h" 
#include <cstdlib> 

using namespace std; 

int main(int argc,char** argv) 
{ 
    //initial and name node 
    ros::init(argc,argv,"node_param"); 
    if(argc!=2) 
    { 
        cout<<"Error command paramter! Please run command eg:
" 
            <<"rosrun book_param book_param 1
" 
            <<"help information:
" 
            <<" 1 ------ set param mode(ros::param::set())
" 
            <<" 2 ------ set param mode(ros::NodeHandle::setParam())
" 
            <<" 3 ------ get param mode(ros::param::get())
" 
            <<" 4 ------ get param mode(ros::NodeHandle::getParam())
" 
            <<" 5 ------ get param mode(ros::NodeHandle::param())
" 
            <<endl; 
        return 1; 
    } 

    //create node handle 
    ros::NodeHandle nh; 
    //param variable 
    int IntParam; 
    string StrParam; 
    bool isIntParam, isStrParam; 
    //mode flag 
    int flag = atoi(argv[1]); 

    // set or get param with different ways 
    switch(flag) 
    { 
        case 1: 
            ROS_INFO("set param mode(ros::param::set()):"); 
            ros::param::set("IntParam",1); 
            ros::param::set("StrParam","stringdemo"); 
            break; 
        case 2: 
            ROS_INFO("set param mode(ros::NodeHandle::setParam()):"); 
            nh.setParam("IntParam",1); 
            nh.setParam("StrParam","stringdemo"); 
            break; 
        case 3: 
            ROS_INFO("get param mode(ros::param::get()):"); 
            isIntParam = ros::param::get("IntParam",IntParam); 
            isStrParam = ros::param::get("StrParam",StrParam); 

            if(isIntParam){ 
                ROS_INFO("The IntParam is:%d",IntParam); 
            }else{ 
                ROS_INFO("Get IntParam fail!"); 
            } 

            if(isIntParam){ 
                ROS_INFO("The StrParam is:%s",StrParam.c_str()); 
            }else{ 
                ROS_INFO("Get StrParam fail!"); 
            } 
            break; 
        case 4: 
            ROS_INFO("get param mode(ros::NodeHandle::getParam()):"); 
            isIntParam = nh.getParam("IntParam",IntParam); 
            isStrParam = nh.getParam("StrParam",StrParam); 

            if(isIntParam){ 
                ROS_INFO("The IntParam is:%d",IntParam); 
            }else{ 
                ROS_INFO("Get IntParam fail!"); 
            } 

            if(isIntParam){ 
                ROS_INFO("The StrParam is:%s",StrParam.c_str()); 
            }else{ 
                ROS_INFO("Get StrParam fail!"); 
            } 
            break; 
        case 5: 
            ROS_INFO("get param mode(ros::NodeHandle::param()):"); 
            //warning: this way will set default value when get no param! 
            nh.param("IntParam",IntParam,11); 
            // be careful when use ros::NodeHandle::param get string param! 
            nh.param<std::string>("StrParam",StrParam,"stringdemo_default"); 
            ROS_INFO("
The IntParam is:%d
The StrParam is:%s",IntParam,StrParam.c_str()); 
            break; 
        default: 
            ROS_INFO("flag value is not in range: [1,5]"); 
    } 
    return 0; 
}

ROS-节点参数param第3张

免责声明:文章转载自《ROS-节点参数param》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小游戏 RES版本控制+缓存策略 (resplugin和ResSplitPlugin插件使用)js(javascript)与ios(Objective-C)相互通信交互下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在Ubuntu上搭建Zookeeper集群

Zookeeper集群搭建 集群安装 先下载zookeeper压缩包(可从官网下载) 我这里是apache-zookeeper-3.5.8-bin.tar.gz 在各台主机上解压到/usr/local/zookeeper tar -zxvf /home/hadoop/桌面/apache-zookeeper-3.5.8-bin.tar.gz su //...

Groovy动态添加方法和属性及Spock单测

在最近的一边学习一边复习的过程中,发现了很多有意思的事情。今天就分享一个groovy.lang.MetaClass应用:如何运行中,动态给类和对象增加属性和添加方法。 对于Java、Groovy来讲,如果用到一个类,那么这个类的属性和方法已经是固定的,可是随着我的学习,发现这个常识并不靠谱。下面开始我的表演。 添加对象方法 下面是简化的语法object.m...

Linux高级编程--04.GDB调试程序(查看数据)

查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。 下面是一些查看函数调用栈信息的GDB命令: backtrace / bt :打印当前的函数调用栈的所有信息。如: (gdb) bt #0...

mysql主从之多线程复制

多线程复制 mysql 主从复制原理: 1. master 节点上的binlogdump 线程,在slave 与其正常连接的情况下,将binlog 发送到slave 上。 2. slave 节点的I/O Thread ,通过读取master 节点binlog 日志名称以及偏移量信息将其拷贝到本地relay log 日志文件。 3. slave 节点的SQL...

学习Maven之Maven Enforcer Plugin,配置pom强校验

https://www.cnblogs.com/qyf404/p/4829327.html 1.Maven Enforcer plugin是什么鬼? 在说这个插件是什么前我们先思考这么一个问题:当我们开发人员进入项目组进行开发前,要准备开发环境,而领导总是会强调工具的统一,编译环境的统一。比如要求所有开发人员使用JDK1.8进行开发。 开发人员接下来就是去...

解决Flink消费Kafka信息,结果存储在Mysql的重复消费问题

背景 最近项目中使用Flink消费kafka消息,并将消费的消息存储到mysql中,看似一个很简单的需求,在网上也有很多flink消费kafka的例子,但看了一圈也没看到能解决重复消费的问题的文章,于是在flink官网中搜索此类场景的处理方式,发现官网也没有实现flink到mysql的Exactly-Once例子,但是官网却有类似的例子来解决端到端的仅一...