ROS学习--如何结合launch文件使用参数服务器
2016-12-26 22:58
405 查看
ROS学习--如何结合launch文件使用参数服务器
ROS(Robot Operating System)接触了将近两年了,最常用的也就是发布话题与订阅话题,前一段时间刚刚把Rviz与/tf搞明白一些,都能够多掌握一些东西,都会特别开心,要想提高自己的能力,必须要经过不断的学习。之前使用别人开源的包的时候,经常会发现在launch文件中使用诸如此类的句子:
2
1
2
,在ROS学习中也看到介绍roslaunch在大型项目中的使用技巧(http://wiki.ros.org/cn/ROS/Tutorials/Roslaunch%20tips%20for%20larger%20projects)
说可以直接在launch文件中直接改参数,就没有必要修改程序了,当时看的我是那叫一个激动,这功能好啊,而且还看起来高大上,然而,再往下看下去,就没有然后了,心里一万头草尼玛奔腾有木有啊!你既然说它这么牛逼,那为什么不告诉我,如何才能使用这个牛逼的功能啊!最近要用到这个功能只能自己摸索了,搜了一些参数服务器的知识:
http://wiki.ros.org/roscpp/Overview/Parameter%20Server
然而也并没有介绍如何结合launch使用,于是自己就照葫芦画瓢,自己试着写了一个,然而在launch文件里写参数,程序并没有发生变化。。。
直到,我在网上看到了这个贴子:
http://answers.ros.org/question/43001/setting-parameters-in-a-launch-file-does-not-appear-to-be-working/
才真正解决了我的问题,下面说如何使用,其实非常简单:下面直接给出我的程序:
程序中我是这样写的:
2
3
4
5
6
1
2
3
4
5
6
launch文件,我是这样写的:
2
3
4
5
6
1
2
3
4
5
6
我想要在launch文件中更改parking_x与parking_y的值,在程序里只需定义变量parking_x, parking_y,然后再使用语句 ros::param::get(),即可。程序中的“~”的意思在我上边提到的那个贴子中有介绍,表示此参数是私有参数,也就是,在lauch文件中,你把
注意,我的程序中
需要注意的是:程序里定义的是double 类型,所以在launch文件中value=”100.0”与value=”600.0”,不能写成 value=”100”与value=”600”,我的QQ是1315080983,欢迎学习ROS与玩机器人的一起交流^_^
ROS(Robot Operating System)接触了将近两年了,最常用的也就是发布话题与订阅话题,前一段时间刚刚把Rviz与/tf搞明白一些,都能够多掌握一些东西,都会特别开心,要想提高自己的能力,必须要经过不断的学习。之前使用别人开源的包的时候,经常会发现在launch文件中使用诸如此类的句子:
<node name="node_name" pkg="foo" type="bar" > <param name="camera_topic_private" value="/camera/image_rect">1
2
1
2
,在ROS学习中也看到介绍roslaunch在大型项目中的使用技巧(http://wiki.ros.org/cn/ROS/Tutorials/Roslaunch%20tips%20for%20larger%20projects)
说可以直接在launch文件中直接改参数,就没有必要修改程序了,当时看的我是那叫一个激动,这功能好啊,而且还看起来高大上,然而,再往下看下去,就没有然后了,心里一万头草尼玛奔腾有木有啊!你既然说它这么牛逼,那为什么不告诉我,如何才能使用这个牛逼的功能啊!最近要用到这个功能只能自己摸索了,搜了一些参数服务器的知识:
http://wiki.ros.org/roscpp/Overview/Parameter%20Server
然而也并没有介绍如何结合launch使用,于是自己就照葫芦画瓢,自己试着写了一个,然而在launch文件里写参数,程序并没有发生变化。。。
直到,我在网上看到了这个贴子:
http://answers.ros.org/question/43001/setting-parameters-in-a-launch-file-does-not-appear-to-be-working/
才真正解决了我的问题,下面说如何使用,其实非常简单:下面直接给出我的程序:
程序中我是这样写的:
double parking_x; double parking_y; ros::param::get("~parking_x",parking_x); ros::param::get("~parking_y",parking_y); ROS_ERROR("parking_x:%.3f",parking_x); ROS_ERROR("parking_y:%.3f",parking_y);1
2
3
4
5
6
1
2
3
4
5
6
launch文件,我是这样写的:
<launch> <node pkg="beginner_tutorials" name="talker" type="talker"> <param name="parking_x" type="double" value="100.0" /> <param name="parking_y" type="double" value="600.0" /> </node> </launch>1
2
3
4
5
6
1
2
3
4
5
6
我想要在launch文件中更改parking_x与parking_y的值,在程序里只需定义变量parking_x, parking_y,然后再使用语句 ros::param::get(),即可。程序中的“~”的意思在我上边提到的那个贴子中有介绍,表示此参数是私有参数,也就是,在lauch文件中,你把
<param.../>写到
<node.../>里面那么你的参数就是私有参数。
注意,我的程序中
ROS_ERROR()输出的并非真正 的错误,而是为了方便,让信息输出在平面上,并且这样可以不用在launch文件中写“output=screen”,这样,仿照我的这种方式,就可以在launch文件中更改参数,而无须修改程序,参数的类型可以是string,int,double,bool等。
需要注意的是:程序里定义的是double 类型,所以在launch文件中value=”100.0”与value=”600.0”,不能写成 value=”100”与value=”600”,我的QQ是1315080983,欢迎学习ROS与玩机器人的一起交流^_^
相关文章推荐
- ROS学习--如何结合launch文件使用参数服务器
- ROS学习(三) 使用参数以及相应的 .launch 文件编写
- 如何搭建与Windows客户机结合使用的Samba文件服务器?
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- ROS学习(三)参数服务与launch文件
- ROS:在launch文件中修改参数服务器中的parameter
- 如何在批处理文件中使用参数
- 如何使用FtpWebRequest对ftp服务器上面的目录进行改名(注意是目录不是文件!)
- 如何在C#中使用内嵌资源文件(转载学习)
- 批处理教程2——如何在批处理文件中使用参数
- How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
- ubuntu下如何使用sshfs加载远程服务器目录到本地文件系统
- android 中使用ExpandableListView控件结合服务器json文件的下载
- How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
- 如何使用RSYNC在服务器间镜像或者备份目录和文件
- Linux学习笔记——如何使用echo指令向文件写入内容
- 在使用包含文件上传控件的表单时,如何获得隐藏域中的参数?
- 如何在批处理文件中使用参数
- 使用FileAudit如何实现跨多个服务器审计文件
- 如何使用ASIHTTPRequest从iOS端向服务器上传文件?