在ROS中使用参数时学习到roslaunch的使用方法
来源:互联网 发布:数据库系统概念电子书 编辑:程序博客网 时间:2024/06/11 03:34
转自:http://www.ncnynl.com/archives/201611/1061.html
使用roslaunch文件来启动功能包的一个或多个节点肯定是非常方便的,也很好理解。可是,我在编写roslaunch文件后,运行时出现一个问题:说找不到某某功能包的某某节点,我怎么看都不像,参照网上博客,cmake,romake都试过了,就是不行。无奈翻看原来教程,发现落了一项工作没做。
总结起来就是:下述情况下,进行roslaunch启动节点时,不用cmake,roamake等对功能包进行编译,只需对节点的文件(xx.cpp或xx.py)设置可执行权限就行!!!!!!(我就是没有)
在当前情况是这样,launch文件内容简单,后续复杂的roslaunch方法,也许需要编译功能包,现在正在学习中......有错还望指正,谢谢!
具体步骤如下:
(1)编写节点文件
$ roscd beginner_tutorials/scripts$ touch param_talker.py
代码如下:
#!/usr/bin/env pythonimport rospyfrom std_msgs.msg import Stringdef param_talker(): rospy.init_node('param_talker') # Fetch values from the Parameter Server. In this example, we fetch # parameters from three different namespaces: # # 1) global (/global_example) # 2) parent (/foo/utterance) # 3) private (/foo/param_talker/topic_name) # fetch a /global parameter global_example = rospy.get_param("/global_example") rospy.loginfo("%s is %s", rospy.resolve_name('/global_example'), global_example) # fetch the utterance parameter from our parent namespace utterance = rospy.get_param('utterance') rospy.loginfo("%s is %s", rospy.resolve_name('utterance'), utterance) # fetch topic_name from the ~private namespace topic_name = rospy.get_param('~topic_name') rospy.loginfo("%s is %s", rospy.resolve_name('~topic_name'), topic_name) # fetch a parameter, using 'default_value' if it doesn't exist default_param = rospy.get_param('default_param', 'default_value') rospy.loginfo('%s is %s', rospy.resolve_name('default_param'), default_param) # fetch a group (dictionary) of parameters gains = rospy.get_param('gains') p, i, d = gains['P'], gains['I'], gains['D'] rospy.loginfo("gains are %s, %s, %s", p, i, d) # set some parameters rospy.loginfo('setting parameters...') rospy.set_param('list_of_floats', [1., 2., 3., 4.]) rospy.set_param('bool_True', True) rospy.set_param('~private_bar', 1+2) rospy.set_param('to_delete', 'baz') rospy.loginfo('...parameters have been set') # delete a parameter if rospy.has_param('to_delete'): rospy.delete_param('to_delete') rospy.loginfo("deleted %s parameter"%rospy.resolve_name('to_delete')) else: rospy.loginfo('parameter %s was already deleted'%rospy.resolve_name('to_delete')) # search for a parameter param_name = rospy.search_param('global_example') rospy.loginfo('found global_example parameter under key: %s'%param_name) # publish the value of utterance repeatedly pub = rospy.Publisher(topic_name, String, queue_size=10) while not rospy.is_shutdown(): pub.publish(utterance) rospy.loginfo(utterance) rospy.sleep(1) if __name__ == '__main__': try: param_talker() except rospy.ROSInterruptException: pass
(2)编写完成后,保存,并设置可执行权限(一定要注意!!!!)
$ chmod +x param_talker.py
(3)编写启动文件,param_talker.launch文件中写如下代码
$ roscd beginner_tutorials/bringup$ touch param_talker.launch$ rosed beginner_tutorials param_talker.launch
代码如下:<launch> <!-- set /global_example parameter --> <param name="global_example" value="global value" /> <group ns="foo"> <!-- set /foo/utterance --> <param name="utterance" value="Hello World" /> <param name="to_delete" value="Delete Me" /> <!-- a group of parameters that we will fetch together --> <group ns="gains"> <param name="P" value="1.0" /> <param name="I" value="2.0" /> <param name="D" value="3.0" /> </group> <node pkg="rospy_tutorials" name="param_talker" type="param_talker.py" output="screen"> <!-- set /foo/utterance/param_talker/topic_name --> <param name="topic_name" value="chatter" /> </node> </group> </launch>
(4)启动launch文件$ roslaunch beginner_tutorials param_talker.launch
注意:上述整个过程无须catkin_make或者rosmake!!!!
0 0
- 在ROS中使用参数时学习到roslaunch的使用方法
- ROS学习之 roslaunch
- ROS roslaunch 学习
- ROS roslaunch 学习
- ROS使用之roslaunch
- ROS学习--(八)使用rqt控制台和roslaunch
- ROS学习笔记七:使用rqt_console和roslaunch
- ROS学习--(十)roslaunch
- ROS使用教程--关于roslaunch
- ROS的学习(十)rqt_console和roslaunch
- ROS中rosrun和roslaunch命令的对比
- ROS中rosrun和roslaunch命令的对比
- ROS中rosrun和roslaunch命令的对比
- ROS学习手记 - 6 使用ROS中的工具:rqt_console & roslaunch & rosed
- (七)ROS rxconsole和roslaunch学习
- ROS学习笔记(1):在ROS中使用OpenCV进行简单的图象处理--原理篇
- ROS教程(二十一):Roslaunch在大型项目中的使用技巧
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 8 学习ROS的rqt_console和roslaunch命令
- HTML图片标记
- QT UDP通讯
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- for update 作用
- 游标示例
- 在ROS中使用参数时学习到roslaunch的使用方法
- 读书的那些事
- vi常用指令
- 解决spring注解配置的java.lang.IllegalArgumentException异常
- eclipse从git上导入maven项目时遇到的问题
- mysql之视图
- NO.6 采用命令行修改文件
- 使用ab进行压力测试详解
- spring boot 整合elastic search 5.x