ROS向节点传递参数

摘要:
有许多方法可以调用ROS节点,包括rosrun、launch、directrun等。也有许多方法将参数传递给节点。以下是命令rosunpackagenode_Parameter:=value这里是rosrandatatxtimu2txt_file_Name:=~/Documents/test.txt。可以将节点中的参数更改为所需的值。注意:字符串不需要用双引号括起来。字符串的第一个字符不能是数字。2.同样的示例用于ROSLAUNCH+参数服务器传输。如果我们想通过ROSLAUNCH调用,我们可以将参数放置在节点之间,如下所示。例如,我们常用的map_这个参数传递方法被服务器和rosbag使用。

ROS的节点有很多中调用方式,包括rosrun,launch,直接运行等,向节点内传递参数的方式也有很多。

1. rosrun + 参数服务器传递
ros::init(argc, argv, "imu2txt");
ros::NodeHandle nh("~");
std::string file_name;
nh.param<std::string>("file_name", file_name, "./imu_data.txt");
首先在节点初始化之后获取参数服务器的参数,并设置初始值,如上面的程序就是在参数服务器的~空间(即节点本身)获取名字为"file_name"的参数放到std::string file_name中,默认参数为后面那个。

接着就可以rosrun了。下面是命令
rosrun package node _parameter:=value

在我们这里就是rosrun datatxt imu2txt _file_name:=~/Documents/test.txt就可以将节点内的参数改为想要的值了。

注意: string不需要加双引号,string第一个字符不能是数字

2. roslaunch + 参数服务器传递
同样是上面的例子,我们如果想通过roslaunch来调用的话,可以像下面这样,将参数放在node之间。

<launch>
     <node name="imu2txt" pkg="data2txt" type="imu2txt" respawn="false" output="screen" >
         <param name="file_name"         type="string" value="/home/night_fury/Documents/record_bags/calibration/imudata_to_wall.txt"/> 
     </node>
</launch>
3. rosrun + main参数传递
int main(int argc, char** argv)

main函数有两个参数argc, argv。argc = length(argv),argv[0]是程序的名字,argv[1]到argv[argc - 1]是传递给程序的参数,按空格分割参数后以char指针的形式存储。这是C、C++的特性,跟ros无关,你编写的C++程序也可以这么用。你编写的ros程序甚至可以直接运行,并通过这种方式传递参数,而不用rosrun或者roslaunch。

比如我们常用的map_server、rosbag就是用的这种参数传递方式。

rosrun map_server map_saver -f ~/Documents/test或者直接找到二进制文件后map_saver -f ~/Documents/test

像上面这样运行程序,那么

argc=3 
argv[0]="map_server" 
argv[1]="-f" 
argv[2]="test" 
你就可以在程序中使用这些参数了。

4. roslaunch + main参数传递
续上,如果使用main参数传递,那在roslaunch应该怎么样呢?如下,使用args:

<launch>
     <node name="map_server" pkg="map_server" type="map_server" args="$(find costmap_2d)/test/willow-full-0.025.pgm 0.025" />
     <node name="rosplay" pkg="rosbag" type="play"
         args="-s 5 -r 1 --clock --hz=10 $(find costmap_2d)/test/simple_driving_test_indexed.bag" />
</launch>

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

上篇基于Mybatis分页插件PageHelper关于MAC的pkg和mpkg的分别下篇

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

相关文章

ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 1 ROS安装步骤    1.1 ROS版本    1.2 确定Ubuntu版本号     1.3 安装ROS        1.3.1 Ubuntu初始环境配置         1.3.2 ①添加源地址文件sources.list         1.3.3 ②添加密钥(key)        ...

ROS node调用service: ros::service::call/client.call()

简介:介绍如何在一个node里调用现有的rosservice list查询到的service。 效果:通过talker publish需要调用服务的数据,listener接收到数据后调用服务进行三个整形数据相加,并返回相加和。 环境:ubuntu 14.04 +indigo. 备注:文中未详细介绍的api或ros的基本函数请参看之前博文。 [正文] 创建过...

第01课 安装并配置ROS环境

1. 安装ROS   注意事项:      如果你是使用类似apt这样的软件管理器来安装ROS的,那么安装后这些软件包将不具备写入权限,当前系统用户比如你自己也无法对这些软件包进行修改编辑。     当你的开发涉及到ROS软件包源码层面的操作或者在创建一个新的ROS软件包时,你应该是在一个具备读写权限的目录下工作,就像在你当前系统用户的home目录下一样。...

ROS之pcl_ros

1 概要:PCL(Point Cloud Library)ROS接口堆,PCL_ROS是在ROS中涉及n维点云和3D几何处理的3D应用的首选桥梁。这个包提供运行ROS和PCL的接口和工具,包括nodelets、nodes和c++接口 2 源码地址: git  https://github.com/ros-perception/perception_pcl....

ROS学习之参数

ROS学习之参数         除 了 前 面 介 绍 过 的 消 息 传 递 , ROS 还 提 供 另 一 种 参 数( parameters )机制用于获取节点的信息。其主要思想是使用集中参数服务器( parameter server )维护一个变量集的值,包括整数、浮点数、字符串以及其他数据类型,每一个变量用一个较短的字符串标识  。由于允许节点...

ROS入门笔记(六):ROS系统架构

ROS入门笔记(六): ROS系统架构 1 ROS系统架构    1.1 文件系统(重点)    1.2 计算图    1.3 开源社区 1 ROS系统架构   1.1 文件系统(重点) 文件系统:主要指在硬盘里能看到的ROS目录和文件:   1)元功能包(Meta Packages):组织多个用于同一目的功能包。2)元功能包清单(Meta...