学习视频:
19.launch启动文件的使用方法_哔哩哔哩_bilibili
使用launch启动可以减少不断打开终端重复输入调用不同节点的工作;
使用:
其中name的意义是取代掉程序文件中的初始化的节点名字,相当于另取一个别名进行代表,代表这个节点,这样在调用相同节点时名字不同就不会起冲突;
pkg,name,type均为基础属性;
其余可选属性:
output:是不是要将节点日志信息打印到当前终端内部
respawn是启动运行突然中断,是否需要重启;
required是某个节点是不是必须要求启动起来
ns代表命名空间,可以给每个节点一个命名空间避免节点之间发生冲突
args可以通过类似于rosrun后面跟的指令给每个节点输入一些参数进行使用的。
launch中其余的标签
以图中为例:
param是表示存在于ros中的参数
<param>将名字为"output_frame"的参数和值"odom"保存进入参数服务器;
<rosparam>将"params.yaml"中所有参数保存入参数服务器内部;
arg表示只存在于launch文件里面内部使用的一个参数
<arg>定义一个参数名字为"arg-name" 参数值为arg-value有一个默认值,看你传不传参;
重映射,将计算图中的一些名字重新命名,将ros里面旧的资源名字重新换一个名字,换完后原来名字就没有了,不存在了,上例就是在ros里面将/turtlebot/cmd_vel换为了/cmd_vel
嵌套有点像头文件套头文件的感觉,把不同的区域的头文件内容经过嵌套串一起,将其他的launch文件串在一起
使用示例:
先创建一个launch功能包,不使用依赖,launch文件本身是一个系统文件按,launch文件本身是用于链接其他库内功能的,不需要自己包里需要什么可编程的东西;
内部只有一个xml和CMakeList,我们自己再手动创建一个命名为launch的文件,便于后续管理资源;这是一个默认规范
将教程源文件拷贝入创建的launch文件夹
打开文本后选择一下文字显示语法,选择XML就有高亮显示,会好看一点,自己稍作修改;可以你的功能包名字不叫learning_topic换成你自己起的功能包名字就行
保存后进行编译;编译一下;编译后记得设置变量环境好习惯;
启动ros的launch文件指令:
roslaunch +功能包名 +launch文件名
roslaunch ll simple.launch
回车后就开启订阅与发送了,以前需要两个终端进行,现在同时在一个终端显示处理,同时也显示了运行节点
对于launch里面语法不太好写,自行去了解吧;