rosparam param env arg 的用法

原文:http://www.rosclub.cn/post-172.html

launch file 中可能会同时出现这么几个概念 param、rosparam、arg、env

launch file 中可能会同时出现这么几个概念 param、rosparam、arg、env

本文解释他们的区别

launch时roslaunch首先检查roscore是否已经启动

如果没有则启动roscore

roscore会做三件事:

1、启动master节点,该节点是隐藏的,用于通过消息名查询目标节点,实现消息、服务在各个节点之间的连接

2、启动parameter server,用于设置与查询参数

3、启动日志节点,记录所有消息收发和stdout、stderr

目前roscore暂不会加入其他功能。

其中parameter server参数服务器,可以方便地通过设置参数来改变节点的行为

参数服务器内的参数是以key,value的形式交互

其中key可以加前缀作为命名空间构成多级参数

参数的访问有三种方式:

命令行:

rosparam set / rosparam get

launch文件:

param / rosparam

API:

roscpp: ros::param::set / ros::param::get
rospy: set_param / get_param

ROS中,param特指在参数服务器parameter server中存储的参数

在launch文件中有两个相关的标签:<param>、<rosparam>

<param>标签可用于直接设置参数,也可以从文件中读取

<rosparam>标签用于从yaml文件中读取并设置参数

roslaunch发现<param>和<rosparam>标签后会调用rosparam包来实现设置

<arg>标签给launch文件内部设置参数

通过<arg>标签设置的参数仅在launch文件内有效

<arg>标签有三种设置参数的方式:

1、直接用此标签设置

2、用此标签声明,用roslaunch命令确定其值

3、用此标签声明,在include本launch文件的父launch文件中确定其值

只有一种使用方式:通过launch文件内部的substitution args来使用:$(arg foo)

arg的整个设置到解析仅在roslaunch解析launch文件过程中使用

完成整个启动过程后即刻失效

<env>标签用于设置环境变量

此处“环境变量”是指linux系统的进程环境变量

设置了<env>的node对应的进程可观察到此环境变量

可以通过getenv函数读取

ros也提供了跨平台函数ros::get_environment_variable来读取环境变量

需要注意的是此法设置的环境变量是进程的环境变量,在运行roslaunch的shell上是echo不出来的

可以先rosnode info查看节点进程的pid,例如是12345

cat /proc/12345/evniron | tr ‘\0’ ‘\n’

来查看进程的环境变量

注意:launch文件的substitution args: $(env ENVIRONMENT_VARIABLE)

用于查询当前shell环境变量是无法查询<env>设置的进程环境变量的

故<env>无法改变launch的行为,只能通过getenv或ros::get_environment_variable来改变节点的行为

参考链接

http://wiki.ros.org/roscore

http://wiki.ros.org/Parameter%20Server

http://wiki.ros.org/roslaunch

http://wiki.ros.org/roslaunch/XML

http://wiki.ros.org/roslaunch/XML/param

http://wiki.ros.org/roslaunch/XML/rosparam

http://wiki.ros.org/rosparam

http://wiki.ros.org/roslaunch/XML/env

时间: 2024-10-20 22:26:26

rosparam param env arg 的用法的相关文章

QString::?arg的用法

1.用法示例1 String str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").arg("1","2","3","4","5","6","7","8","9"); qDebug() << str << endl; 输出 "

#!/usr/bin/env python 是什么意思

这个在unix类的操作系统才有意义. #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里.当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作. 加上 #!/usr/bin/env python, 这个py就处于了可执行模式下, (当然是针对linux类的操

setObject()用法

setObject()用法 setObject(i+1,arg[i])用法与setInt(i+1,arg[i]),setString(i+1,arg[i])用法类似, 但不需指定参数类型,可以通用: 其中,第一个是指你SQL语句中的第几个参数,第二个是要设置的值 举个例子:SQL语句如下, Select * From tableName Where id=? And Name=? 则: pstmt.setInt(1,100)就表示此处id=100 pstmt.setString(2,"abc&q

Python——#!/usr/bin/env python与#!/usr/bin/python的区别——转载

转载自:http://blog.csdn.net/wh_19910525/article/details/8040494 作者:wh_19910525 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器:#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里.当系统看到这一行

#!/usr/bin/env python与#!/usr/bin/python的区别

[摘自:http://blog.csdn.net/wh_19910525/article/details/8040494] 一般的python文件的开头都有#!/usr/bin/python.这是什么意思呢? #!/usr/bin/Python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器:#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里.当系统看到这一行的时候,首先会到env设置里查找pyt

__call、__set 和 __get的用法

1. __call的用法 PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法.如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用. 例:__call Php代码   <?php class foo { function __call($name,$arguments) { print("Did you call me? I'm $name!<br>"); print_r($arguments); print(

#! /usr/bin node 和#! /usr/bin/env node两者的区别

是Unix和Linux脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它 !/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的node解释器: !/usr/bin/env node这种用法是为了防止操作系统用户没有将node装在默认的/usr/bin路径里.当系统看到这一行的时候,首先会到env设置里查找node的安装路径,再调用对应路径下的解释器程序完成操作. !/usr/bin/node相当于写死了node路径; !/us

launch文件概述---1

摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 资源链接:http://wenku.baidu.com/link?url=PhyN3C6ghqovJ0qtg8dnTEPEku6WFDnB2dOeMqfErVLx8hB4MksBUULiNLlvjwWtsgDRTcizA2jCFhCjdgu0rRTfsq2mUtiRr5GKUtfYtMi pdf转world:http://www.convertpdftoword.net/ 1.计算次序rosl

Python 3 笔记

############################################################################################ 内      容: Python 3 # 作     者: 娜爱# 更新日期: 2017.07.18  # 在cmd中执行py文件(路径可加双引号),如:python E:\PythonSrc\mypy_package\eg.py##########################################